示例#1
0
 public JikkenRecordProcess(
     CookieContainer container, string[] recFolderFile,
     RecordingManager rm, RecordFromUrl rfu,
     JikkenRecorder jr, long openTime,
     bool isTimeShift, string lvid,
     TimeShiftConfig tsConfig, string userId,
     bool isPremium, TimeSpan programTime,
     WatchingInfo wi, long releaseTime, bool isSub, bool isRtmp)
 {
     this.container     = container;
     this.recFolderFile = recFolderFile;
     this.rm            = rm;
     this.rfu           = rfu;
     this.jr            = jr;
     this.openTime      = openTime;
     this.isTimeShift   = isTimeShift;
     this.lvid          = lvid;
     this.tsConfig      = tsConfig;
     this.userId        = userId;
     this.isPremium     = isPremium;
     this.programTime   = programTime;
     this.wi            = wi;
     this.msUri         = wi.msUri;
     isGetCommentXml    = bool.Parse(rm.cfg.get("IsgetcommentXml"));
     isJikken           = true;
     this.releaseTime   = releaseTime;
     this.isSub         = isSub;
     this.isRtmp        = isRtmp;
 }
示例#2
0
        private int getJikkenPageType(string res, bool isSub, out JikkenRecorder jr, CookieContainer cc)
        {
//			if (jr == null)
            //var ccInd = (isSub) ? 1 : 0;
            var ccInd = 0;

            jr = new JikkenRecorder(res, lvid, cc, rm.cfg, rm, this, isSub);
//			rm.jr = jr;
            return(jr.getPageType());
        }
