mirror of
https://github.com/real-zony/ZonyLrcToolsX.git
synced 2025-07-01 20:30:41 +00:00
Fixed tag info provider bug.
This commit is contained in:
parent
be68b3474c
commit
969d5e9e19
@ -16,9 +16,11 @@ namespace ZonyLrcTools.Cli.Infrastructure.Tag
|
|||||||
{
|
{
|
||||||
protected readonly IEnumerable<ITagInfoProvider> TagInfoProviders;
|
protected readonly IEnumerable<ITagInfoProvider> TagInfoProviders;
|
||||||
protected readonly IBlockWordDictionary BlockWordDictionary;
|
protected readonly IBlockWordDictionary BlockWordDictionary;
|
||||||
protected readonly ILogger<DefaultTagLoader> _logger;
|
protected readonly ILogger<DefaultTagLoader> Logger;
|
||||||
|
|
||||||
protected ToolOptions Options;
|
protected ToolOptions Options;
|
||||||
|
|
||||||
|
private readonly IEnumerable<ITagInfoProvider> _sortedTagInfoProviders;
|
||||||
|
|
||||||
public DefaultTagLoader(IEnumerable<ITagInfoProvider> tagInfoProviders,
|
public DefaultTagLoader(IEnumerable<ITagInfoProvider> tagInfoProviders,
|
||||||
IBlockWordDictionary blockWordDictionary,
|
IBlockWordDictionary blockWordDictionary,
|
||||||
@ -27,18 +29,15 @@ namespace ZonyLrcTools.Cli.Infrastructure.Tag
|
|||||||
{
|
{
|
||||||
TagInfoProviders = tagInfoProviders;
|
TagInfoProviders = tagInfoProviders;
|
||||||
BlockWordDictionary = blockWordDictionary;
|
BlockWordDictionary = blockWordDictionary;
|
||||||
_logger = logger;
|
Logger = logger;
|
||||||
Options = options.Value;
|
Options = options.Value;
|
||||||
|
|
||||||
|
_sortedTagInfoProviders = GetTagInfoProviders();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual async ValueTask<MusicInfo> LoadTagAsync(string filePath)
|
public virtual async ValueTask<MusicInfo> LoadTagAsync(string filePath)
|
||||||
{
|
{
|
||||||
if (!TagInfoProviders.Any())
|
foreach (var provider in _sortedTagInfoProviders)
|
||||||
{
|
|
||||||
throw new ErrorCodeException(ErrorCodes.LoadTagInfoProviderError);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var provider in TagInfoProviders)
|
|
||||||
{
|
{
|
||||||
var info = await provider.LoadAsync(filePath);
|
var info = await provider.LoadAsync(filePath);
|
||||||
if (info != null)
|
if (info != null)
|
||||||
@ -48,11 +47,24 @@ namespace ZonyLrcTools.Cli.Infrastructure.Tag
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.LogWarning($"{filePath} 没有找到正确的标签信息,请考虑调整正则表达式。");
|
Logger.LogWarning($"{filePath} 没有找到正确的标签信息,请考虑调整正则表达式。");
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IEnumerable<ITagInfoProvider> GetTagInfoProviders()
|
||||||
|
{
|
||||||
|
if (!TagInfoProviders.Any())
|
||||||
|
{
|
||||||
|
throw new ErrorCodeException(ErrorCodes.LoadTagInfoProviderError);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Options.Provider.Tag.Plugin
|
||||||
|
.Where(x => x.Priority != -1)
|
||||||
|
.OrderBy(x => x.Priority)
|
||||||
|
.Join(TagInfoProviders,x=>x.Name,y=>y.Name,(x,y)=>y);
|
||||||
|
}
|
||||||
|
|
||||||
protected void HandleBlockWord(MusicInfo info)
|
protected void HandleBlockWord(MusicInfo info)
|
||||||
{
|
{
|
||||||
if (Options.Provider.Tag.BlockWord.IsEnable)
|
if (Options.Provider.Tag.BlockWord.IsEnable)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user