Exemple #1
0
        /// <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&notice=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);
        }
Exemple #2
0
        /// <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&notice=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);
        }
Exemple #3
0
        /// <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&notice=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;
            }
        }
Exemple #4
0
        /// <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&notice=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;
            }
        }
Exemple #5
0
        public override bool CheckLogin(params object[] parms)
        {
            LoginInfo_QQ temploginlinfo = (LoginInfo_QQ)logininfo;

            return(!String.IsNullOrEmpty(temploginlinfo.qqmusic_key));
        }