コード例 #1
0
ファイル: PatreonUtils.cs プロジェクト: ROB6154/AtelierMisaka
 private async Task <ResultMessage> LoginCheck(string htmlc)
 {
     if (!_needLogin)
     {
         if (!htmlc.Contains("currentUser"))
         {
             _needLogin = true;
             return(await LoginCheck(await GetWebCode("https://www.patreon.com/login?ru=%2Fhome")));
         }
         else
         {
             if (string.IsNullOrEmpty(htmlc))
             {
                 return(ResultHelper.WebError());
             }
             Match ma = _emailRegex.Match(htmlc);
             if (ma.Success)
             {
                 var s = ma.Groups[1].Value;
                 GlobalData.VM_MA.Cookies       = s;
                 GlobalData.VM_MA.IsInitialized = true;
                 return(ResultHelper.NoError(_needLogin));
             }
             return(ResultHelper.CookieError(GlobalLanguage.Msg_ErrorCookiesMail));
         }
     }
     else
     {
         GlobalData.VM_MA.ShowLogin = true;
         _cwb.FrameLoadEnd         += CWebBrowser_LoginCheck;
         _cwb.FrameLoadStart       += Cwb_FrameLoadStart;
         return(ResultHelper.NoError(_needLogin));
     }
 }
コード例 #2
0
        private async Task <ResultMessage> LoginCheck(string htmlc)
        {
            if (null == _cwb.Address)
            {
                return(await LoginCheck(await GetWebCode("view-source:https://www.patreon.com/home")));
            }
            if (_cwb.Address.Contains("login"))
            {
                if (_cwb.Title.StartsWith("view-sou"))
                {
                    return(await LoginCheck(await GetWebCode("https://www.patreon.com/login?ru=%2Fhome")));
                }
                else
                {
                    GlobalData.VM_MA.ShowLogin = true;
                    _cwb.FrameLoadStart       += Cwb_FrameLoadStart;
                    _cwb.FrameLoadEnd         += CWebBrowser_LoginCheck;
                    return(ResultHelper.NoError(true));
                }
            }
            else
            {
                if (string.IsNullOrEmpty(htmlc))
                {
                    return(ResultHelper.WebError());
                }
                Match ma = _emailRegex.Match(htmlc);
                if (ma.Success)
                {
                    var s = ma.Groups[1].Value;
                    if (s != GlobalData.VM_MA.Cookies)
                    {
                        if (GlobalData.VM_MA.ShowLogin)
                        {
                            GlobalData.VM_MA.Messages = GlobalLanguage.Msg_ErrorCookiesAuto;
                        }
                        else
                        {
                            await GetWebCode("view-source:https://www.patreon.com/logout?ru=%2Fhome");

                            return(await LoginCheck(await GetWebCode("view-source:https://www.patreon.com/home")));
                        }
                    }
                    _currentCookie                 = s;
                    GlobalData.VM_MA.Cookies       = s;
                    GlobalData.VM_MA.IsInitialized = true;
                }
                else
                {
                    GlobalData.VM_MA.Messages = GlobalLanguage.Msg_ErrorCookiesMail;
                }
                _cwb.FrameLoadEnd         -= CWebBrowser_LoginCheck;
                GlobalData.VM_MA.ShowLogin = false;
                return(ResultHelper.NoError(false));
            }
        }
コード例 #3
0
 public async Task <ResultMessage> InitBrowser()
 {
     try
     {
         if (null != GlobalData.VM_MA.PatreonCefBrowser)
         {
             _cwb = (ChromiumWebBrowser)GlobalData.VM_MA.PatreonCefBrowser;
             if (!GlobalData.VM_MA.IsInitialized)
             {
                 while (!_cwb.IsBrowserInitialized)
                 {
                     await Task.Delay(500);
                 }
                 if (GlobalData.VM_MA.UseProxy)
                 {
                     if (!await CefHelper.SetProxy(_cwb, GlobalData.VM_MA.Proxy))
                     {
                         return(ResultHelper.WebError(GlobalLanguage.Msg_ErrorWebProxy));
                     }
                 }
                 return(await LoginCheck(await GetWebCode("view-source:https://www.patreon.com/home")));
             }
             if (_currentCookie != GlobalData.VM_MA.Cookies)
             {
                 return(await Logout());
             }
             return(ResultHelper.NoError(false));
         }
         CefHelper.Initialize();
         _cwb = new ChromiumWebBrowser();
         GlobalData.VM_MA.PatreonCefBrowser = _cwb;
         while (!_cwb.IsBrowserInitialized)
         {
             await Task.Delay(500);
         }
         if (GlobalData.VM_MA.UseProxy)
         {
             if (!await CefHelper.SetProxy(_cwb, GlobalData.VM_MA.Proxy))
             {
                 return(ResultHelper.WebError(GlobalLanguage.Msg_ErrorWebProxy));
             }
         }
         return(await LoginCheck(await GetWebCode("view-source:https://www.patreon.com/home")));
     }
     catch (Exception ex)
     {
         GlobalMethord.ErrorLog(ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + "-----------------------------------------------");
         return(ResultHelper.UnKnownError());
     }
 }
