private static IEnumerable<DownloaderMatch> SearchDownloaders(IEnumerable<IEpisodeSubtitleDownloader> compatibleDownloaders, Language[] languageArray, TvReleaseIdentity tvReleaseIdentity)
 {
     var searchResults = compatibleDownloaders
         .AsParallel()
         .SelectMany(downloader => downloader.SearchSubtitle(tvReleaseIdentity, languageArray)
             .Select(match => new DownloaderMatch(downloader, match)))
         .AsSequential().ToArray();
     return FilterOutLanguagesNotInRequest(searchResults, languageArray);
 }
Ejemplo n.º 2
0
 private static Subtitle CreateSubtitle(string fileHash, Language language, SearchQuery query)
 {
     return new Subtitle(fileHash, "", language)
     {
         SeriesName = query.SeriesTitle,
         Season = query.Season,
         Episode = query.Episode,
         EndEpisode = query.Episode,
         ReleaseGroup = query.ReleaseGroup
     };
 }
        public void DownloadSubtitle_MatchingSubtitlesDownloaderFails_ShouldReturnFalse(
            string file,
            Language[] languages,
            TvReleaseIdentity identity,
            Subtitle[] matches,
            Language language,
            ISubtitleRanker subtitleRanker,
            IEnhancementProvider enhancementProvider,
            [Frozen]IEpisodeSubtitleDownloader fakeDownloader)
        {
            A.CallTo(() => fakeDownloader.SearchSubtitle(A<TvReleaseIdentity>._, A<Language[]>._)).Returns(matches);
            A.CallTo(() => fakeDownloader.TryDownloadSubtitle(A<Subtitle>._, A<string>._)).Returns(false);
            A.CallTo(() => fakeDownloader.CanHandleAtLeastOneOf(A<Language[]>._)).Returns(true);
            var downloaders = new[] { fakeDownloader };
            var service = new SubtitleDownloadService(downloaders, enhancementProvider, subtitleRanker);

            bool success = service.DownloadSubtitle(file, identity, languages);

            Assert.That(success, Is.False);
        }
Ejemplo n.º 4
0
        public void ProcessFile_AllLanguagesAlreadyDownloaded_ReturnsTrue( 
            Language[] languages,
            string fileName,
            TvReleaseIdentity tvRelease,
            ILogger logger,
            IEpisodeParser episodeParser,
            ISubtitleDownloadService subtitleService,
            [Frozen]IFileOperations fileOperations,
            FileProcessor sut)
        {
            var settings = new LanguageSettings(languages);
            A.CallTo(() => fileOperations.GetDowloadedSubtitleLanguages(A<string>._, languages)).Returns(languages);
            A.CallTo(() => subtitleService.DownloadSubtitle(A<string>._, A<TvReleaseIdentity>._, A<IEnumerable<Language>>._))
                .Returns(false);
            A.CallTo(() => episodeParser.ParseEpisodeInfo(A<string>._)).Returns(tvRelease);
            var processor = new FileProcessor(episodeParser, logger, subtitleService, fileOperations, settings);

            bool result = processor.ProcessFile(fileName, new string[0]);

            Assert.That(result, Is.True);
        }
Ejemplo n.º 5
0
 public Subtitle(string id, string fileName, Language language)
 {
     Id = id;
     FileName = fileName;
     Language = language;
 }
 private IOrderedEnumerable<DownloaderMatch> OrderByRanking(IEnumerable<DownloaderMatch> searchResults, Language[] languageArray, TvReleaseIdentity identity)
 {
     return searchResults.OrderByDescending(s => _subtitleRanker.GetRankingScore(s.Subtitle, languageArray, identity));
 }
 private IEpisodeSubtitleDownloader[] GetDownloadersForLanguages(Language[] languageArray)
 {
     return _subtitleDownloaders.Where(s => s.CanHandleAtLeastOneOf(languageArray)).ToArray();
 }
 private static IEnumerable<DownloaderMatch> FilterOutLanguagesNotInRequest(IEnumerable<DownloaderMatch> searchResults, Language[] validLanguages)
 {
     return searchResults.Where(m => validLanguages.Any(l => l == m.Subtitle.Language));
 }