private void Init() { Setting.DebugMode = bool.Parse(DebugMode); Setting.BothLyrics = bool.Parse(BothLyrics); Setting.EnableOutputSearchResult = bool.Parse(EnableOutputSearchResult); Setting.PreferTranslateLyrics = bool.Parse(PreferTranslateLyrics); Setting.LyricsSource = LyricsSource; Setting.LyricsSentenceOutputPath = LyricsSentenceOutputPath; Setting.SearchAndDownloadTimeout = int.Parse(SearchAndDownloadTimeout); Setting.GobalTimeOffset = int.Parse(GobalTimeOffset); Setting.ForceKeepTime = uint.Parse(ForceKeepTime); Setting.StrictMatch = bool.Parse(StrictMatch); Setting.UseStaticLyricsCombine = bool.Parse(UseStaticLyricsCombine); if (Setting.PreferTranslateLyrics) { Utils.Output("优先选择翻译歌词", ConsoleColor.Green); } Utils.Debug("调试模式已开启"); //初始化歌词源管理器,从所有dll里面获取可用的歌词源 ScanAvaliableLyricsSourceProvider(); //加载指定的歌词源 lyrics_provider = SourceProviderManager.GetOrCreateSourceProvier(LyricsSource); if (lyrics_provider == null) { Utils.Output("未知歌词源:" + LyricsSource, ConsoleColor.Red); } Utils.Output($"已选择歌词源:({LyricsSource}){lyrics_provider.GetType().Name}", ConsoleColor.Green); output = OutputBase.Create(LyricsSentenceOutputPath); if (output is MemoryMappedFileOutput mmf) { Utils.Output($"歌词文本将输出到内存映射文件:{mmf.FilePath.Replace(MemoryMappedFileOutput.MMF_FORMAT,"")}", ConsoleColor.Green); } }
public LyricProvider(SourceProviderBase provider, LyricProvideType provideType) { _sourceProvider = provider; ProvideType = provideType; }
public LyricProvider(SourceProviderBase provider, ProvideTypeEnum provideType, bool strictMode) { _sourceProvider = provider; _strictMode = strictMode; ProvideType = provideType; }
public Lyrics GetLyricFromExcplictSource(SourceProviderBase provider, string artist, string title, int time, bool request_trans_lyrics) { var lyrics = provider.ProvideLyric(artist, title, time, request_trans_lyrics); return(lyrics); }
public Lyrics GetLyricFromAnySource(string artist, string title, int time, bool request_trans_lyrics, out SourceProviderBase provider) { var cancel_source = new System.Threading.CancellationTokenSource(); var tasks = search_engines.Select(l => Task.Run(() => (l.ProvideLyric(artist, title, time, request_trans_lyrics), l), cancel_source.Token)); provider = null; foreach (var task in tasks) { var result = task.Result; var lyrics = result.Item1; if (lyrics == null) { continue; } try { cancel_source.Cancel(); } catch { } provider = result.l; Utils.Debug($"Quick select lyric from {result.l.GetType().Name}"); return(lyrics); } return(null); }