Exemplo n.º 1
0
        protected override string GetLanguageCode(SubtitlesLanguage subtitlesLanguage)
        {
            switch (subtitlesLanguage)
            {
            case SubtitlesLanguage.French:
                return("French");

            case SubtitlesLanguage.English:
                return("English");

            default:
                return(null);
            }
        }
Exemplo n.º 2
0
        public async override Task <SubtitlesSearchResultDto> GetAvailableSubtitlesAsync(string imdbCode, SubtitlesLanguage subtitlesLanguage)
        {
            var searchUrl = baseUrl + "/movie-imdb/" + imdbCode;
            var doc       = await HttpRequester.GetHtmlDocumentAsync(searchUrl);

            if (doc == null)
            {
                return(null);
            }

            var nodes = doc.DocumentNode.SelectNodes("//table[@class='table other-subs']/tbody/tr");

            if (nodes == null)
            {
                return(null);
            }

            var subtitlesSourceLinks = new List <string>();

            var languageCode = GetLanguageCode(subtitlesLanguage);

            foreach (var node in nodes)
            {
                doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(node.InnerHtml);

                var languageInfo = doc.DocumentNode.SelectSingleNode("//span[@class='sub-lang']");

                if (languageInfo != null && languageInfo.InnerText == languageCode)
                {
                    var subtitleLink = doc.DocumentNode.SelectSingleNode("//td[@class='download-cell']//a")?.Attributes["href"]?.Value;

                    if (subtitleLink != null)
                    {
                        subtitlesSourceLinks.Add(baseUrl + subtitleLink);
                    }
                }
            }

            if (subtitlesSourceLinks.Any())
            {
                return(new SubtitlesSearchResultDto()
                {
                    Language = GetLanguageLabel(subtitlesLanguage),
                    SubtitlesSourceUrls = subtitlesSourceLinks.ToArray()
                });
            }

            return(null);
        }
Exemplo n.º 3
0
 protected override string GetLanguageLabel(SubtitlesLanguage subtitlesLanguage)
 {
     return(GetLanguageCode(subtitlesLanguage));
 }
Exemplo n.º 4
0
        public override async Task <SubtitlesSearchResultDto> GetAvailableSubtitlesAsync(string imdbCode, SubtitlesLanguage subtitlesLanguage)
        {
            var openSubtitleMovieId = await GetOpenSubtitleMovieId(imdbCode);

            if (string.IsNullOrEmpty(openSubtitleMovieId))
            {
                return(null);
            }

            var doc = await HttpRequester.GetHtmlDocumentAsync(baseUrl + "/en/search/idmovie-" + openSubtitleMovieId + "/sublanguageid-" + GetLanguageCode(subtitlesLanguage));

            if (doc == null)
            {
                return(null);
            }

            var htmlTableResults = doc.DocumentNode.SelectSingleNode("//table[@id='search_results']");

            if (htmlTableResults != null)
            {
                var searchResultsHtml = new HtmlDocument();
                searchResultsHtml.LoadHtml(htmlTableResults.InnerHtml);

                return(new SubtitlesSearchResultDto()
                {
                    Language = GetLanguageLabel(subtitlesLanguage),
                    SubtitlesSourceUrls = searchResultsHtml.DocumentNode.SelectNodes("//a[contains(@onclick, '/subtitleserve/sub/')]")?
                                          .Select(n =>
                    {
                        var values = n.Attributes["href"].Value.Split('/');
                        return "https://dl.opensubtitles.org/en/download/sub/" + values[values.Length - 1];
                    }).ToArray()
                });
            }

            var singleResult = doc.DocumentNode.SelectSingleNode("//a[@id='bt-dwl-bt']")?.Attributes["href"]?.Value;

            if (!string.IsNullOrEmpty(singleResult))
            {
                return new SubtitlesSearchResultDto()
                       {
                           Language            = GetLanguageLabel(subtitlesLanguage),
                           SubtitlesSourceUrls = new string[] { baseUrl + singleResult }
                       }
            }
            ;

            return(null);
        }
Exemplo n.º 5
0
 protected abstract string GetLanguageLabel(SubtitlesLanguage subtitlesLanguage);
Exemplo n.º 6
0
 protected abstract string GetLanguageCode(SubtitlesLanguage subtitlesLanguage);
Exemplo n.º 7
0
 public abstract Task <SubtitlesSearchResultDto> GetAvailableSubtitlesAsync(string imdbCode, SubtitlesLanguage subtitlesLanguage);