示例#3
0
        private int _rec(string url)
        {
            JikkenRecorder jr = null;
            //RtmpRecorder rr = null;
            var             isRtmp = isRtmpMain;
            CookieContainer cc;

            var pageType = this.getPageType(url, true, ref jr, out cc);

            if (pageType == -1)
            {
                return(2);
            }

            util.debugWriteLine("pagetype " + pageType + " container " + cc);
            if (cc == null || cc == null)
            {
                rm.form.addLogText("ログインに失敗しました。");
                if (bool.Parse(rm.cfg.get("IsmessageBox")) && util.isShowWindow)
                {
                    rm.form.formAction(() =>
                                       MessageBox.Show("ログインに失敗しました。\n" + lvid, "", MessageBoxButtons.OK, MessageBoxIcon.None), false);
                }
                if (bool.Parse(rm.cfg.get("IsfailExit")))
                {
                    rm.rfu = null;
                    rm.form.close();
                }
                return(2);
            }

            util.debugWriteLine("pagetype " + pageType);

            while (this == rm.rfu)
            {
                util.debugWriteLine("pagetype " + pageType);
                if (pageType == 0 || pageType == 7)
                {
                    var isJikken  = res.IndexOf("siteId":"nicocas") > -1;
                    int recResult = 0;

                    if (isPlayOnlyMode && pageType == 7 && isRtmp)
                    {
                        isRtmp = false;
                    }

                    if (isJikken)
                    {
                        //実験放送 なくし
                        //recResult = jr.record(res, isRtmp);
                    }
                    else
                    {
                        var isTimeShift = pageType == 7;

                        h5r       = new Html5Recorder(url, cc, lvid, rm, this, isTimeShift);
                        recResult = h5r.record(res, isRtmp, pageType);
                    }

                    util.debugWriteLine("recresult " + recResult);
                    return(recResult);
                }
                else if (pageType == 1)
                {
                    rm.form.addLogText("満員です。");
                    if (bool.Parse(rm.cfg.get("Isretry")))
                    {
                        System.Threading.Thread.Sleep(10000);

                        while (this == rm.rfu)
                        {
                            try {
                                res      = util.getPageSource(url, cc);
                                isJikken = res.IndexOf("siteId":"nicocas") > -1;
                                //var _pageType = (isJikken) ? getJikkenPageType(res, out jr, cc) : util.getPageType(res);
                                var _pageType = (isJikken) ? 0 : util.getPageType(res);
                                util.debugWriteLine(_pageType);
                                if (pageType != 1)
                                {
                                    continue;
                                }

                                System.Threading.Thread.Sleep(5000);
                            } catch (Exception e) {
                                util.debugWriteLine(e.Message + " " + e.StackTrace + " ");
                            }
                        }
                        continue;
                    }
                    else
                    {
                        return(2);
                    }
                }
                else if (pageType == 5)
                {
                    if (bool.Parse(rm.cfg.get("Isretry")))
                    {
                        rm.form.addLogText("接続エラー。10秒後リトライします。");
                        System.Threading.Thread.Sleep(10000);

                        try {
                            pageType = getPageType(url, false, ref jr, out cc);
                            util.debugWriteLine("pagetype_ " + pageType);
                        } catch (Exception e) {
                            util.debugWriteLine(e.Message + " " + e.StackTrace + " ");
                        }
                        continue;
                    }
                    else
                    {
                        rm.form.addLogText("接続エラー");
                        return(2);
                    }
                }
                else if (pageType == 6)
                {
                    util.debugWriteLine("pagetype 6 process");
                    System.Threading.Thread.Sleep(3000);
                    try {
                        pageType = getPageType(url, false, ref jr, out cc);
                        util.debugWriteLine("pagetype_ " + pageType);
                    } catch (Exception e) {
                        util.debugWriteLine(e.Message + " " + e.StackTrace + " ");
                        rm.form.addLogText(e.Message + " " + e.StackTrace + " ");
                    }
                    continue;
                }
                else if (pageType == 4)
                {
                    rm.form.addLogText("require_community_member");

                    util.debugWriteLine(rm.cfg.get("IsautoFollowComgen"));
                    if (bool.Parse(rm.cfg.get("IsautoFollowComgen")))
                    {
                        var isFollow = new FollowCommunity().followCommunity(res, cc, rm.form, rm.cfg, isPlayOnlyMode);
                        util.debugWriteLine("isfollow " + isFollow);
                        if (isFollow)
                        {
                            pageType = getPageAfterFollow(url, lvid, ref jr, out cc);
                            util.debugWriteLine("pagetype_ " + pageType);
                            continue;
                        }
                    }
                    if (bool.Parse(rm.cfg.get("IsmessageBox")) && util.isShowWindow)
                    {
                        var ret = rm.form.formAction(() =>
                                                     MessageBox.Show("コミュニティに入る必要があります:\nrequire_community_member/" + lvid, "", MessageBoxButtons.OK, MessageBoxIcon.None), false);
                        if (!ret)
                        {
                            return(2);
                        }
                    }
                    if (bool.Parse(rm.cfg.get("IsfailExit")))
                    {
                        rm.rfu = null;
                        rm.form.close();
                    }
                    return(2);
                }
                else if (pageType == 8)
                {
                    rm.form.addLogText("この番組の視聴にはシリアル番号が必要です。");
                    return(2);
                }
                else if (pageType == 9)
                {
                    rm.form.addLogText("この番組の視聴には予約が必要です。");

                    DialogResult isYoyakuRes    = DialogResult.None;
                    var          reserveMessage = rm.cfg.get("reserveMessage");
                    if (reserveMessage != "ダイアログで確認")
                    {
                        isYoyakuRes = reserveMessage == "常に予約する" ? DialogResult.Yes : DialogResult.No;
                    }
                    else
                    {
                        rm.form.formAction(() => {
                            isYoyakuRes = MessageBox.Show(rm.form, "この番組の視聴には予約が必要です。予約しますか?", "", MessageBoxButtons.YesNo);
                        }, false);
                    }
                    if (isYoyakuRes == DialogResult.No)
                    {
                        return(2);
                    }


                    var r = new Reservation(cc, lvid);
                    //var reserveRet = r.reserve();
                    var reserveRet = r.live2Reserve();
                    if (reserveRet == "ok")
                    {
                        rm.form.addLogText("予約しました");
                        pageType = getPageType(url, false, ref jr, out cc);
                        continue;
                    }
                    else
                    {
                        rm.form.addLogText(reserveRet);
                        rm.form.addLogText("予約できませんでした");
                        if (reserveRet == "予約リストが一杯です。")
                        {
                            //DialogResult isOpenMypageRes = DialogResult.None;
                            rm.form.formAction(() => {
                                var isOpenMypageRes = MessageBox.Show(rm.form, "予約リストが一杯です。マイページを開きますか?", "", MessageBoxButtons.YesNo);
                                if (isOpenMypageRes == DialogResult.Yes)
                                {
                                    System.Diagnostics.Process.Start("https://live.nicovideo.jp/my");
                                }
                            }, false);
                        }
                        return(2);
                    }
                }
                else if (pageType == 10)
                {
                    var r = new Reservation(cc, lvid).useLive2Reserve();
                    if (!r)
                    {
                        rm.form.addLogText("この番組のチケットを正常に使用できませんでした。");
                        return(2);
                    }
                    pageType = getPageType(url, false, ref jr, out cc);
                    util.debugWriteLine("pagetype 10_ " + pageType);
                    continue;
                }
                else if (pageType == 11)
                {
                    rm.form.addLogText("この番組は有料チケットが必要です。");
                    return(2);
                }
                else
                {
                    var mes = "";
                    if (pageType == 2 || pageType == 3)
                    {
                        mes = "この放送は終了しています。";
                    }
                    rm.form.addLogText(mes);
                    util.debugWriteLine("pagetype " + pageType + " 終了");

                    if (bool.Parse(rm.cfg.get("IsdeleteExit")))
                    {
                        rm.rfu = null;
                        rm.form.close();
                    }
                    return(2);
                }
            }
            return(2);
        }
