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); }
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); }