Ejemplo n.º 1
0
        private void bulkAddFromFollowCom(ToolMenuLock _lock, List <string[]> addList, int allNum, bool[] followMode)
        {
            var mainFollowList = new FollowChecker(form, form.check.container)
                                 .getFollowList(followMode);
            var behaviors = form.config.get("defaultBehavior").Split(',').Select <string, bool>(x => x == "1").ToArray();
            var textColor = ColorTranslator.FromHtml(form.config.get("defaultTextColor"));
            var backColor = ColorTranslator.FromHtml(form.config.get("defaultBackColor"));
            int got = 0, error = 0;

            for (var i = 0; i < addList.Count; i++)
            {
                var id = addList[i];
                if (bulkAddFromFollowComLock != _lock)
                {
                    util.showModelessMessageBox("参加コミュ一括登録が中断されました", "", form);
                    setToolMenuStatusBar();
                    return;
                }
                var isUser    = id[0].StartsWith("c");
                var comId     = isUser ? id[0] : "";
                var comName   = isUser ? id[1] : "";
                var comFollow = (!isUser && mainFollowList.Find((x) => id[0] == x[0]) != null) ?
                                "フォロー解除する" : "フォローする";
                if (comId == "")
                {
                    comFollow = "";
                }
                var userId     = isUser ? "" : id[0];
                var userName   = isUser ? "" : id[1];
                var userFollow = (isUser && mainFollowList.Find((x) => id[0] == x[0]) != null) ?
                                 "フォロー解除する" : "フォローする";
                if (userId == "")
                {
                    userFollow = "";
                }

                var now = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
                var ai  = new AlartInfo(comId, userId,
                                        comName, userName, "", now, false, false,
                                        false, false, false, false, false,
                                        false, false, false, false, false,
                                        false, false, false, "",
                                        comFollow, userFollow, "", "");
                ai.setBehavior(behaviors);
                ai.textColor = textColor;
                ai.backColor = backColor;
                form.formAction(() =>
                                form.alartListDataSource.Add(ai)
                                );
                got++;
                _lock.end = i;
                setToolMenuStatusBar();
                //Thread.Sleep(2000);
            }
            util.showModelessMessageBox("新規登録:" + got + " 登録済み:" + (allNum - got) + " エラー:" + error, "参加コミュ登録完了", form);
            bulkAddFromFollowComLock = null;
            setToolMenuStatusBar();
            form.changedListContent();
        }
Ejemplo n.º 2
0
        public void addBulkFromFollowComStart()
        {
            if (bulkAddFromFollowComLock != null)
            {
                var res = form.showMessageBox("既に参加コミュ一括登録実行中です。中断しますか?",
                                              "確認", MessageBoxButtons.OKCancel,
                                              MessageBoxIcon.Warning,
                                              MessageBoxDefaultButton.Button2);
                if (res == DialogResult.Cancel)
                {
                    return;
                }
                bulkAddFromFollowComLock = null;
                setToolMenuStatusBar();
            }
            else
            {
                Task.Factory.StartNew(() => {
                    try {
                        var f = new BulkAddFromFollowAccountForm(int.Parse(form.config.get("fontSize")));
                        Task.Factory.StartNew(() => {
                            form.formAction(() => f.ShowDialog(form));
                        }).Wait();

                        if (f.mail == null)
                        {
                            return;
                        }

                        if (f.mail == "" || f.pass == "")
                        {
                            util.showModelessMessageBox("メールアドレスとパスワードを入力してください", "", form);
                            return;
                        }

                        var cc = getUserSession(f.mail, f.pass);
                        if (cc == null)
                        {
                            return;
                        }

                        /*
                         * var res = util.getPageSource("https://www.nicovideo.jp/my/", cc);
                         * if (res == null) {
                         *      form.showMessageBox("マイページが取得できませんでした", "");
                         *      return;
                         * }
                         * var name = util.getRegGroup(res, "<span id=\"siteHeaderUserNickNameContainer\">(.+?)</span>");
                         * var id = util.getRegGroup(res, "User = \\{ id: (\\d+)");
                         * if (name == null || id == null) {
                         *      form.showMessageBox("マイページからの取得に失敗しました", "");
                         *      return;
                         * }
                         */
                        var us = cc.GetCookies(new Uri("https://www.nicovideo.jp"))["user_session"];
                        if (us == null)
                        {
                            form.addLogText("Cookie内にセッション情報が見つかりませんでした");
                            return;
                        }
                        var id   = util.getRegGroup(us.ToString(), "(\\d+)");
                        var name = util.getMyName(cc, util.getRegGroup(us.ToString(), "=(.+)"));

                        var followList = new FollowChecker(form, cc).getFollowList(f.follow);
                        if (followList == null)
                        {
                            form.addLogText("フォローリストが見つかりませんでした");
                            return;
                        }
                        var addFollowList = getAddFollowList(followList);
                        if (addFollowList == null)
                        {
                            return;
                        }
                        var isStartRet = -1;
                        Task.Factory.StartNew(() =>
                                              isStartRet = util.showModelessMessageBox(name + "(" + id + ") の" + (f.isAddToCom ? "参加コミュ" : "フォローユーザーID") + "は\r\n未登録:" + addFollowList.Count + "件 登録済み:" + (followList.Count - addFollowList.Count) + " です。\r\n未登録の" + (f.isAddToCom ? "参加コミュニティ" : "フォローユーザーID") + "を登録しますか?", "確認", form, 1 | 0x100 | 0x20)
                                              ).Wait();
                        if (isStartRet != 1)
                        {
                            return;
                        }

                        var l = new ToolMenuLock((f.isAddToCom ? "参加コミュ" : "フォローユーザー") + "一括登録中", addFollowList.Count);
                        bulkAddFromFollowComLock = l;
                        setToolMenuStatusBar();
                        Task.Factory.StartNew(() => bulkAddFromFollowCom(l, addFollowList, followList.Count, f.follow, cc, f.isAddToCom));
                    } catch (Exception e) {
                        util.debugWriteLine(e.Message + e.Source + e.StackTrace + e.TargetSite);
                        form.addLogText("一括登録中に未知のエラーが発生しました" + e.Message + e.Source + e.StackTrace + e.TargetSite);
                    }
                });
            }
        }