示例#4
0
        private int getPageAfterFollow(string url, string lvid, ref JikkenRecorder jr, out CookieContainer cc)
        {
            Uri TargetUrl  = new Uri("https://live.nicovideo.jp");
            Uri TargetUrl2 = new Uri("https://live2.nicovideo.jp");

            for (int i = 0; this == rm.rfu; i++)
            {
                try {
                    var cg    = new CookieGetter(rm.cfg);
                    var cgret = cg.getHtml5RecordCookie(url);
                    cgret.Wait();

                    if (cgret == null || cgret.Result == null)
                    {
                        System.Threading.Thread.Sleep(1000);
                        continue;
                    }
                    cc = cgret.Result[0];

                    /*
                     * var wc = new WebHeaderCollection();
                     * var referer =  "http://live.nicovideo.jp/gate/" + lvid;
                     * container.Add(TargetUrl, new Cookie("_gali", "jsFollowingAdMain"));
                     * container.Add(TargetUrl2, new Cookie("_gali", "jsFollowingAdMain"));
                     * //				container.Add(TargetUrl, new Cookie("_gali", "all"));
                     * //				container.Add(TargetUrl2, new Cookie("_gali", "all"));
                     *
                     * res = util.getPageSource(url + "?ref=grel", ref wc, container, "");
                     *
                     * var pagetype = util.getPageType(res);
                     */

                    //				var pagetype = getPageType(url + "?ref=grel");
                    //				if (pagetype != 5) return pagetype;
                    //				if (res.IndexOf("会場のご案内") < 0) break;
                    var _url = "https://live2.nicovideo.jp/watch/" + lvid;
                    var req  = (HttpWebRequest)WebRequest.Create(_url + "?ref=grel");
                    req.Proxy             = util.httpProxy;
                    req.AllowAutoRedirect = true;
                    //			req.Headers = getheaders;
                    req.Referer = "https://live.nicovideo.jp/gate/" + lvid;
                    req.Headers.Add("Accept-Encoding", "gzip,deflate");
                    req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
                    //var ccInd = (isSub) ? 1 : 0;
                    //var ccInd = 0;
                    cc.Add(TargetUrl, new Cookie("_gali", "box" + lvid));
                    if (cc != null)
                    {
                        req.CookieContainer = cc;
                    }
                    using (var _res = (HttpWebResponse)req.GetResponse())

                        using (var dataStream = _res.GetResponseStream())
                            using (var reader = new StreamReader(dataStream)) {
                                res = reader.ReadToEnd();

                                var getheaders = _res.Headers;
                                var resCookie  = _res.Cookies;
                            }

                    isJikken = res.IndexOf("siteId&quot;:&quot;nicocas") > -1;
                    int pagetype;
//					if (isRtmp) pagetype = getRtmpPageType(res, isSub, out rr, cc);
                    //pagetype = (isJikken) ? getJikkenPageType(res, out jr, cc) : util.getPageType(res);
                    pagetype = (isJikken) ? 0 : util.getPageType(res);

                    if (!isJikken && pagetype != 5 && pagetype != 9 && pagetype != 4)
                    {
                        return(pagetype);
                    }
                    if (isJikken && pagetype != 4)
                    {
                        return(pagetype);
                    }
                    util.debugWriteLine(i);
                } catch (Exception e) {
                    util.debugWriteLine(e.Message + " " + e.StackTrace);
                }
                System.Threading.Thread.Sleep(3000);
            }
            cc = null;
            return(-1);
        }
