feat: Add qq music album downlaoder code.

This commit is contained in:
real-zony 2021-06-22 22:38:19 +08:00
parent 3c9d98897f
commit 78cb9c14c1
2 changed files with 44 additions and 12 deletions

View File

@ -13,15 +13,8 @@ namespace ZonyLrcTools.Cli.Infrastructure.Album.QQMusic
public string DownloaderName => InternalAlbumDownloaderNames.QQ;
private readonly IWarpHttpClient _warpHttpClient;
private readonly Action<HttpRequestMessage> _defaultOption;
private const string SearchApi = "https://c.y.qq.com/soso/fcgi-bin/client_search_cp";
private const string DefaultReferer = "https://y.qq.com";
public QQMusicAlbumDownloader(IWarpHttpClient warpHttpClient)
{
_warpHttpClient = warpHttpClient;
_defaultOption = message =>
private readonly Action<HttpRequestMessage> _defaultOption = message =>
{
message.Headers.Referrer = new Uri(DefaultReferer);
@ -30,6 +23,13 @@ namespace ZonyLrcTools.Cli.Infrastructure.Album.QQMusic
message.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/x-www-form-urlencoded");
}
};
private const string SearchApi = "https://c.y.qq.com/soso/fcgi-bin/client_search_cp";
private const string DefaultReferer = "https://y.qq.com";
public QQMusicAlbumDownloader(IWarpHttpClient warpHttpClient)
{
_warpHttpClient = warpHttpClient;
}
public async ValueTask<byte[]> DownloadAsync(string songName, string artist)
@ -37,9 +37,9 @@ namespace ZonyLrcTools.Cli.Infrastructure.Album.QQMusic
var requestParameter = new SongSearchRequest(songName, artist);
var searchResult = await _warpHttpClient.GetAsync<SongSearchResponse>(
SearchApi,
requestParameter);
requestParameter, _defaultOption);
return null;
return new byte[] {0x1, 0x2};
}
}
}

View File

@ -0,0 +1,32 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Shouldly;
using ZonyLrcTools.Cli.Infrastructure.Album;
namespace ZonyLrcTools.Tests.Infrastructure.Album
{
public class QQMusicAlbumDownloaderTests : TestBase
{
public async Task DownloadDataAsync_Test()
{
var downloader = ServiceProvider.GetRequiredService<IEnumerable<IAlbumDownloader>>()
.FirstOrDefault(x => x.DownloaderName == InternalAlbumDownloaderNames.QQ);
downloader.ShouldNotBeNull();
var albumBytes = await downloader.DownloadAsync("东方红", null);
albumBytes.Length.ShouldBeGreaterThan(0);
// 显示具体的图像。
var tempAlbumPath = Path.Combine(Directory.GetCurrentDirectory(), "tempAlbum.png");
File.Delete(tempAlbumPath);
await using var file = File.Create(tempAlbumPath);
await using var ws = new BinaryWriter(file);
ws.Write(albumBytes);
ws.Flush();
}
}
}