コード例 #4
0
        public async override Task <ResultMessage> LikePost(string pid, string cid)
        {
            return(await Task.Run(() =>
            {
                if (string.IsNullOrEmpty(_x_csrf_token))
                {
                    if (!UpdateToken(pid, cid))
                    {
                        return ResultHelper.SecurityError();
                    }
                }
                try
                {
                    WebClient wc = new WebClient();
                    wc.Headers.Add(HttpRequestHeader.Cookie, GlobalData.VM_MA.Cookies);
                    wc.Headers.Set(HttpRequestHeader.ContentType, "application/json");
                    wc.Headers.Set("Origin", "https://www.fanbox.cc");
                    wc.Headers.Add(HttpRequestHeader.Referer, $"https://www.fanbox.cc/@{cid}/posts/{pid}");
                    wc.Headers.Add("x-csrf-token", _x_csrf_token);
                    if (GlobalData.VM_MA.UseProxy)
                    {
                        wc.Proxy = GlobalData.VM_MA.MyProxy;
                    }

                    wc.UploadString("https://api.fanbox.cc/post.likePost", $"{{\"postId\":\"{pid}\"}}");

                    return ResultHelper.NoError(null);
                }
                catch (Exception ex)
                {
                    if (ex.Message.Contains("400"))
                    {
                        if (!UpdateToken(pid, cid))
                        {
                            return ResultHelper.SecurityError();
                        }
                    }
                    return ResultHelper.WebError();
                }
            }));
        }
コード例 #5
0
        public async override Task <ResultMessage> GetArtistList()
        {
            return(await Task.Run(() =>
            {
                try
                {
                    var ais = new List <ArtistInfo>();
                    var tais = GlobalData.VM_MA.ArtistList.ToList();
                    if (tais.Count == 0)
                    {
                        tais.Add(new ArtistInfo());
                    }

                    var jfp = JsonConvert.DeserializeObject <JsonData_Fanbox_Plan>(GetWebCode("https://api.fanbox.cc/plan.listSupporting", "https://www.fanbox.cc/creators/supporting"));
                    if (null != jfp.body)
                    {
                        foreach (var pl in jfp.body)
                        {
                            var ai = GetInfo(pl.creatorId, $"https://www.fanbox.cc/@{pl.creatorId}");
                            if (null != ai)
                            {
                                ai.PayHigh = pl.fee.ToString();
                                tais.Remove(ai);
                                ais.Add(ai);
                            }
                        }
                        ais.AddRange(tais);
                        return ResultHelper.NoError(ais);
                    }
                    return ResultHelper.IOError();
                }
                catch (Exception ex)
                {
                    GlobalMethord.ErrorLog(ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + "-----------------------------------------------");
                    if (ex is WebException || ex is System.Net.Sockets.SocketException)
                    {
                        return ex.Message.Contains("40") ? ResultHelper.CookieError() : ResultHelper.WebError();
                    }
                    return ResultHelper.UnKnownError();
                }
            }));
        }
コード例 #6
0
        public async override Task <ResultMessage> GetArtistInfo(string url)
        {
            return(await Task.Run(() =>
            {
                try
                {
                    Match ma = _artUrl.Match(url);
                    if (!ma.Success)
                    {
                        ma = _artUrl2.Match(url);
                        if (!ma.Success)
                        {
                            return ResultHelper.PathError();
                        }
                    }
                    _referer = $"https://www.fanbox.cc/@{ma.Groups[1].Value}";

                    var ai = GetInfo(ma.Groups[1].Value);
                    if (null != ai)
                    {
                        ai.PayLow = GlobalData.VM_MA.Artist.PayLow;
                        ai.PayHigh = GlobalData.VM_MA.Artist.PayHigh;
                        return ResultHelper.NoError(ai);
                    }
                    return ResultHelper.IOError();
                }
                catch (Exception ex)
                {
                    GlobalMethord.ErrorLog(ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + "-----------------------------------------------");
                    if (ex is WebException || ex is System.Net.Sockets.SocketException)
                    {
                        return ex.Message.Contains("40") ? ResultHelper.CookieError() : ResultHelper.WebError();
                    }
                    return ResultHelper.UnKnownError();
                }
            }));
        }