示例#5
0
        public int getPageType(string url, bool isLogin, ref JikkenRecorder jr, out CookieContainer cc)
        {
            var dt      = DateTime.Now;
            var isFirst = true;

            CookieGetter.isLoginCheck = true;
            while (this == rm.rfu)
            {
                try {
                    if (isLogin && DateTime.Now - dt > TimeSpan.FromSeconds(15))
                    {
//						cc = null;
//						return -1;
                    }

                    if (isRtmpMain)
                    {
                        url = url.Replace("live2.nicovideo.jp", "live.nicovideo.jp");
                    }

                    var cg    = new CookieGetter(rm.cfg);
                    var cgret = cg.getHtml5RecordCookie(url);
                    cgret.Wait();
                    CookieGetter.isLoginCheck = false;

                    //if (isSub && cg.id != null)  id[1] = cg.id;
                    if (cg.id != null)
                    {
                        id[0] = cg.id;
                    }
                    if (id[0] != null && id[1] != null && id[0] == id[1])
                    {
                        rm.form.addLogText("メインアカウントとサブアカウントのIDが同じでした");
                        util.debugWriteLine("メインアカウントとサブアカウントのIDが同じでした");
                        cc = null;
                        return(-2);
                    }

                    //			cgret.ConfigureAwait(false);
                    if (cgret == null || cgret.Result[0] == null)
                    {
                        util.debugWriteLine("cgret " + cgret);
                        if (isLogin && isFirst)
                        {
                            rm.form.addLogText(cg.log);
//							rm.form.addLogText("ログインに失敗しました。");
                            isFirst = false;
                        }
                        if (bool.Parse(rm.cfg.get("IsdeleteExit")))
                        {
                            cc     = null;
                            rm.rfu = null;
                            rm.form.close();
                            return(2);
                        }
                        if (cg.reason != null)
                        {
                            cc = null;
                            if (cg.reason == "not_login")
                            {
                                rm.form.formAction(() =>
                                                   MessageBox.Show("ログインに失敗しました。\n" + lvid));
                            }
                            return(-1);
                        }
                        System.Threading.Thread.Sleep(3000);
                        continue;
                    }
                    //			if (cgret == null) return true;
                    cc = cgret.Result[0];
                    util.debugWriteLine("container " + cc);

                    res = cg.pageSource;

                    //				Uri TargetUrl = new Uri("http://live.nicovideo.jp/");
                    //				util.debugWriteLine("1 " + container.GetCookieHeader(TargetUrl));
                    //				TargetUrl = new Uri("http://live2.nicovideo.jp/");
                    //				util.debugWriteLine("2 " + container.GetCookieHeader(TargetUrl));
                    //if (res.IndexOf("siteId&quot;:&quot;nicolive2") > -1) {
//					if (isRtmp) return getRtmpPageType(res, isSub, out rr, cc);
                    if (isRtmpMain)
                    {
                        //if (res.IndexOf("%3Cgetplayerstatus%20") > -1) {
                        if (res.IndexOf("player_type = null") > -1)
                        {
                            if (res.IndexOf("\"timeshift_reservation") > -1)
                            {
                                return(9);
                            }
                            else if (res.IndexOf("\"Nicolive.WatchingReservation.confirm") > -1)
                            {
                                return(10);
                            }
                            return(2);
                        }
                        else if (res.IndexOf("player_type = 'flash'") > -1 &&
                                 res.IndexOf("%3Cgetplayerstatus%20") > -1)
                        {
                            var _res = util.getRegGroup(res, "(%3Cgetplayerstatus%20.+?%3C%2Fgetplayerstatus%3E)");
                            _res = System.Net.WebUtility.UrlDecode(_res);
                            var isTimeShift = true;
                            var ret         = util.getPageTypeRtmp(_res, ref isTimeShift, false);

                            //isRtmpMain = true;
                            return(ret);
                        }
                        else if (res.IndexOf("<!doctype html>") == -1)
                        {
                            var __url       = "http://live.nicovideo.jp/api/getplayerstatus?v=" + lvid;
                            var __res       = util.getPageSource(__url, cc);
                            var isTimeShift = true;
                            var ret         = util.getPageTypeRtmp(__res, ref isTimeShift, false);
                            res += __res;
                            return(ret);
                        }
                    }
                    var isJikken = res.IndexOf("siteId&quot;:&quot;nicocas") > -1;
                    if (isJikken)
                    {
                        //実験放送なくし
                        //return getJikkenPageType(res, out jr, cc);
                    }
                    else
                    {
                        var _pageType = util.getPageType(res);
                        util.debugWriteLine(_pageType);
                        return(_pageType);
                    }
                } catch (Exception e) {
                    util.debugWriteLine(e.Message + " " + e.StackTrace);
                    System.Threading.Thread.Sleep(3000);
                    if (isLogin)
                    {
                        rm.form.addLogText("ページの取得に失敗しました。");
                        isLogin = false;
                    }
                }
            }
            cc = null;
            return(5);
        }
