コード例 #1
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();
                }
            }
        }
コード例 #2
0
 /// <summary>
 /// Search for subtitles by title and year.
 /// </summary>
 /// <returns>List of available subtitles</returns>
 public Task <List <SubtitleDownloaderResult> > SearchMovieSubtitlesByTitleAndYearAsync(string title, int?year, params string[] languages)
 {
     try
     {
         if (_movieSearchSupport)
         {
             SearchQuery query = new SearchQuery(title);
             query.Year          = year;
             query.LanguageCodes = languages;
             List <Subtitle> results = _downloader.SearchSubtitles(query);
             return(Task.FromResult(results.Select(s => new SubtitleDownloaderResult(s)).ToList()));
         }
     }
     catch (NotSupportedException)
     {
         _movieSearchSupport = false;
     }
     return(Task.FromResult(new List <SubtitleDownloaderResult>()));
 }
コード例 #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;
            }
        }