fix: Fixed the index exception that may be caused by the KuGou music provider.

This commit is contained in:
real-zony 2023-04-16 23:52:57 +08:00
parent 949dac7ad1
commit 493f48cefe
2 changed files with 20 additions and 1 deletions

View File

@ -40,6 +40,11 @@ namespace ZonyLrcTools.Common.Lyrics.Providers.KuGou
var accessKeyResponse = await _warpHttpClient.GetAsync<GetLyricAccessKeyResponse>(KuGouGetLyricAccessKeyUrl,
new GetLyricAccessKeyRequest(searchResult.Data.List[0].FileHash));
if (accessKeyResponse.AccessKeyDataObjects.Count == 0)
{
throw new ErrorCodeException(ErrorCodes.NoMatchingSong, attachObj: args);
}
var accessKeyObject = accessKeyResponse.AccessKeyDataObjects[0];
return await _warpHttpClient.GetAsync(KuGouGetLyricUrl,
new GetLyricRequest(accessKeyObject.Id, accessKeyObject.AccessKey));
@ -60,7 +65,7 @@ namespace ZonyLrcTools.Common.Lyrics.Providers.KuGou
protected virtual void ValidateSongSearchResponse(SongSearchResponse response, LyricsProviderArgs args)
{
if (response.ErrorCode != 0 && response.Status != 1 || response.Data.List == null)
if ((response.ErrorCode != 0 && response.Status != 1) || response.Data.List.Count == 0)
{
throw new ErrorCodeException(ErrorCodes.NoMatchingSong, attachObj: args);
}

View File

@ -3,6 +3,7 @@ using System.Linq;
using System.Threading.Tasks;
using Shouldly;
using Xunit;
using ZonyLrcTools.Common.Infrastructure.Exceptions;
using ZonyLrcTools.Common.Lyrics;
namespace ZonyLrcTools.Tests.Infrastructure.Lyrics
@ -25,5 +26,18 @@ namespace ZonyLrcTools.Tests.Infrastructure.Lyrics
lyric.ShouldNotBeNull();
lyric.IsPruneMusic.ShouldBe(false);
}
[Fact]
public async Task DownloadAsync_Issue133_Test()
{
await Should.ThrowAsync<ErrorCodeException>(_lyricsProvider.DownloadAsync("天ノ弱", "漆柚").AsTask);
}
[Fact]
public async Task DownloadAsync_Index_Exception_Test()
{
var lyric = await _lyricsProvider.DownloadAsync("40'z", "ZOOLY");
lyric.ToString().ShouldNotBeNullOrEmpty();
}
}
}