示例#6
0
        public int getPageType(string url, bool isLogin, bool isSub, ref JikkenRecorder jr, out CookieContainer cc)
        {
            var dt      = DateTime.Now;
            var isFirst = true;

            while (this == rm.rfu)
            {
                try {
                    if (isLogin && DateTime.Now - dt > TimeSpan.FromSeconds(15))
                    {
                        cc = null;
                        return(-1);
                    }

                    if (isRtmpMain)
                    {
                        url = url.Replace("live2.nicovideo.jp", "live.nicovideo.jp");
                    }
                    var cg    = new CookieGetter(rm.cfg);
                    var cgret = cg.getHtml5RecordCookie(url, isSub);
                    cgret.Wait();

                    if (isSub && cg.id != null)
                    {
                        id[1] = cg.id;
                    }
                    if (!isSub && cg.id != null)
                    {
                        id[0] = cg.id;
                    }
                    if (id[0] != null && id[1] != null && id[0] == id[1])
                    {
                        rm.form.addLogText("メインアカウントとサブアカウントのIDが同じでした");
                        util.debugWriteLine("メインアカウントとサブアカウントのIDが同じでした");
                        cc = null;
                        return(-2);
                    }

                    //			cgret.ConfigureAwait(false);
                    if (cgret == null || cgret.Result[0] == null)
                    {
                        util.debugWriteLine("cgret " + cgret);
                        if (isLogin && isFirst)
                        {
                            rm.form.addLogText(cg.log);
//							rm.form.addLogText("ログインに失敗しました。");
                            isFirst = false;
                        }
                        System.Threading.Thread.Sleep(3000);
                        continue;
                    }
                    //			if (cgret == null) return true;
                    cc = cgret.Result[0];
                    util.debugWriteLine("container " + cc);



                    res = cg.pageSource;

                    //				Uri TargetUrl = new Uri("http://live.nicovideo.jp/");
                    //				util.debugWriteLine("1 " + container.GetCookieHeader(TargetUrl));
                    //				TargetUrl = new Uri("http://live2.nicovideo.jp/");
                    //				util.debugWriteLine("2 " + container.GetCookieHeader(TargetUrl));
                    //if (res.IndexOf("siteId&quot;:&quot;nicolive2") > -1) {
//					if (isRtmp) return getRtmpPageType(res, isSub, out rr, cc);
                    if (isRtmpMain)
                    {
                        if (res.IndexOf("%3Cgetplayerstatus%20") > -1)
                        {
                            //if (res.IndexOf("<getplayerstatus status=\"ok\"") > -1) {
                            var _res = util.getRegGroup(res, "(%3Cgetplayerstatus%20.+?%3C%2Fgetplayerstatus%3E)");
                            _res = System.Net.WebUtility.UrlDecode(_res);
                            //var _res = res;
                            var isTimeShift = true;
                            if (_res == null)
                            {
                                continue;
                            }
                            var ret = util.getPageTypeRtmp(_res, ref isTimeShift, false);
                            return(ret);
                        }
                    }
                    var isJikken = res.IndexOf("siteId&quot;:&quot;nicocas") > -1;
                    if (isJikken)
                    {
                        return(getJikkenPageType(res, isSub, out jr, cc));
                    }
                    else
                    {
                        var _pageType = util.getPageType(res);
                        util.debugWriteLine(_pageType);
                        return(_pageType);
                    }
                } catch (Exception e) {
                    util.debugWriteLine(e.Message + " " + e.StackTrace);
                    System.Threading.Thread.Sleep(3000);
                    if (isLogin)
                    {
                        rm.form.addLogText("ページの取得に失敗しました。");
                        isLogin = false;
                    }
                }
            }
            cc = null;
            return(5);

            /*
             * var req = (HttpWebRequest)HttpWebRequest.Create(url);
             * req.Timeout = 15000;
             * req.CookieContainer = this.container;
             * req.AllowAutoRedirect  = false;
             *
             * var res = (HttpWebResponse)req.GetResponse();
             * return (res.Headers.Get("Location") == null) ? false : true;
             */
        }
