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);
            }
        }
示例#2
0
 public LyricProvider(SourceProviderBase provider, LyricProvideType provideType)
 {
     _sourceProvider = provider;
     ProvideType     = provideType;
 }
示例#3
0
 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);
        }