public SubtitleDownloaderWrapper(ISubtitleDownloader downloader, IEpisodeParser nameParser, ILogger logger, IFileOperations fileOperations) { _downloader = downloader; _nameParser = nameParser; _logger = logger; _fileOperations = fileOperations; }
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(); } } }
/// <summary> /// Performs a search based on input from user /// </summary> public async void SearchSubtitle() { if (!String.IsNullOrWhiteSpace(SearchEntry)) { subtitles.Clear(); string query = SearchEntry; if (!enabledLanguages.Any()) { dialogService.ShowMessageBox("No languages selected. Select at least one language in settings."); return; } IsWorking = true; await Task.Factory.StartNew(() => { downloader = SubtitleDownloaderFactory.GetSubtitleDownloader("OpenSubtitles"); SearchQuery searchQuery = new SearchQuery(query) { LanguageCodes = enabledLanguages.ToArray() }; try { var searchResults = !Settings.Default.EnableHearingImpaired ? downloader.SearchSubtitles(searchQuery).Where(s => !s.FileName.Contains(".HI.")).ToList() : downloader.SearchSubtitles(searchQuery); subtitles.AddRange(searchResults); Info = String.Format("Found {0} subtitles.", subtitles.Count); } catch (Exception ex) { dialogService.ShowMessageBox(ex.Message); } }); IsWorking = false; } }
private static string DownloadSubtitleFile(ISubtitleDownloader downloader, Subtitle subtitle) { IEnumerable<FileInfo> subtitleFiles = downloader.SaveSubtitle(subtitle); FileInfo subtitleFile = subtitleFiles.First(); return subtitleFile.FullName; }
public SubtitleDownloaderV1(string downloader) { _downloader = SubtitleDownloaderFactory.GetSubtitleDownloader(downloader); }