Services/Music/KWMusicService.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using LisMusic.Common;
using LisMusic.Models;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

namespace LisMusic.Services
{
    public class KWMusicService : MusicHttpClient, IALLMusicService
    {
        private readonly MusicSource _musicSource = MusicSource.KW;

        //参数:<<KeyWord>>
        const string urlGetMusicList1 = "http://www.kuwo.cn/search/list?key={0}";//新搜索,分两步,两个url
        const string urlGetMusicList2 = "http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={0}&pn=1&rn=30&reqId=";
        //const string urlGetMusicList = "http://sou.kuwo.cn/ws/NSearch?type=music&key={0}";//旧搜索URL,返回html
        //参数:<<MUSICID>> //旧下载接口,可下vip
        const string urlGetMusicDownloadUrl = "http://antiserver.kuwo.cn/anti.s?format=mp3|mp3&rid={0}&type=convert_url&response=res";

        public KWMusicService(HttpClient httpClient) : base(httpClient)
        {
            //httpClient.BaseAddress = new Uri("http://sou.kuwo.cn");
        }
        public MusicSource MusicSource => _musicSource;


        public async Task<List<MusicInfo>> GetMusicListAsync(string keyWord)
        {
            List<MusicInfo> musicInfos = new List<MusicInfo>();

            try
            {
                //第一步,获取 头部csrf
                string url1 = string.Format(urlGetMusicList1, keyWord);
                await base.GetAsync(url1);
                string strKwToken = base.GetCookie("kw_token");
                //第二步,获取 列表
                string url2 = string.Format(urlGetMusicList2, keyWord);
                HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Get, url2);
                message.Headers.Add("Referer", url1);
                message.Headers.Add("csrf", strKwToken);
                string str = await base.SendAsync(message);
                //解析列表
                JObject jo = JObject.Parse(str);
                for (int i = 0; i < jo["data"]["list"].Count(); i++)
                {
                    bool bolCanDownload = true;
                    //旧接口下载,高品质而且vip可下
                    //if (jo["data"]["lists"][i]["pay"].ToString() == "16711935") //该字段为16711935,则为收费,不可下载
                    //    bolCanDownload = false;

                    MusicInfo musicInfo = new MusicInfo() { Name = jo["data"]["list"][i]["name"].ToString(), Singer = jo["data"]["list"][i]["artist"].ToString(), Album = jo["data"]["list"][i]["album"].ToString(), DownloadInfo = jo["data"]["list"][i]["musicrid"].ToString(), CanDownload = bolCanDownload, MusicSource = MusicSource.KW };

                    musicInfos.Add(musicInfo);
                }
后面还有 34 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。