/// <summary> /// q音搜索联想接口没有专辑信息 /// </summary> /// <param name="parms">0 keyword</param> /// <returns></returns> public override List <IMusicInfo> SearchMusic_Suggest(params object[] parms) { LoginInfo_QQ temploginlinfo = (LoginInfo_QQ)logininfo; List <IMusicInfo> musics = new List <IMusicInfo>(); //标准头 HttpItem item = new HttpItem(); item.URL = $"https://c.y.qq.com/splcloud/fcgi-bin/smartbox_new.fcg?is_xml=0&key={EncodeMethod.Encode(EncodeType.UrlEncode, parms[0])}&g_tk_new_20200303={temploginlinfo.csrf_token}&g_tk={temploginlinfo.csrf_token}&loginUin={temploginlinfo.qqnum}&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0"; item.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"; item.Referer = "https://y.qq.com/portal/profile.html"; item.ContentType = "application/x-www-form-urlencoded"; item.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; item.Cookie = logininfo.cookie; //自定义头 item.Header.Add("Accept-Encoding", "gzip, deflate"); String html = HttpMethod.HttpWork(item).Html; try { if (JsonConvert.DeserializeObject(html) is JObject jobj) { int code = Convert.ToInt32(jobj.SelectToken("code")); if (code == 0) { foreach (var tk in jobj.SelectTokens("data.song.itemlist[*]")) { musics.Add(new MusicInfo_QQ { musicid_qq = Convert.ToString(tk.SelectToken("id")), music_mid_qq = Convert.ToString(tk.SelectToken("mid")), name = Convert.ToString(tk.SelectToken("name")), singers = new List <ISingerInfo> { new SingerInfo_QQ { platform = PlatformType.MusicQQ, name = Convert.ToString(tk.SelectToken("singer")) } } }); } } else { } Console.WriteLine(html); } } catch (Exception ex) { throw ex; } Console.WriteLine(JsonConvert.SerializeObject(musics)); return(musics); }
/// <summary> /// /// </summary> /// <param name="parms">0 keyword</param> /// <returns></returns> public override List <IMusicInfo> SearchMusic(params object[] parms) { LoginInfo_QQ temploginlinfo = (LoginInfo_QQ)logininfo; List <IMusicInfo> musics = new List <IMusicInfo>(); //标准头 HttpItem item = new HttpItem(); item.URL = $"https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w={EncodeMethod.Encode( EncodeType.UrlEncode,parms[0])}&g_tk_new_20200303={temploginlinfo.csrf_token}&g_tk={temploginlinfo.csrf_token}&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0"; item.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"; item.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; item.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; //自定义头 item.Header.Add("Accept-Encoding", "gzip, deflate"); String html = HttpMethod.HttpWork(item).Html; try { if (JsonConvert.DeserializeObject(html) is JObject jobj) { int code = Convert.ToInt32(jobj.SelectToken("code")); if (code == 0) { foreach (var tk in jobj.SelectTokens("data.song.list[*]")) { String albumid = Convert.ToString(tk.SelectToken("album.mid")); musics.Add(new MusicInfo_QQ { album = Convert.ToString(tk.SelectToken("album.name")), albumid_qq = Convert.ToString(tk.SelectToken("album.id")), album_mid_qq = albumid, albumpic_qq = $"https://y.gtimg.cn/music/photo_new/T002R300x300M000{albumid}_1.jpg?max_age=2592000", musicid_qq = Convert.ToString(tk.SelectToken("id")), music_mid_qq = Convert.ToString(tk.SelectToken("mid")), name = Convert.ToString(tk.SelectToken("name")), time = TimeConverter.ToMinSecond(Convert.ToInt32(tk.SelectToken("interval")) * 1000), songStatue = GetMusicSattue(Convert.ToInt32(tk.SelectToken("pay.pay_play")), Convert.ToInt32(tk.SelectToken("pay.pay_down")), Convert.ToInt32(tk.SelectToken("pay.price_track"))), singers = GetSingers(tk.SelectTokens("singer[*]")) }); } } else { } } } catch (Exception ex) { throw ex; } Console.WriteLine(JsonConvert.SerializeObject(musics)); return(musics); }
/// <summary> /// 创建歌单 /// </summary> /// <param name="parms">0 歌单名</param> public override void CreateMusicList(params object[] parms) { LoginInfo_QQ temploginlinfo = (LoginInfo_QQ)logininfo; //标准头 HttpItem item = new HttpItem(); item.URL = $"https://c.y.qq.com/splcloud/fcgi-bin/create_playlist.fcg?g_tk={temploginlinfo.csrf_token}"; item.Postdata = $"loginUin={temploginlinfo.qqnum}&hostUin=0&format=json&inCharset=utf8&outCharset=utf8¬ice=0&platform=yqq&needNewCode=0&g_tk={temploginlinfo.csrf_token}&uin={temploginlinfo.qqnum}&name={parms[0]}&description=&show=1&pic_url=&tags=&tagids=&formsender=1&utf8=1&qzreferrer=https%3A%2F%2Fy.qq.com%2Fportal%2Fprofile.html%23sub%3Dother%26tab%3Dcreate%26"; item.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"; item.Referer = "https://y.qq.com/portal/profile.html"; item.ContentType = "application/x-www-form-urlencoded"; item.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; item.Cookie = logininfo.cookie; item.Method = "POST"; //自定义头 item.Header.Add("Accept-Encoding", "gzip, deflate"); String html = HttpMethod.HttpWork(item).Html; try { if (JsonConvert.DeserializeObject(html) is JObject jobj) { int code = Convert.ToInt32(jobj.SelectToken("code")); if (code == 0) { } else { } Console.WriteLine(html); } } catch (Exception ex) { throw ex; } }
/// <summary> /// /// </summary> /// <param name="parms">0 mid dirid</param> public override void AddMusicToList(params object[] parms) { LoginInfo_QQ temploginlinfo = (LoginInfo_QQ)logininfo; String targetid = (parms[0] as MusicList_QQ).dirid; var songs = from a in (parms[1] as List <IMusicInfo>)select(a as MusicInfo_QQ).music_mid_qq; //标准头 HttpItem item = new HttpItem(); item.URL = $"https://c.y.qq.com/splcloud/fcgi-bin/fcg_music_add2songdir.fcg?g_tk={temploginlinfo.csrf_token}&g_tk_new_20200303={temploginlinfo.csrf_token}"; item.Postdata = $"loginUin={temploginlinfo.qqnum}&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.post&needNewCode=0&uin={temploginlinfo.qqnum}&midlist={String.Join(",",songs)}&typelist={String.Join(",",from a in songs select "13")}&dirid={targetid}&addtype=&formsender=4&source=153&r2=0&r3=1&utf8=1&g_tk={temploginlinfo.csrf_token}"; item.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"; item.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; item.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; item.Cookie = logininfo.cookie; item.Method = "POST"; //自定义头 item.Header.Add("Accept-Encoding", "gzip, deflate"); String html = HttpMethod.HttpWork(item).Html; try { if (JsonConvert.DeserializeObject(html) is JObject jobj) { int code = Convert.ToInt32(jobj.SelectToken("code")); if (code == 0) { } else { } Console.WriteLine(html); } } catch (Exception ex) { throw ex; } }
public override bool CheckLogin(params object[] parms) { LoginInfo_QQ temploginlinfo = (LoginInfo_QQ)logininfo; return(!String.IsNullOrEmpty(temploginlinfo.qqmusic_key)); }