Ejemplo n.º 3
0
        private bool isHtml5Login(CookieContainer cc, string url)
        {
            var c = cc.GetCookieHeader(new Uri(url));
            //for (var i = 0; i < 1; i++) {

            /*
             * var headers = new WebHeaderCollection();
             * try {
             *      util.debugWriteLine("ishtml5login getpage " + url + util.getMainSubStr(isSub));
             * //					ar _url = (isRtmp) ? ("https://live.nicovideo.jp/api/getplayerstatus/" + util.getRegGroup(url, "(lv\\d+)")) : url;
             *      pageSource = util.getPageSource(_url, ref headers, cc);
             * //					util.debugWriteLine(cc.GetCookieHeader(new Uri(_url)));
             *      util.debugWriteLine("ishtml5login getpage ok" + util.getMainSubStr(isSub));
             * } catch (Exception e) {
             *      util.debugWriteLine("cookiegetter ishtml5login " + e.Message+e.StackTrace + util.getMainSubStr(isSub));
             *      pageSource = "";
             *      log += "ページの取得中にエラーが発生しました。" + e.Message + e.Source + e.TargetSite + e.StackTrace;
             *      continue;
             * }
             * //			isHtml5 = (headers.Get("Location") == null) ? false : true;
             * if (pageSource == null) {
             *      log += "ページが取得できませんでした。";
             *      util.debugWriteLine("not get page" + util.getMainSubStr(isSub));
             *      continue;
             * }
             * var isLogin = !(pageSource.IndexOf("\"login_status\":\"login\"") < 0 &&
             *      pageSource.IndexOf("login_status = 'login'") < 0);
             *
             */

            //test
            //test(cc, url);

            var isLogin = false;
            //var isFollow = false;
            string uid = null;

            try {
                var fl = new FollowChecker(form, cc).getFollowList(new bool[] { true, false, false }, false);
                if (fl == null)
                {
                    return(false);
                }

                var us = cc.GetCookies(new Uri(url))["user_session"];
                uid = us == null ? null : util.getRegGroup(us.Value, "user_session_(.+?)_");
                //form.addLogText("usersession " + (us != null) + " uid " + (uid != null));

                if (uid != null)
                {
                    var _url = "https://public.api.nicovideo.jp/v1/user/followees/niconico-users/" + uid + ".json";
                    var res  = util.getPageSource(_url, cc);
                    //form.addLogText("cookie check " + (res != null));

                    //var n = util.getUserName(uid, out isFollow, cc, true);
                    if (res != null)
                    {
                        isLogin = true;
                    }


                    if (!isLogin)
                    {
                        //test0
                        util.debugWriteLine("access__ isHtml5Login 0 ");
                        var _req = (HttpWebRequest)WebRequest.Create("https://www.nicovideo.jp/my/channel");
                        _req.Proxy           = null;
                        _req.CookieContainer = cc;
                        _req.Headers.Add("Accept-Encoding", "gzip,deflate");
                        _req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
                        //_req.CookieContainer = new CookieContainer();
                        try {
                            using (var r = (HttpWebResponse)_req.GetResponse())
                                using (var _r = r.GetResponseStream())
                                    using (var __sr = new System.IO.StreamReader(_r)) {
                                        var __r = __sr.ReadToEnd();
                                        //util.debugWriteLine("__r + " + __r);
                                        us = _req.CookieContainer.GetCookies(new Uri("https://www.nicovideo.jp/my/channel"))["user_session"];
                                        if (__r != null)
                                        {
                                            isLogin = true;
                                        }
                                        //form.addLogText("cookie check3 " + isLogin + " " + (us != null));
                                        util.debugWriteLine(isLogin);
                                    }
                        } catch (Exception ee) {
                            util.debugWriteLine(ee.Message + ee.Source + ee.StackTrace + ee.TargetSite);
                            //form.addLogText("cookie check3 exception");
                        }
                    }
                    //test0
                }
            } catch (Exception e) {
                util.debugWriteLine(e.Message + e.Source + e.StackTrace + e.TargetSite);
            }

            util.debugWriteLine("islogin " + isLogin);
            log += (isLogin) ? "ログインに成功しました。" : "ログインに失敗しました";
            //			if (!isLogin) log += pageSource;
            if (isLogin)
            {
                //				id = (isRtmp) ? util.getRegGroup(pageSource, "<user_id>(\\d+)</user_id>")
                //					: util.getRegGroup(pageSource, "\"user_id\":(\\d+)");
                //id = util.getRegGroup(pageSource, "\"user_id\":(\\d+)");
                //if (id == null) id = util.getRegGroup(pageSource, "user_id = (\\d+)");
                util.debugWriteLine("id " + uid);
            }
            else
            {
                util.debugWriteLine("not login " + uid);
            }
            return(isLogin);
            //}
            //return false;
        }