Exemple #1
0
        private async Task <JObject> HandleRelatedPlaylistAsync(Dictionary <string, object> queries)
        {
            try {
                byte[] data = await QuickHttp.SendAsync($"https://music.163.com/playlist?id={queries["id"]}", "Get", $"User-Agent: {Request.ChooseUserAgent("pc")}");

                string s         = Encoding.UTF8.GetString(data);
                var    matchs    = Regex.Matches(s, @"<div class=""cver u-cover u-cover-3"">[\s\S]*?<img src=""([^""]+)"">[\s\S]*?<a class=""sname f-fs1 s-fc0"" href=""([^""]+)""[^>]*>([^<]+?)<\/a>[\s\S]*?<a class=""nm nm f-thide s-fc3"" href=""([^""]+)""[^>]*>([^<]+?)<\/a>");
                var    playlists = new JArray(matchs.Cast <Match>().Select(match => new JObject {
                    ["creator"] = new JObject {
                        ["userId"]   = match.Groups[4].Value.Substring("/user/home?id=".Length),
                        ["nickname"] = match.Groups[5].Value
                    },
                    ["coverImgUrl"] = match.Groups[1].Value.Substring(0, match.Groups[1].Value.Length - "?param=50y50".Length),
                    ["name"]        = match.Groups[3].Value,
                    ["id"]          = match.Groups[2].Value.Substring("/playlist?id=".Length),
                }));
                return(new JObject {
                    ["code"] = 200,
                    ["playlists"] = playlists
                });
            }
            catch (Exception ex) {
                return(new JObject {
                    ["code"] = 500,
                    ["msg"] = ex.ToFullString()
                });
            }
        }
Exemple #2
0
        private async Task <JObject> HandleLoginStatusAsync()
        {
            try
            {
                const string GUSER  = "******";
                const string GBINDS = "GBinds=";

                byte[] data = await QuickHttp.SendAsync("https://music.163.com", "Get", $"Cookie: {QuickHttp.ToCookieHeader(Cookies)}");

                string s     = Encoding.UTF8.GetString(data);
                int    index = s.IndexOf(GUSER, StringComparison.Ordinal);
                if (index == -1)
                {
                    return new JObject {
                               ["code"] = 301
                    }
                }
                ;
                var json = new JObject {
                    ["code"] = 200
                };
                using (var reader = new StringReader(s.Substring(index + GUSER.Length)))
                    using (var jsonReader = new JsonTextReader(reader))
                        json.Add("profile", JObject.Load(jsonReader));
                index = s.IndexOf(GBINDS, StringComparison.Ordinal);
                if (index == -1)
                {
                    return new JObject {
                               ["code"] = 301
                    }
                }
                ;
                using (var reader = new StringReader(s.Substring(index + GBINDS.Length)))
                    using (var jsonReader = new JsonTextReader(reader))
                        json.Add("bindings", JArray.Load(jsonReader));
                return(json);
            }
            catch
            {
                return(new JObject {
                    ["code"] = 301
                });
            }
        }
Exemple #3
0
        public async Task <AuthResult> Authenticate(string user, string pass, bool save)
        {
            string payload = "user="******",password="******"payload=" + payload;

            var url  = QuickHttp.Uri(Region.Current.LoginQueue, "/login-queue/rest/queue/authenticate");
            var json = await QuickHttp.Request("POST", url).Send(query).JSONObject();

            this.auth = new AuthResult(JSONDeserializer.Deserialize <LoginQueueDto>(json), user, pass);

            if (json.ContainsKey("lqt") || this.auth.Content.Token == null)
            {
                Debug.WriteLine(json.ToJSON());
            }

            switch (this.auth.Content.Status)
            {
            case "LOGIN":
                if (save)
                {
                    if (!settings.Accounts.ContainsKey(user))
                    {
                        settings.Accounts[user] = new Account();
                    }

                    settings.Accounts[user].SetPassword(pass);
                    settings.Save();
                }
                break;

            case "QUEUE":
                Debug.WriteLine("QUEUE: " + this.auth.Content.Backlog);
                break;
            }

            return(this.auth);
        }
Exemple #4
0
        public void Start(string host)
        {
            var args = $"--backend=\"http://{host}/ui/client/client.html\"";

#if BUILD_UI
            const int debuggingPort = 1337;
            args += $" --remote-debugging-port={debuggingPort}";
            Task.Run(async() => {
                JSONArray json;
                do
                {
                    json = await QuickHttp.Request("GET", $"http://localhost:{debuggingPort}/json/list").JSONArray();
                } while (json == null);

                var url = ((JSONObject)json[0])["devtoolsFrontendUrl"] as string;
                Process.Start($"http://localhost:{debuggingPort}{url}");
            });
#endif

            Process.Start(FrontEndExecutable, args);

            content.Load();
            assets.Load();
        }
Exemple #5
0
        private static ChunkInfo GetChunkInfo(long gameId)
        {
            var uri = new Uri(BaseUri, $"getLastChunkInfo/{Region.Current.Platform}/{gameId}/1/token");

            return(JSONDeserializer.Deserialize <ChunkInfo>(QuickHttp.Request("GET", uri.AbsoluteUri).JSONObject().Result));
        }
Exemple #6
0
        private static JSONObject GetMetaData(long gameId)
        {
            var uri = new Uri(BaseUri, $"getGameMetaData/{Region.Current.Platform}/{gameId}/1/token");

            return(QuickHttp.Request("GET", uri.AbsoluteUri).JSONObject().Result);
        }