public bool isEndedProgram() { var isPass = (DateTime.Now - lastEndProgramCheckTime < TimeSpan.FromSeconds(5)); addDebugBuf("ispass " + isPass + " lastendprogramchecktime " + lastEndProgramCheckTime); if (isPass) { return(false); } lastEndProgramCheckTime = DateTime.Now; var a = new System.Net.WebHeaderCollection(); var res = util.getPageSource(h5r.url, ref a, container); addDebugBuf("isendedprogram url " + h5r.url + " res==null " + (res == null)); if (res == null) { return(false); } if (res.IndexOf("user.login_status = 'not_login'") > -1) { addDebugBuf("isendprogram not login"); var cg = new CookieGetter(rm.cfg); var cgTask = cg.getHtml5RecordCookie(h5r.url, isSub); cgTask.Wait(); container = cgTask.Result[0]; res = util.getPageSource(h5r.url, container, null, false, 5000); res = System.Web.HttpUtility.HtmlDecode(res); var _webSocketInfo = h5r.getWebSocketInfo(res, isRtmp, rm.form, rm.form.getLatencyText(), rfu.wssUrl); isNoPermission = true; addDebugBuf("isendprogram login websocketInfo " + webSocketInfo[0] + " " + webSocketInfo[1]); if (_webSocketInfo[0] == null || _webSocketInfo[1] == null) { addDebugBuf(res); } else { webSocketInfo = _webSocketInfo; } return(false); } if (res == null) { return(false); } var type = util.getPageType(res); addDebugBuf("is ended program pagetype " + type); var isEnd = (type == 7 || type == 2 || type == 3 || type == 9); return(isEnd); }
WebSocketRecorder getWebsocketRecorder(string res) { try { var data = util.getRegGroup(res, "<script id=\"embedded-data\" data-props=\"([\\d\\D]+?)</script>"); if (data == null) { return(null); } data = System.Web.HttpUtility.HtmlDecode(data); var type = util.getRegGroup(res, "\"content_type\":\"(.+?)\""); var webSocketRecInfo = Html5Recorder.getWebSocketInfo(data, false, true, true, rm.form, h5r.isFmp4); if (webSocketRecInfo == null) { return(null); } //var a = recFolderFileInfo; //var segmentSaveType = rm.cfg.get("segmentSaveType"); //var lastFile = util.getLastTimeshiftFileName( // recFolderFileInfo[0], recFolderFileInfo[1], recFolderFileInfo[2], recFolderFileInfo[3], recFolderFileInfo[4], recFolderFileInfo[5], rm.cfg, openTime); //util.debugWriteLine("timeshift lastfile " + lastFile); //string[] lastFileTime = util.getLastTimeShiftFileTime(lastFile, segmentSaveType); //if (lastFileTime == null) // util.debugWriteLine("timeshift lastfiletime " + // ((lastFileTime == null) ? "null" : string.Join(" ", lastFileTime))); var n = nti; var lastWroteSecondsAgo = (int)(((TimeSpan)(DateTime.Now - nti.dt)).TotalSeconds + (int)((nti.no - lastSegmentNo) * nti.second) + 25) * -1; var endSecondsAgo = (int)(((TimeSpan)(DateTime.Now - nti.dt)).TotalSeconds - 15) * -1; var tsConfig = new TimeShiftConfig(0, 0, 0, lastWroteSecondsAgo, 0, 0, endSecondsAgo, false, false, "", false, 0, false, false, 1, 1, false, false, false); var recFolderFile = new string[] { h5r.recFolderFile[0], name[1], null }; /* * var recFolderFile = util.getRecFolderFilePath(recFolderFileInfo[0], recFolderFileInfo[1], recFolderFileInfo[2], recFolderFileInfo[3], recFolderFileInfo[4], recFolderFileInfo[5], rm.cfg, true, tsConfig, openTime, false); * if (recFolderFile == null || recFolderFile[0] == null) { * //パスが長すぎ * rm.form.addLogText("パスに問題があります。 " + recFolderFile[1]); * util.debugWriteLine("too long path? " + recFolderFile[1]); * return null; * } */ var userId = util.getRegGroup(res, "\"user\"\\:\\{\"user_id\"\\:(.+?),"); var isPremium = res.IndexOf("\"member_status\":\"premium\"") > -1; return(new WebSocketRecorder(webSocketRecInfo, container, recFolderFile, rm, rm.rfu, h5r, 0, true, lvid, tsConfig, userId, isPremium, TimeSpan.MaxValue, type, 0, false, false, true, false, false, null, 0)); } catch (Exception e) { util.debugWriteLine(e.Message + e.Source + e.StackTrace + e.TargetSite); return(null); } }
WebSocketRecorder getWebsocketRecorder(string res) { try { var data = util.getRegGroup(res, "<script id=\"embedded-data\" data-props=\"([\\d\\D]+?)</script>"); if (data == null) { return(null); } data = System.Web.HttpUtility.HtmlDecode(data); var type = util.getRegGroup(res, "\"content_type\":\"(.+?)\""); var webSocketRecInfo = Html5Recorder.getWebSocketInfo(data, false, false, true, rm.form, h5r.isFmp4); if (webSocketRecInfo == null) { return(null); } //var a = recFolderFileInfo; var segmentSaveType = rm.cfg.get("segmentSaveType"); var lastFile = util.getLastTimeshiftFileName( recFolderFileInfo[0], recFolderFileInfo[1], recFolderFileInfo[2], recFolderFileInfo[3], recFolderFileInfo[4], recFolderFileInfo[5], rm.cfg, openTime, h5r.isFmp4); util.debugWriteLine("timeshift lastfile " + lastFile); string[] lastFileTime = util.getLastTimeShiftFileTime(lastFile, segmentSaveType, h5r.isFmp4); if (lastFileTime == null) { util.debugWriteLine("timeshift lastfiletime " + ((lastFileTime == null) ? "null" : string.Join(" ", lastFileTime))); } var tsConfig = new TimeShiftConfig(1, int.Parse(lastFileTime[0]), int.Parse(lastFileTime[1]), int.Parse(lastFileTime[2]), 0, 0, 0, true, false, "", false, 0, false, false, 2, 0, false, false, this.tsConfig.isDeletePosTime); tsConfig.endTimeMode = this.tsConfig.endTimeMode; tsConfig.endTimeSeconds = this.tsConfig.endTimeSeconds; tsConfig.lastSegmentNo = lastSegmentNo; var recFolderFile = util.getRecFolderFilePath(recFolderFileInfo[0], recFolderFileInfo[1], recFolderFileInfo[2], recFolderFileInfo[3], recFolderFileInfo[4], recFolderFileInfo[5], rm.cfg, true, tsConfig, openTime, false, h5r.isFmp4); if (recFolderFile == null || recFolderFile[0] == null) { //パスが長すぎ rm.form.addLogText("パスに問題があります。 " + recFolderFile[1]); util.debugWriteLine("too long path? " + recFolderFile[1]); return(null); } var userId = util.getRegGroup(res, "\"user\"\\:\\{\"user_id\"\\:(.+?),"); var isPremium = res.IndexOf("\"member_status\":\"premium\"") > -1; return(new WebSocketRecorder(webSocketRecInfo, container, recFolderFile, rm, rm.rfu, h5r, openTime, true, lvid, tsConfig, userId, isPremium, TimeSpan.MaxValue, type, openTime, false, false, false, false, false, null, 0)); } catch (Exception e) { util.debugWriteLine(e.Message + e.Source + e.StackTrace + e.TargetSite); return(null); } }