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