Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }