Services/Music/KGMusicService.cs

(开头部分) 3KB

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

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

namespace LisMusic.Services
{
    public class KGMusicService : MusicHttpClient, IALLMusicService
    {
        private readonly MusicSource _musicSource = MusicSource.KG;
        private readonly string KgMid;
        private readonly string KgDFID;

        //参数:<<KeyWord>>
        const string urlGetMusicList = "https://songsearch.kugou.com/song_search_v2?&keyword={0}&platform=WebFilter";
        //参数:<<FileHash>> <<kgDFID>> <<KgMid>>
        const string urlGetMusicDownloadUrl = "https://wwwapi.kugou.com/yy/index.php?r=play/getdata&hash={0}&dfid={1}&mid={2}";

        public KGMusicService(HttpClient httpClient, IConfiguration configuration) : base(httpClient)
        {
            //httpClient.BaseAddress = new Uri("https://songsearch.kugou.com");

            KgMid = configuration.GetValue<string>("MusicSettings:Kg:mid");
            KgDFID = configuration.GetValue<string>("MusicSettings:Kg:dfid");
        }

        public MusicSource MusicSource => _musicSource;

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

            try
            {
                string url = string.Format(urlGetMusicList, keyWord);
                string str = await base.GetAsync(url);
                JObject jo = JObject.Parse(str);
                for (int i = 0; i < jo["data"]["lists"].Count(); i++)
                {
                    bool bolCanDownload = true;
                    if (jo["data"]["lists"][i]["trans_param"]["musicpack_advance"].ToString() == "1") //该字段为1,则为收费,不可下载
                        bolCanDownload = false;

                    MusicInfo musicInfo = new MusicInfo() { Name = jo["data"]["lists"][i]["SongName"].ToString(), Singer = jo["data"]["lists"][i]["SingerName"].ToString(), Album = jo["data"]["lists"][i]["AlbumName"].ToString(), DownloadInfo = jo["data"]["lists"][i]["FileHash"].ToString(), CanDownload = bolCanDownload, MusicSource = MusicSource.KG };

                    musicInfos.Add(musicInfo);
                }
            }
            catch { }

            return musicInfos;
        }

后面还有 40 行代码,解锁后查看完整代码

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

AI 解读 AI

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

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