Beispiel #1
0
        public async ValueTask <byte[]> DownloadAsync(string songName, string artist)
        {
            var requestParameter = new SongSearchRequest(songName, artist);
            var searchResult     = await _warpHttpClient.PostAsync <SongSearchResponse>(
                SearchMusicApi,
                requestParameter,
                true,
                _defaultOption);

            if (searchResult is not {
                StatusCode : 200
            } || searchResult.Items?.SongCount <= 0)
Beispiel #2
0
        protected override async ValueTask <byte[]> DownloadDataAsync(LyricDownloaderArgs args)
        {
            var searchResult = await _warpHttpClient.PostAsync <SongSearchResponse>(
                NetEaseSearchMusicUrl,
                new SongSearchRequest(args.SongName, args.Artist),
                true,
                msg =>
            {
                msg.Headers.Referrer = new Uri(NetEaseRequestReferer);
                if (msg.Content != null)
                {
                    msg.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(NetEaseRequestContentType);
                }
            });

            ValidateSongSearchResponse(searchResult, args);

            var lyricResponse = await _warpHttpClient.GetAsync(
                NetEaseGetLyricUrl,
                new GetLyricRequest(searchResult.GetFirstMatchSongId(args.SongName)),
                msg => msg.Headers.Referrer = new Uri(NetEaseRequestReferer));

            return(Encoding.UTF8.GetBytes(lyricResponse));
        }