コード例 #7
0
        public async override Task <ResultMessage> GetPostIDs(string uid)
        {
            return(await Task.Run(() =>
            {
                var bis = new List <BaseItem>();
                try
                {
                    string url = $"https://api.fanbox.cc/post.listCreator?creatorId={uid}&limit=10";
                    if (string.IsNullOrEmpty(_referer))
                    {
                        _referer = $"https://{uid}.fanbox.cc";
                    }

                    string nurl = GetUrls(GetWebCode(url), bis);
                    if (!string.IsNullOrEmpty(nurl))
                    {
                        GetPostIDs_Next(nurl, bis);
                    }
                    return ResultHelper.NoError(bis);
                }
                catch (Exception ex)
                {
                    GlobalMethord.ErrorLog(ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + "-----------------------------------------------");
                    if (ex is WebException || ex is System.Net.Sockets.SocketException)
                    {
                        return ex.Message.Contains("401") ? ResultHelper.CookieError() : ResultHelper.WebError();
                    }
                    return ResultHelper.UnKnownError();
                }
            }));
        }
コード例 #8
0
        public async override Task <ResultMessage> GetArtistList()
        {
            return(await Task.Run(() =>
            {
                try
                {
                    List <ArtistInfo> ais = new List <ArtistInfo>();
                    //有料
                    ais.AddRange(GetArtistListFromWebCode("not_"));
                    //無料
                    ais.AddRange(GetArtistListFromWebCode(string.Empty));

                    var tais = GlobalData.VM_MA.ArtistList.ToList();
                    if (tais.Count == 0)
                    {
                        tais.Add(new ArtistInfo());
                    }
                    tais.ForEach(x =>
                    {
                        if (!ais.Contains(x))
                        {
                            ais.Add(x);
                        }
                    });
                    return ResultHelper.NoError(ais);
                }
                catch (Exception ex)
                {
                    GlobalMethord.ErrorLog(ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + "-----------------------------------------------");
                    if (ex is WebException || ex is System.Net.Sockets.SocketException)
                    {
                        return ex.Message.Contains("40") ? ResultHelper.CookieError() : ResultHelper.WebError();
                    }
                    return ResultHelper.UnKnownError();
                }
            }));
        }
コード例 #9
0
        public async override Task <ResultMessage> GetArtistInfo(string url)
        {
            return(await Task.Run(() =>
            {
                try
                {
                    Match ma = _artUrl.Match(url);
                    if (!ma.Success)
                    {
                        return ResultHelper.PathError();
                    }
                    string cid = ma.Groups[1].Value;

                    var jfa = JsonConvert.DeserializeObject <JsonData_Fantia_Artist>(GetWebCode($"https://fantia.jp/api/v1/fanclubs/{cid}"));
                    if (null != jfa.fanclub)
                    {
                        var ai = new ArtistInfo()
                        {
                            Id = cid,
                            AName = GlobalMethord.RemoveLastDot(GlobalMethord.ReplacePath(jfa.fanclub.creator_name)),
                            Cid = cid,
                            PostUrl = $"https://fantia.jp/fanclubs/{cid}",
                            PayLow = GlobalData.VM_MA.Artist.PayLow,
                            PayHigh = GlobalData.VM_MA.Artist.PayHigh
                        };
                        return ResultHelper.NoError(ai);
                    }
                    return ResultHelper.IOError();
                }
                catch (Exception ex)
                {
                    GlobalMethord.ErrorLog(ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + "-----------------------------------------------");
                    if (ex is WebException || ex is System.Net.Sockets.SocketException)
                    {
                        return ex.Message.Contains("40") ? ResultHelper.CookieError() : ResultHelper.WebError();
                    }
                    return ResultHelper.UnKnownError();
                }
            }));
        }
コード例 #10
0
 public async override Task <ResultMessage> GetPostIDs(string uid)
 {
     return(await Task.Run(() =>
     {
         try
         {
             _pidList = new HashSet <string>();
             var bis = GetPostIDsFromWebCode(uid);
             return ResultHelper.NoError(bis);
         }
         catch (Exception ex)
         {
             GlobalMethord.ErrorLog(ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + "-----------------------------------------------");
             if (ex is WebException || ex is System.Net.Sockets.SocketException)
             {
                 return ex.Message.Contains("40") ? ResultHelper.CookieError() : ResultHelper.WebError();
             }
             else if (ex is InvalidDataException)
             {
                 return ResultHelper.UnKnownError("Post Error: " + ex.Message);
             }
             return ResultHelper.UnKnownError();
         }
     }));
 }