示例#7
0
        private int _rec(string url, bool isSub)
        {
            JikkenRecorder  jr     = null;
            RtmpRecorder    rr     = null;
            var             isRtmp = !isSubAccountHokan && (isRtmpMain || isSub);
            CookieContainer cc     = null;

            var pageType = wssUrl == null?
                           this.getPageType(url, true, isSub, ref jr, out cc) :
                               0;

            container = cc;
            if (pageType == -2 && isSub)
            {
                return(2);
            }
            if (pageType == -1)
            {
                return(2);
            }

            //var ccInd = (isSub) ? 1 : 0;
            var ccInd = 0;

            util.debugWriteLine("pagetype " + pageType + " container " + cc + " isSub " + isSub);
            if ((cc == null || cc == null) && wssUrl == null)
            {
                rm.form.addLogText("ログインに失敗しました。");
                if (bool.Parse(rm.cfg.get("IsmessageBox")) && util.isShowWindow)
                {
                    if (rm.form.IsDisposed)
                    {
                        return(2);
                    }
                    try {
                        rm.form.Invoke((MethodInvoker) delegate() {
                            MessageBox.Show("ログインに失敗しました。(" + util.getMainSubStr(isSub) + ")\n" + lvid, "", MessageBoxButtons.OK, MessageBoxIcon.None);
                        });
                    } catch (Exception e) {
                        util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
                    }
                }
                if (bool.Parse(rm.cfg.get("IsfailExit")) && false)
                {
                    rm.rfu = null;
                    if (util.isShowWindow)
                    {
                        try {
                            rm.form.Invoke((MethodInvoker) delegate() {
                                try { rm.form.Close(); }
                                catch (Exception e) {
                                    util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
                                }
                            });
                        } catch (Exception e) {
                            util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
                        }
                    }
                }

                return(2);
            }

            util.debugWriteLine("pagetype " + pageType);

            while (true && this == rm.rfu)
            {
                util.debugWriteLine("pagetype " + pageType);
                if (pageType == 0 || pageType == 7)
                {
                    if (wssUrl != null)
                    {
                        res = "";
                    }
                    var isJikken  = res.IndexOf("siteId&quot;:&quot;nicocas") > -1;
                    int recResult = 0;

                    if (rm.isPlayOnlyMode && pageType == 7 && isRtmp)
                    {
                        isRtmp = false;
                    }

                    if (isJikken)
                    {
                        if (!jr.isLive && isSub)
                        {
                            return(2);
                        }
                        recResult = jr.record(res, isRtmp);
                    }
                    else
                    {
                        var isTimeShift = pageType == 7;
                        if (isTimeShift && isSub)
                        {
                            return(2);
                        }

                        var h5r = new Html5Recorder(url, cc, lvid, rm, this, isTimeShift, isSub);
                        recResult = h5r.record(res, isRtmp, pageType);
                    }

                    util.debugWriteLine("recresult " + recResult);
                    return(recResult);
                }
                else if (pageType == 1)
                {
                    rm.form.addLogText("満員です。");
                    if (bool.Parse(rm.cfg.get("Isretry")))
                    {
                        System.Threading.Thread.Sleep(10000);

                        while (this == rm.rfu)
                        {
                            try {
                                var wc = new WebHeaderCollection();
                                res = util.getPageSource(url, ref wc, cc);

                                isJikken = res.IndexOf("siteId&quot;:&quot;nicocas") > -1;
                                var _pageType = (isJikken) ? getJikkenPageType(res, isSub, out jr, cc) : util.getPageType(res);
                                util.debugWriteLine(_pageType);
                                if (pageType != 1)
                                {
                                    continue;
                                }

                                System.Threading.Thread.Sleep(5000);
                            } catch (Exception e) {
                                util.debugWriteLine(e.Message + " " + e.StackTrace + " ");
                            }
                        }

                        continue;
                    }
                    else
                    {
                        return(2);
                    }
                }
                else if (pageType == 5)
                {
                    if (bool.Parse(rm.cfg.get("Isretry")))
                    {
                        rm.form.addLogText("接続エラー。10秒後リトライします。");
                        System.Threading.Thread.Sleep(10000);

                        try {
//							var wc = new WebHeaderCollection();
//							res = util.getPageSource(url, ref wc, container);
//							pageType = util.getPageType(res);
                            pageType  = getPageType(url, false, isSub, ref jr, out cc);
                            container = cc;
                            util.debugWriteLine("pagetype_ " + pageType);
                        } catch (Exception e) {
                            util.debugWriteLine(e.Message + " " + e.StackTrace + " ");
//							rm.form.addLogText(e.Message + " " + e.StackTrace + " ");
                        }
                        continue;
                    }
                    else
                    {
                        rm.form.addLogText("接続エラー");
                        return(2);
                    }
                }
                else if (pageType == 6)
                {
                    util.debugWriteLine("pagetype6process");
                    System.Threading.Thread.Sleep(3000);
                    try {
                        pageType  = getPageType(url, false, isSub, ref jr, out cc);
                        container = cc;
                        util.debugWriteLine("pagetype_ " + pageType);
                    } catch (Exception e) {
                        util.debugWriteLine(e.Message + " " + e.StackTrace + " ");
                        rm.form.addLogText(e.Message + " " + e.StackTrace + " ");
                    }
                    continue;
                }
                else if (pageType == 4)
                {
                    rm.form.addLogText("require_community_menber");
//					rm.form.addLogText(res);


                    if (true && false)
                    {
                        rm.rfu = null;
                        if (util.isShowWindow)
                        {
                            try {
                                rm.form.Invoke((MethodInvoker) delegate() {
                                    try { rm.form.Close(); }
                                    catch (Exception e) {
                                        util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
                                    }
                                });
                            } catch (Exception e) {
                                util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
                            }
                        }
                    }
                    return(2);
                }
                else if (pageType == 8)
                {
                    rm.form.addLogText("この番組の視聴にはシリアル番号が必要です。");
                    return(2);
                }
                else if (pageType == 9)
                {
                    if (isSub)
                    {
                        return(2);
                    }

                    rm.form.addLogText("この番組の視聴には予約が必要です。");
                    return(2);
                }
                else
                {
                    var mes = "";
                    if (pageType == 2)
                    {
                        mes = "この放送は終了しています。";
                    }
                    if (pageType == 3)
                    {
                        mes = "この放送は終了しています。";
                    }
                    if (pageType == 7)
                    {
                        mes = "この放送は終了しています。";
                    }
                    rm.form.addLogText(mes);
                    util.debugWriteLine("pagetype " + pageType + " 終了");

                    if (bool.Parse(rm.cfg.get("IsdeleteExit")) && false)
                    {
                        rm.rfu = null;
                        if (util.isShowWindow)
                        {
                            try {
                                rm.form.Invoke((MethodInvoker) delegate() {
                                    try { rm.form.Close(); }
                                    catch (Exception e) {
                                        util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
                                    }
                                });
                            } catch (Exception e) {
                                util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.Source + " " + e.TargetSite);
                            }
                        }
                    }
                    return(2);
                    //var nh5r = new NotHtml5Recorder(url, container, lvid, rm, this);
                    //nh5r.record(res);
                }
            }
            return(2);
        }