示例#1
0
        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);
        }