public int record(string res, bool isRtmp) { //endcode 0-その他の理由 1-stop 2-最初に終了 3-始まった後に番組終了 recFolderFileInfo = null; string[] recFolderFile = null; var type = util.getRegGroup(res, "\"content_type\":\"(.+?)\""); var data = util.getRegGroup(res, "<script id=\"embedded-data\" data-props=\"([\\d\\D]+?)</script>"); data = System.Web.HttpUtility.HtmlDecode(data); long openTime = 0; if (data == null || !long.TryParse(util.getRegGroup(data, "\"beginTimeMs\":(\\d+)"), out openTime)) { return(3); } // var openTime = long.Parse(util.getRegGroup(data, "\"beginTimeMs\":(\\d+)")); openTime = (long)(openTime / 1000); long endTime = 0; if (data == null || !long.TryParse(util.getRegGroup(data, "\"endTimeMs\":(\\d+)"), out endTime)) { return(3); } endTime = (long)(endTime / 1000); var programTime = util.getUnixToDatetime(endTime) - util.getUnixToDatetime(openTime); long releaseTime = 0; if (data == null || !long.TryParse(util.getRegGroup(data, "\"releaseTimeMs\":(\\d+)"), out releaseTime)) { return(3); } releaseTime = (long)(releaseTime / 1000); long serverTime = 0; if (data == null || !long.TryParse(util.getRegGroup(data, "\"serverTimeMs\":(\\d+)"), out serverTime)) { return(3); } var jisa = util.getUnixToDatetime((long)(serverTime / 1000)) - DateTime.Now; // util.debugWriteLine(data + util.getMainSubStr(isSub, true)); recFolderFileInfo = getRecFolderFileInfo(data, type); if (!isSub) { timeShiftConfig = null; if (!isLive && !isRtmp) { if (rm.ri != null) { timeShiftConfig = rm.ri.tsConfig; } if (rm.argTsConfig != null) { timeShiftConfig = getReadyArgTsConfig(rm.argTsConfig.clone(), recFolderFileInfo[0], recFolderFileInfo[1], recFolderFileInfo[2], recFolderFileInfo[3], recFolderFileInfo[4], recFolderFileInfo[5], releaseTime); } else { timeShiftConfig = getTimeShiftConfig(recFolderFileInfo[0], recFolderFileInfo[1], recFolderFileInfo[2], recFolderFileInfo[3], recFolderFileInfo[4], recFolderFileInfo[5], rm.cfg, releaseTime); if (timeShiftConfig == null) { return(2); } } } if (!rm.isPlayOnlyMode) { // util.debugWriteLine("rm.rfu " + rm.rfu.GetHashCode() + " rfu " + rfu.GetHashCode() + util.getMainSubStr(isSub, true)); // if (recFolderFile == null) recFolderFile = getRecFilePath(releaseTime, isRtmp); if (recFolderFile == null || recFolderFile[0] == null) { //パスが長すぎ rm.form.addLogText("パスに問題があります。 " + recFolderFile[1]); util.debugWriteLine("too long path? " + recFolderFile[1] + util.getMainSubStr(isSub, true)); return(2); } } else { recFolderFile = new string[] { "", "", "" } }; } else { recFolderFile = new string[] { "", "", "" }; } for (int i = 0; i < recFolderFile.Length; i++) { util.debugWriteLine("recd " + i + " " + recFolderFileInfo[i] + util.getMainSubStr(isSub, true)); } var userId = util.getRegGroup(res, "\"user\"\\:\\{\"user_id\"\\:(.+?),"); var isPremium = res.IndexOf("\"member_status\":\"premium\"") > -1; wi = new WatchingInfo(watchingRes); var jrp = new JikkenRecordProcess(container, recFolderFile, rm, rfu, this, openTime, !isLive, lvid, timeShiftConfig, userId, isPremium, programTime, wi, releaseTime, isSub, isRtmp); rm.wsr = jrp; try { jrp.start(); rm.wsr = null; //if (jrp.isEndProgram) if (rm.rfu != rfu) { return(1); } return(3); } catch (Exception e) { util.debugWriteLine("jsp start exception " + e.Message + e.StackTrace + util.getMainSubStr(isSub, true)); } return(1); }