コード例 #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
 private static string DownloadSubtitleFile(ISubtitleDownloader downloader, Subtitle subtitle)
 {
     IEnumerable<FileInfo> subtitleFiles = downloader.SaveSubtitle(subtitle);
     FileInfo subtitleFile = subtitleFiles.First();
     return subtitleFile.FullName;
 }
コード例 #3
0
 /// <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)));
 }