コード例 #1
0
 public SubtitleDownloaderWrapper(ISubtitleDownloader downloader, IEpisodeParser nameParser, ILogger logger, IFileOperations fileOperations)
 {
     _downloader = downloader;
     _nameParser = nameParser;
     _logger = logger;
     _fileOperations = fileOperations;
 }
コード例 #2
0
        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();
                }
            }
        }
コード例 #3
0
        /// <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;
            }
        }
コード例 #4
0
 private static string DownloadSubtitleFile(ISubtitleDownloader downloader, Subtitle subtitle)
 {
     IEnumerable<FileInfo> subtitleFiles = downloader.SaveSubtitle(subtitle);
     FileInfo subtitleFile = subtitleFiles.First();
     return subtitleFile.FullName;
 }
コード例 #5
0
 public SubtitleDownloaderV1(string downloader)
 {
     _downloader = SubtitleDownloaderFactory.GetSubtitleDownloader(downloader);
 }