mirror of
https://github.com/real-zony/ZonyLrcToolsX.git
synced 2025-07-01 20:30:41 +00:00
fix: Fixed some unhandled exceptions.
This commit is contained in:
parent
ab5f79bd50
commit
788ff38be2
@ -18,6 +18,6 @@ namespace ZonyLrcTools.Common.Lyrics
|
|||||||
/// <param name="sourceLyric">原始歌词数据。</param>
|
/// <param name="sourceLyric">原始歌词数据。</param>
|
||||||
/// <param name="translationLyric">翻译歌词数据。</param>
|
/// <param name="translationLyric">翻译歌词数据。</param>
|
||||||
/// <returns>构建完成的 <see cref="LyricsItemCollection"/> 对象。</returns>
|
/// <returns>构建完成的 <see cref="LyricsItemCollection"/> 对象。</returns>
|
||||||
LyricsItemCollection Build(string sourceLyric, string translationLyric);
|
LyricsItemCollection Build(string sourceLyric, string? translationLyric);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -30,7 +30,7 @@ namespace ZonyLrcTools.Common.Lyrics
|
|||||||
return lyric;
|
return lyric;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LyricsItemCollection Build(string sourceLyric, string translationLyric)
|
public LyricsItemCollection Build(string sourceLyric, string? translationLyric)
|
||||||
{
|
{
|
||||||
var lyric = new LyricsItemCollection(_options.Provider.Lyric.Config);
|
var lyric = new LyricsItemCollection(_options.Provider.Lyric.Config);
|
||||||
if (string.IsNullOrEmpty(sourceLyric))
|
if (string.IsNullOrEmpty(sourceLyric))
|
||||||
|
@ -15,7 +15,7 @@ public class GetLyricsResponse
|
|||||||
|
|
||||||
public class GetLyricsResponseInnerData
|
public class GetLyricsResponseInnerData
|
||||||
{
|
{
|
||||||
[JsonProperty("lrclist")] public ICollection<GetLyricsItem> Lyrics { get; set; }
|
[JsonProperty("lrclist")] public ICollection<GetLyricsItem>? Lyrics { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GetLyricsItem
|
public class GetLyricsItem
|
||||||
|
@ -60,6 +60,11 @@ public class KuWoLyricsProvider : LyricsProvider
|
|||||||
await ValueTask.CompletedTask;
|
await ValueTask.CompletedTask;
|
||||||
|
|
||||||
var lyricsResponse = (GetLyricsResponse)lyricsObject;
|
var lyricsResponse = (GetLyricsResponse)lyricsObject;
|
||||||
|
if (lyricsResponse.Data.Lyrics == null)
|
||||||
|
{
|
||||||
|
return new LyricsItemCollection(null);
|
||||||
|
}
|
||||||
|
|
||||||
var items = lyricsResponse.Data.Lyrics.Select(l =>
|
var items = lyricsResponse.Data.Lyrics.Select(l =>
|
||||||
{
|
{
|
||||||
var position = double.Parse(l.Position);
|
var position = double.Parse(l.Position);
|
||||||
|
@ -20,7 +20,7 @@ namespace ZonyLrcTools.Common.Lyrics.Providers.NetEase.JsonModel
|
|||||||
/// 如果存在翻译歌词,则本项内容为翻译歌词。
|
/// 如果存在翻译歌词,则本项内容为翻译歌词。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonProperty("tlyric")]
|
[JsonProperty("tlyric")]
|
||||||
public InnerLyric TranslationLyric { get; set; }
|
public InnerLyric? TranslationLyric { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 如果存在罗马音歌词,则本项内容为罗马音歌词。
|
/// 如果存在罗马音歌词,则本项内容为罗马音歌词。
|
||||||
|
@ -10,11 +10,6 @@ namespace ZonyLrcTools.Common.Lyrics.Providers.NetEase.JsonModel
|
|||||||
|
|
||||||
public int GetFirstMatchSongId(string songName, long? duration)
|
public int GetFirstMatchSongId(string songName, long? duration)
|
||||||
{
|
{
|
||||||
if (Items == null || Items.SongItems == null)
|
|
||||||
{
|
|
||||||
Console.Write("xx");
|
|
||||||
}
|
|
||||||
|
|
||||||
var perfectMatch = Items.SongItems.FirstOrDefault(x => x.Name == songName);
|
var perfectMatch = Items.SongItems.FirstOrDefault(x => x.Name == songName);
|
||||||
if (perfectMatch != null)
|
if (perfectMatch != null)
|
||||||
{
|
{
|
||||||
|
@ -76,7 +76,7 @@ namespace ZonyLrcTools.Common.Lyrics.Providers.NetEase
|
|||||||
|
|
||||||
return _lyricsItemCollectionFactory.Build(
|
return _lyricsItemCollectionFactory.Build(
|
||||||
json.OriginalLyric.Text,
|
json.OriginalLyric.Text,
|
||||||
json.TranslationLyric.Text);
|
json.TranslationLyric?.Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void ValidateSongSearchResponse(SongSearchResponse response, LyricsProviderArgs args)
|
protected virtual void ValidateSongSearchResponse(SongSearchResponse response, LyricsProviderArgs args)
|
||||||
|
@ -25,4 +25,13 @@ public class KuWoLyricsProviderTests : TestBase
|
|||||||
lyric.ShouldNotBeNull();
|
lyric.ShouldNotBeNull();
|
||||||
lyric.IsPruneMusic.ShouldBeFalse();
|
lyric.IsPruneMusic.ShouldBeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task DownloadAsync_Source_Null_Test()
|
||||||
|
{
|
||||||
|
var lyric = await _kuwoLyricsProvider.DownloadAsync("Concerto for Piano and Orchestra No. 12 in A major, K414 - 1. Allegro",
|
||||||
|
"Wolfgang Amadeus Mozart");
|
||||||
|
|
||||||
|
lyric.IsPruneMusic.ShouldBeTrue();
|
||||||
|
}
|
||||||
}
|
}
|
@ -120,5 +120,14 @@ namespace ZonyLrcTools.Tests.Infrastructure.Lyrics
|
|||||||
var result = await Should.ThrowAsync<ErrorCodeException>(_lyricsProvider.DownloadAsync("創世記", "りりィ").AsTask);
|
var result = await Should.ThrowAsync<ErrorCodeException>(_lyricsProvider.DownloadAsync("創世記", "りりィ").AsTask);
|
||||||
result.ErrorCode.ShouldBe(ErrorCodes.NoMatchingSong);
|
result.ErrorCode.ShouldBe(ErrorCodes.NoMatchingSong);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task DownloadAsync_Source_Null_Test()
|
||||||
|
{
|
||||||
|
var lyric = await _lyricsProvider.DownloadAsync("Concerto for Piano and Orchestra No. 12 in A major, K414 - 1. Allegro",
|
||||||
|
"Wolfgang Amadeus Mozart");
|
||||||
|
|
||||||
|
lyric.IsPruneMusic.ShouldBeTrue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user