mirror of
https://github.com/jayfunc/BetterLyrics.git
synced 2026-01-12 19:08:33 +08:00
fix: auto asearch is not using cache for some cases
This commit is contained in:
@@ -50,6 +50,7 @@
|
||||
<converter:CornerRadiusToDoubleConverter x:Key="CornerRadiusToDoubleConverter" />
|
||||
<converter:LyricsSearchProviderToDisplayNameConverter x:Key="LyricsSearchProviderToDisplayNameConverter" />
|
||||
<converter:TranslationSearchProviderToDisplayNameConverter x:Key="TranslationSearchProviderToDisplayNameConverter" />
|
||||
<converter:TransliterationSearchProviderToDisplayNameConverter x:Key="TransliterationSearchProviderToDisplayNameConverter" />
|
||||
<converter:AlbumArtSearchProviderToDisplayNameConverter x:Key="AlbumArtSearchProviderToDisplayNameConverter" />
|
||||
<converter:SecondsToFormattedTimeConverter x:Key="SecondsToFormattedTimeConverter" />
|
||||
<converter:MillisecondsToFormattedTimeConverter x:Key="MillisecondsToFormattedTimeConverter" />
|
||||
|
||||
@@ -105,14 +105,6 @@
|
||||
<Run Text="*" />
|
||||
<Run x:Uid="ArtistsSplitHint" />
|
||||
</Paragraph>
|
||||
</RichTextBlock>
|
||||
|
||||
<RichTextBlock
|
||||
FontSize="12"
|
||||
FontWeight="Bold"
|
||||
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
|
||||
Loaded="ArtistsSplitHintRichTextBlock_Loaded"
|
||||
TextWrapping="Wrap">
|
||||
<Paragraph>
|
||||
<Run Text="; , / ; 、 ," />
|
||||
</Paragraph>
|
||||
|
||||
@@ -25,25 +25,5 @@ namespace BetterLyrics.WinUI3.Controls
|
||||
ViewModel.SelectedLyricsLine = e.OriginalSource as LyricsLine;
|
||||
}
|
||||
|
||||
private void ArtistsSplitHintRichTextBlock_Loaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
|
||||
{
|
||||
if (sender is RichTextBlock richTextBlock)
|
||||
{
|
||||
TextHighlighter highlighter = new()
|
||||
{
|
||||
Background = App.Current.Resources["AccentTextFillColorPrimaryBrush"] as SolidColorBrush,
|
||||
Ranges =
|
||||
{
|
||||
new() { StartIndex = 0, Length = 1 },
|
||||
new() { StartIndex = 5, Length = 1 },
|
||||
new() { StartIndex = 10, Length = 1 },
|
||||
new() { StartIndex = 15, Length = 1 },
|
||||
new() { StartIndex = 20, Length = 1 },
|
||||
new() { StartIndex = 25, Length = 1 },
|
||||
}
|
||||
};
|
||||
richTextBlock.TextHighlighters.Add(highlighter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -353,7 +353,8 @@
|
||||
Link="{x:Bind ViewModel.MediaSessionsService.CurrentLyricsSearchResult.Reference, Mode=OneWay}"
|
||||
ToolTipService.ToolTip="{x:Bind ViewModel.MediaSessionsService.CurrentLyricsSearchResult.Reference, TargetNullValue=N/A, Mode=OneWay}"
|
||||
Value="{x:Bind ViewModel.MediaSessionsService.CurrentLyricsSearchResult.ProviderIfFound, Mode=OneWay, Converter={StaticResource LyricsSearchProviderToDisplayNameConverter}}" />
|
||||
<local:PropertyRow x:Uid="LyricsPageTranslationProviderPrefix" Value="{x:Bind ViewModel.MediaSessionsService.TranslationSearchProvider, Mode=OneWay, Converter={StaticResource TranslationSearchProviderToDisplayNameConverter}}" />
|
||||
<local:PropertyRow x:Uid="LyricsPageTransliterationProviderPrefix" Value="{x:Bind ViewModel.MediaSessionsService.CurrentLyricsSearchResult.TransliterationProvider, Mode=OneWay, Converter={StaticResource TransliterationSearchProviderToDisplayNameConverter}}" />
|
||||
<local:PropertyRow x:Uid="LyricsPageTranslationProviderPrefix" Value="{x:Bind ViewModel.MediaSessionsService.CurrentLyricsSearchResult.TranslationProvider, Mode=OneWay, Converter={StaticResource TranslationSearchProviderToDisplayNameConverter}}" />
|
||||
<local:PropertyRow
|
||||
x:Uid="LyricsPageMatchPercentage"
|
||||
Unit="%"
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
using BetterLyrics.WinUI3.Enums;
|
||||
using BetterLyrics.WinUI3.Services.ResourceService;
|
||||
using CommunityToolkit.Mvvm.DependencyInjection;
|
||||
using Microsoft.UI.Xaml.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace BetterLyrics.WinUI3.Converter
|
||||
{
|
||||
public partial class TransliterationSearchProviderToDisplayNameConverter : IValueConverter
|
||||
{
|
||||
private readonly IResourceService _resourceService = Ioc.Default.GetRequiredService<IResourceService>();
|
||||
|
||||
public object Convert(object value, Type targetType, object parameter, string language)
|
||||
{
|
||||
if (value is TransliterationSearchProvider provider)
|
||||
{
|
||||
return provider switch
|
||||
{
|
||||
TransliterationSearchProvider.LrcLib => "LrcLib",
|
||||
TransliterationSearchProvider.QQ => "QQ 音乐",
|
||||
TransliterationSearchProvider.Netease => "网易云音乐",
|
||||
TransliterationSearchProvider.Kugou => "酷狗音乐",
|
||||
TransliterationSearchProvider.AmllTtmlDb => "amll-ttml-db",
|
||||
TransliterationSearchProvider.AppleMusic => "Apple Music",
|
||||
TransliterationSearchProvider.LocalLrcFile => _resourceService.GetLocalizedString("LyricsSearchProviderLocalLrcFile"),
|
||||
TransliterationSearchProvider.LocalMusicFile => _resourceService.GetLocalizedString("LyricsSearchProviderLocalMusicFile"),
|
||||
TransliterationSearchProvider.LocalEslrcFile => _resourceService.GetLocalizedString("LyricsSearchProviderEslrcFile"),
|
||||
TransliterationSearchProvider.LocalTtmlFile => _resourceService.GetLocalizedString("LyricsSearchProviderTtmlFile"),
|
||||
TransliterationSearchProvider.BetterLyrics => "BetterLyrics",
|
||||
_ => "N/A",
|
||||
};
|
||||
}
|
||||
return "N/A";
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, string language)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
namespace BetterLyrics.WinUI3.Enums
|
||||
{
|
||||
public enum TransliterationSearchProvider
|
||||
{
|
||||
QQ,
|
||||
Kugou,
|
||||
Netease,
|
||||
LrcLib,
|
||||
AmllTtmlDb,
|
||||
AppleMusic,
|
||||
LocalMusicFile,
|
||||
LocalLrcFile,
|
||||
LocalEslrcFile,
|
||||
LocalTtmlFile,
|
||||
BetterLyrics
|
||||
}
|
||||
}
|
||||
@@ -59,6 +59,21 @@ namespace BetterLyrics.WinUI3.Extensions
|
||||
LyricsSearchProvider.LocalTtmlFile => TranslationSearchProvider.LocalTtmlFile,
|
||||
_ => null,
|
||||
};
|
||||
|
||||
public TransliterationSearchProvider? ToTransliterationSearchProvider() => provider switch
|
||||
{
|
||||
LyricsSearchProvider.LrcLib => TransliterationSearchProvider.LrcLib,
|
||||
LyricsSearchProvider.QQ => TransliterationSearchProvider.QQ,
|
||||
LyricsSearchProvider.Kugou => TransliterationSearchProvider.Kugou,
|
||||
LyricsSearchProvider.Netease => TransliterationSearchProvider.Netease,
|
||||
LyricsSearchProvider.AmllTtmlDb => TransliterationSearchProvider.AmllTtmlDb,
|
||||
LyricsSearchProvider.AppleMusic => TransliterationSearchProvider.AppleMusic,
|
||||
LyricsSearchProvider.LocalMusicFile => TransliterationSearchProvider.LocalMusicFile,
|
||||
LyricsSearchProvider.LocalLrcFile => TransliterationSearchProvider.LocalLrcFile,
|
||||
LyricsSearchProvider.LocalEslrcFile => TransliterationSearchProvider.LocalEslrcFile,
|
||||
LyricsSearchProvider.LocalTtmlFile => TransliterationSearchProvider.LocalTtmlFile,
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ namespace BetterLyrics.WinUI3.Models
|
||||
public partial class LyricsSearchResult : ObservableObject, ICloneable
|
||||
{
|
||||
public LyricsSearchProvider Provider { get; set; }
|
||||
public TranslationSearchProvider? TranslationProvider { get; set; }
|
||||
public TransliterationSearchProvider? TransliterationProvider { get; set; }
|
||||
|
||||
public string? Raw { get; set; }
|
||||
|
||||
|
||||
@@ -89,6 +89,14 @@ namespace BetterLyrics.WinUI3.Parsers.LyricsParser
|
||||
if (found != null)
|
||||
{
|
||||
main.SetPhoneticText(found);
|
||||
if (found.AutoGenerated)
|
||||
{
|
||||
lyricsSearchResult?.TransliterationProvider = TransliterationSearchProvider.BetterLyrics;
|
||||
}
|
||||
else
|
||||
{
|
||||
lyricsSearchResult?.TransliterationProvider = lyricsSearchResult?.Provider.ToTransliterationSearchProvider();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,6 +107,7 @@ namespace BetterLyrics.WinUI3.Parsers.LyricsParser
|
||||
if (found != null)
|
||||
{
|
||||
main.SetTranslatedText(found);
|
||||
lyricsSearchResult?.TranslationProvider = lyricsSearchResult?.Provider.ToTranslationSearchProvider();
|
||||
}
|
||||
else if (settings.IsLibreTranslateEnabled)
|
||||
{
|
||||
@@ -107,7 +116,7 @@ namespace BetterLyrics.WinUI3.Parsers.LyricsParser
|
||||
{
|
||||
translated = await translateService.TranslateTextAsync(main.WrappedOriginalText, settings.SelectedTargetLanguageCode, token);
|
||||
_lyricsDataArr.FirstOrDefault()?.SetTranslation(translated);
|
||||
//lyricsSearchResult = Enums.TranslationSearchProvider.LibreTranslate;
|
||||
lyricsSearchResult?.TranslationProvider = TranslationSearchProvider.LibreTranslate;
|
||||
}
|
||||
catch (TaskCanceledException) { }
|
||||
catch (Exception)
|
||||
|
||||
@@ -37,7 +37,6 @@ namespace BetterLyrics.WinUI3.Services.MediaSessionsService
|
||||
|
||||
Task<AlbumArtThemeColors> CalculateAlbumArtThemeColorsAsync(LyricsWindowStatus lyricsWindowStatus, Color backdropAccentColor);
|
||||
|
||||
TranslationSearchProvider? TranslationSearchProvider { get; }
|
||||
LyricsSearchResult? CurrentLyricsSearchResult { get; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,10 +27,6 @@ namespace BetterLyrics.WinUI3.Services.MediaSessionsService
|
||||
|
||||
[ObservableProperty] public partial LyricsSearchResult? CurrentLyricsSearchResult { get; private set; }
|
||||
|
||||
[ObservableProperty][NotifyPropertyChangedRecipients] public partial TranslationSearchProvider? TranslationSearchProvider { get; private set; }
|
||||
|
||||
[ObservableProperty] public partial bool IsTranslating { get; set; } = false;
|
||||
|
||||
private async Task RefreshLyricsAsync(CancellationToken token)
|
||||
{
|
||||
_logger.LogInformation("RefreshLyricsAsync");
|
||||
@@ -42,7 +38,7 @@ namespace BetterLyrics.WinUI3.Services.MediaSessionsService
|
||||
{
|
||||
CurrentLyricsSearchResult = await Task.Run(async () => await _lyrcsSearchService.SearchSmartlyAsync(
|
||||
CurrentSongInfo,
|
||||
!_settingsService.AppSettings.GeneralSettings.IgnoreCacheWhenSearching,
|
||||
true,
|
||||
CurrentMediaSourceProviderInfo?.LyricsSearchType,
|
||||
token),
|
||||
token);
|
||||
|
||||
@@ -279,6 +279,9 @@
|
||||
<data name="LyricsPageTranslationProviderPrefix.Header" xml:space="preserve">
|
||||
<value>Translation provider</value>
|
||||
</data>
|
||||
<data name="LyricsPageTransliterationProviderPrefix.Header" xml:space="preserve">
|
||||
<value>Transliteration source</value>
|
||||
</data>
|
||||
<data name="LyricsParseError" xml:space="preserve">
|
||||
<value>Lyrics parsing failed</value>
|
||||
</data>
|
||||
|
||||
@@ -279,6 +279,9 @@
|
||||
<data name="LyricsPageTranslationProviderPrefix.Header" xml:space="preserve">
|
||||
<value>翻訳プロバイダー</value>
|
||||
</data>
|
||||
<data name="LyricsPageTransliterationProviderPrefix.Header" xml:space="preserve">
|
||||
<value>文字起こしソース</value>
|
||||
</data>
|
||||
<data name="LyricsParseError" xml:space="preserve">
|
||||
<value>歌詞の解析に失敗しました</value>
|
||||
</data>
|
||||
|
||||
@@ -279,6 +279,9 @@
|
||||
<data name="LyricsPageTranslationProviderPrefix.Header" xml:space="preserve">
|
||||
<value>번역 제공자</value>
|
||||
</data>
|
||||
<data name="LyricsPageTransliterationProviderPrefix.Header" xml:space="preserve">
|
||||
<value>음역 소스</value>
|
||||
</data>
|
||||
<data name="LyricsParseError" xml:space="preserve">
|
||||
<value>가사 구문 분석에 실패했습니다</value>
|
||||
</data>
|
||||
|
||||
@@ -279,6 +279,9 @@
|
||||
<data name="LyricsPageTranslationProviderPrefix.Header" xml:space="preserve">
|
||||
<value>翻译来源</value>
|
||||
</data>
|
||||
<data name="LyricsPageTransliterationProviderPrefix.Header" xml:space="preserve">
|
||||
<value>音译来源</value>
|
||||
</data>
|
||||
<data name="LyricsParseError" xml:space="preserve">
|
||||
<value>歌词解析失败</value>
|
||||
</data>
|
||||
|
||||
@@ -279,6 +279,9 @@
|
||||
<data name="LyricsPageTranslationProviderPrefix.Header" xml:space="preserve">
|
||||
<value>翻譯來源</value>
|
||||
</data>
|
||||
<data name="LyricsPageTransliterationProviderPrefix.Header" xml:space="preserve">
|
||||
<value>音譯來源</value>
|
||||
</data>
|
||||
<data name="LyricsParseError" xml:space="preserve">
|
||||
<value>歌詞解析失敗</value>
|
||||
</data>
|
||||
|
||||
Reference in New Issue
Block a user