private void setSubtitleText(VideoInfo video, ITrackingInfo it) { ISubtitleDownloader sd = (ISubtitleDownloader)sdObject; List <Subtitle> results; if (it.VideoKind == VideoKind.Movie) { SearchQuery qu = new SearchQuery(it.Title); qu.Year = (int)it.Year; qu.LanguageCodes = languagePrios.Keys.ToArray(); results = sd.SearchSubtitles(qu); } else { EpisodeSearchQuery qu = new EpisodeSearchQuery(it.Title, (int)it.Season, (int)it.Episode, null); qu.LanguageCodes = languagePrios.Keys.ToArray(); results = sd.SearchSubtitles(qu); } Log.Debug("Subtitles found:" + results.Count.ToString()); if (results.Count > 0) { int minValue = int.MaxValue; Subtitle minSub = results[0]; foreach (Subtitle sub in results) { Log.Debug("Subtitle " + sub.ProgramName + " " + sub.LanguageCode); if (languagePrios.ContainsKey(sub.LanguageCode)) { int prio = languagePrios[sub.LanguageCode]; if (prio < minValue) { minValue = prio; minSub = sub; } } } List <FileInfo> subtitleFiles = sd.SaveSubtitle(minSub); if (subtitleFiles.Count > 0) { string s = File.ReadAllText(subtitleFiles[0].FullName, System.Text.Encoding.UTF8); if (s.IndexOf('�') != -1) { video.SubtitleText = File.ReadAllText(subtitleFiles[0].FullName, System.Text.Encoding.Default); } else { video.SubtitleText = s; } } foreach (FileInfo fi in subtitleFiles) { fi.Delete(); } } }
private static string DownloadSubtitleFile(ISubtitleDownloader downloader, Subtitle subtitle) { IEnumerable<FileInfo> subtitleFiles = downloader.SaveSubtitle(subtitle); FileInfo subtitleFile = subtitleFiles.First(); return subtitleFile.FullName; }
/// <summary> /// Downloads subtitle to the specified path. /// </summary> /// <param name="subtitle">Theubtitle to download</param> /// <returns>File info if successful</returns> public Task <List <FileInfo> > DownloadSubtileAsync(SubtitleDownloaderResult subtitle) { return(Task.FromResult(_downloader.SaveSubtitle(subtitle))); }