示例#1
0
 public string DownloadLrc(ExternalLrcInfo result)
 {
     lock (host)
     {
         return((string)host.CallFunction("downloadLrc", result));
     }
 }
示例#2
0
        /// <summary>
        /// Fetch lyrics by <see cref="ExternalLrcInfo"/> from
        /// previous call of <see cref="FetchLyricsAsync(string, string, IList{ExternalLrcInfo})"/>.
        /// </summary>
        /// <param name="info">Obtained from previous call</param>
        /// <returns>Parsed lyrics</returns>
        public static async Task <ParsedLrc> FetchLyricsAsync(ExternalLrcInfo info, string cacheName)
        {
            if (info == null)
            {
                throw new ArgumentNullException(nameof(info));
            }

            var source = info.Source;

            if (string.IsNullOrEmpty(source))
            {
                throw new ArgumentNullException(nameof(info.Source), "Where do you come from?");
            }

            var s       = SourceScriptManager.GetScript(source);
            var lrcText = await s.DownloadLrcAsync(info);

            await SaveLyricsInternalAsync(
                await GetLyricsSaveFolderAsync(),
                cacheName, lrcText);

            if (!string.IsNullOrEmpty(lrcText))
            {
                try
                {
                    return(LrcParser.Parse(lrcText));
                }
                catch { }
            }

            return(null);
        }
示例#3
0
 public async Task <string> DownloadLrcAsync(ExternalLrcInfo result)
 {
     return(await Task.Run(() => DownloadLrc(result)));
 }