Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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":"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":"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);
        }