Пример #1
0
def test_query_episode(episodes):
    video = episodes['colony_s01e09']
    language = Language('por', 'BR')
    expected_subtitles = {
        ('56ed8159e36ec', 'Colony.S01E09.HDTV.XviD-FUM.srt'),
        ('56ed8159e36ec', 'Colony.S01E09.HDTV.x264-FLEET.srt'),
        ('56ed8159e36ec',
         'Colony.S01E09.1080p.WEB-DL.x265.HEVC.AAC.5.1.Condo.srt'),
        ('56ed8159e36ec', 'Colony.S01E09.720p.HDTV.HEVC.x265-RMTeam.srt'),
        ('56ed8159e36ec', 'Colony.S01E09.WEB-DL.x264-RARBG.srt'),
        ('56ed8159e36ec',
         'Colony.S01E09.Zero.Day.1080p.WEB-DL.6CH.x265.HEVC-PSA.srt'),
        ('56ed8159e36ec', 'Colony.S01E09.720p.HDTV.x264-KILLERS.srt'),
        ('56ed8159e36ec', 'Colony.S01E09.720p.WEB-DL.HEVC.x265-RMTeam.srt'),
        ('56ed8159e36ec', 'Colony.S01E09.HDTV.XviD-AFG.srt'),
        ('56ed812f354f6', 'Colony.S01E09.HDTV.x264-FUM.srt'),
        ('56eb3817111be', 'Colony S01E09 1080p WEB DL DD5 1 H264 RARBG /'
         'Colony S01E09 1080p WEB DL DD5 1 H264 RARBG .srt'),
        ('56ed8159e36ec',
         'Colony.S01E09.Zero.Day.1080p.WEB-DL.DD5.1.H265-LGC.srt'),
        ('56ed8159e36ec',
         'Colony.S01E09.Zero.Day.720p.WEB-DL.2CH.x265.HEVC-PSA.srt'),
        ('56ed8159e36ec',
         'Colony.S01E09.1080p.WEB-DL.6CH.HEVC.x265-RMTeam.srt'),
        ('56ed8159e36ec', 'Colony.S01E09.720p.HDTV.2CH.x265.HEVC-PSA.srt'),
        ('56ed8159e36ec', 'Colony.S01E09.1080p.WEB-DL.DD5.1.H264-RARBG.srt'),
        ('56ed8159e36ec', 'Colony.S01E09.HDTV.x264-FUM.srt'),
        ('56ed8159e36ec', 'Colony.S01E09.720p.WEB-DL.DD5.1.H264-RARBG.srt'),
        ('56e442ddbb615', 'Colony.S01E09.720p.HDTV.x264-KILLERS.srt')
    }
    with LegendasTVProvider(USERNAME, PASSWORD) as provider:
        subtitles = provider.query(language, video.series, video.season,
                                   video.episodes, video.year)
    assert {(s.archive.id, s.name) for s in subtitles} == expected_subtitles
Пример #2
0
def test_list_subtitles_episode_alternative_series(episodes):
    video = episodes['turn_s04e03']
    languages = {Language('por', 'BR')}
    expected_subtitles = {
        ('5953101413fcc', 'Turn.S04E03.CONVERT.1080p.HEVC.x265-MeGusta.srt'),
        ('5953101413fcc', 'Turn.S04E03.CONVERT.720p.WEB.h264-TBS.srt'),
        ('5953101413fcc', 'Turn.S04E03.CONVERT.AAC.MP4-Mobile.srt'),
        ('5953101413fcc', 'Turn.S04E03.XviD-AFG.srt'),
        ('5953101413fcc', 'Turn.S04E03.CONVERT.XviD-AFG.srt'),
        ('5953101413fcc', 'Turn.S04E03.WEBRip.x264-RARBG.srt'),
        ('5953101413fcc',
         'Turn.S04E03.Blood.for.Blood.720p.AMZN.WEBRip.DD5.1.x264-ViSUM.srt'),
        ('5953101413fcc', 'Turn.S04E03.1080p.HEVC.x265-MeGusta.srt'),
        ('5953101413fcc', 'Turn.S04E03.CONVERT.WEB.h264-TBS.srt'),
        ('5953101413fcc',
         'Turn.S04E03.Blood.for.Blood.1080p.AMZN.WEBRip.DD5.1.x264-ViSUM.srt'),
        ('5953101413fcc', 'Turn.S04E03.480p.x264-mSD.srt'),
        ('5953101413fcc', 'Turn.S04E03.720p.HDTV.x264-SVA.srt'),
        ('5953101413fcc',
         'TURN.Washingtons.Spies.S04E03.Blood.for.Blood.1080p.AMZN.WEBRip.DDP5.1.x264-ViSUM.srt'
         ), ('5953101413fcc', 'Turn.S04E03.1080p.WEBRip.x264-MOROSE.srt'),
        ('5953101413fcc', 'Turn.S04E03.CONVERT.480p.x264-mSD.srt'),
        ('5953101413fcc',
         'TURN.Washingtons.Spies.S04E03.Blood.for.Blood.720p.AMZN.WEBRip.DDP5.1.x264-ViSUM.srt'
         ), ('5953101413fcc', 'Turn.S04E03.AAC.MP4-Mobile.srt'),
        ('5953101413fcc', 'Turn.S04E03.720p.HDTV.2CH.x265.HEVC-PSA.srt'),
        ('5953101413fcc',
         "TURN.Washington's.Spies.S04E03.720p.WEBRip.2CH.x265.HEVC-PSA.srt"),
        ('5953101413fcc', 'Turn.S04E03.HDTV.x264-SVA.srt'),
        ('5953101413fcc', 'Turn.S04E03.720p.HDTV.x264-AVS.srt'),
        ('5953101413fcc', 'Turn.S04E03.CONVERT.1080p.WEB.h264-TBS.srt')
    }
    with LegendasTVProvider(USERNAME, PASSWORD) as provider:
        subtitles = provider.list_subtitles(video, languages)
    assert {(s.archive.id, s.name) for s in subtitles} == expected_subtitles
Пример #3
0
def test_list_subtitles_episode(episodes):
    video = episodes['the_x_files_s10e02']
    languages = {Language('eng')}
    expected_subtitles = {('56a756935a76c',
                           'The.X-Files.S10E02.720p.HDTV.AVS.en.srt')}
    with LegendasTVProvider(USERNAME, PASSWORD) as provider:
        subtitles = provider.list_subtitles(video, languages)
    assert {(s.archive.id, s.name) for s in subtitles} == expected_subtitles
Пример #4
0
def test_list_subtitles_movie(movies):
    video = movies['man_of_steel']
    languages = {Language('eng')}
    expected_subtitles = {('525d8c2444851',
                           'Man.Of.Steel.2013.[BluRay.BRRip.BDRip].srt')}
    with LegendasTVProvider(USERNAME, PASSWORD) as provider:
        subtitles = provider.list_subtitles(video, languages)
    assert {(s.archive.id, s.name) for s in subtitles} == expected_subtitles
Пример #5
0
def test_get_archives_logged_in_as_not_donor():
    with LegendasTVProvider() as provider:
        archive = provider.get_archives(34084, 2, 'movie', None, None)[0]
    assert archive.id == '5515d27a72921'
    assert archive.name == 'Interstellar.2014.1080p.BluRay.x264.DTS-RARBG.eng'
    assert archive.link == (
        'http://legendas.tv/download/5515d27a72921/Interstellar/Interstellar_2014_1080p_BluRay_'
        'x264_DTS_RARBG_eng')
Пример #6
0
def test_download_subtitle(movies):
    video = movies['man_of_steel']
    languages = {Language('eng')}
    with LegendasTVProvider(USERNAME, PASSWORD) as provider:
        subtitles = provider.list_subtitles(video, languages)
        provider.download_subtitle(subtitles[0])
    assert subtitles[0].content is not None
    assert subtitles[0].is_valid() is True
Пример #7
0
def test_search_titles_movie(movies):
    with LegendasTVProvider() as provider:
        titles = provider.search_titles(movies['interstellar'].title)
    assert len(titles) == 2
    assert set(titles.keys()) == {34084, 37333}
    assert {t['title']
            for t in titles.values()
            } == {movies['interstellar'].title, 'The Science of Interstellar'}
Пример #8
0
def test_unrar_not_available(monkeypatch):
    monkeypatch.setattr(rarfile, 'UNRAR_TOOL', 'fake_unrar')
    try:
        LegendasTVProvider(USERNAME, PASSWORD)
    except ConfigurationError as error:
        assert 'UNRAR tool not available' == error.args[0]
    else:
        pytest.fail()
Пример #9
0
def test_search_titles_movie(movies):
    with LegendasTVProvider() as provider:
        titles = provider.search_titles(movies['interstellar'].title, None,
                                        movies['interstellar'].year)
    assert len(titles) == 1
    assert set(titles.keys()) == {34084}
    assert {t['title']
            for t in titles.values()} == {movies['interstellar'].title}
Пример #10
0
def test_search_titles_episode(episodes):
    video = episodes['bbt_s07e05']
    with LegendasTVProvider() as provider:
        titles = provider.search_titles(video.series, video.season, video.year)
    assert len(titles) == 1
    assert set(titles.keys()) == {30730}
    assert {t['title'] for t in titles.values()} == {video.series}
    assert {t['season']
            for t in titles.values()
            if t['type'] == 'episode'} == set([video.season])
Пример #11
0
def test_get_archive_multi_episode(episodes):
    video = episodes['fear_walking_dead_s03e10']
    languages = {Language('por', 'BR')}
    # Archive is multi-episode: Fear_the_Walking_Dead_S03E09E10_HDTV_x264_SVA_AVS_AFG_RARBG_DEFLATE
    expected_subtitle = (
        '59b88ce286178',
        'Fear.the.Walking.Dead.S03E10.1080p.WEB-DL.DD5.1.H264-RARBG.srt')
    with LegendasTVProvider(USERNAME, PASSWORD) as provider:
        subtitles = provider.list_subtitles(video, languages)
    assert expected_subtitle in {(s.archive.id, s.name) for s in subtitles}
Пример #12
0
    def is_valid_title(title, title_id, sanitized_title, season, year, imdb_id):
        """Check if is a valid title."""
        if title["imdb_id"] and title["imdb_id"] == imdb_id:
            logger.debug(u'Matched title "%s" as IMDB ID %s', sanitized_title, title["imdb_id"])
            return True

        if title["title2"] and sanitize(title['title2']) == sanitized_title:
            logger.debug(u'Matched title "%s" as "%s"', sanitized_title, title["title2"])
            return True

        return _LegendasTVProvider.is_valid_title(title, title_id, sanitized_title, season, year)
Пример #13
0
def test_under_maintenance(movies):
    """Tests when is under maintenance and http status code 200."""
    video = movies['man_of_steel']
    languages = {Language('eng')}
    with LegendasTVProvider() as provider:
        try:
            provider.list_subtitles(video, languages)
        except ServiceUnavailable:
            pass
        else:
            pytest.fail()
Пример #14
0
    def is_valid_title(title, title_id, sanitized_title, season, year, imdb_id):
        """Check if is a valid title."""
        if title["imdb_id"] and title["imdb_id"] == imdb_id:
            logger.debug(u'Matched title "%s" as IMDB ID %s', sanitized_title, title["imdb_id"])
            return True

        if title["title2"] and sanitize(title['title2']) == sanitized_title:
            logger.debug(u'Matched title "%s" as "%s"', sanitized_title, title["title2"])
            return True

        return _LegendasTVProvider.is_valid_title(title, title_id, sanitized_title, season, year)
Пример #15
0
def test_query_movie(movies):
    video = movies['interstellar']
    language = Language('eng')
    expected_subtitles = {
        ('54a2e41d8cae4',
         'Interstellar 2014 HDCAM NEW SOURCE READNFO XVID AC3 ACAB.srt'),
        ('5515d27a72921',
         'Interstellar.2014.1080p.BluRay.x264.DTS-RARBG.eng.srt'),
    }
    with LegendasTVProvider(USERNAME, PASSWORD) as provider:
        subtitles = provider.query(language, video.title, year=video.year)
    assert {(s.archive.id, s.name) for s in subtitles} == expected_subtitles
Пример #16
0
def test_search_titles_episode(episodes):
    with LegendasTVProvider() as provider:
        titles = provider.search_titles(episodes['bbt_s07e05'].series)
    assert len(titles) == 10
    assert set(titles.keys()) == {
        7623, 12620, 17710, 22056, 25314, 28507, 28900, 30730, 34546, 38908
    }
    assert {t['title']
            for t in titles.values()} == {episodes['bbt_s07e05'].series}
    assert {t['season']
            for t in titles.values()
            if t['type'] == 'episode'} == set(range(1, 10))
Пример #17
0
def test_download_archive():
    with LegendasTVProvider(USERNAME, PASSWORD) as provider:
        archive = provider.get_archives(34084, 2, 'movie', None, None)[0]
        provider.download_archive(archive)
    assert archive.content is not None
Пример #18
0
def test_get_archives_no_result():
    with LegendasTVProvider() as provider:
        archives = provider.get_archives(34084, 17, 'movie', None, None)
    assert len(archives) == 0
Пример #19
0
def test_get_archives():
    with LegendasTVProvider() as provider:
        archives = provider.get_archives(34084, 2, 'movie', None, None)
    assert len(archives) == 2
    assert {a.id for a in archives} == {'5515d27a72921', '54a2e41d8cae4'}
    assert {a.content for a in archives} == {None}
Пример #20
0
def test_logout():
    provider = LegendasTVProvider(USERNAME, PASSWORD)
    provider.initialize()
    provider.terminate()
    assert provider.logged_in is False
Пример #21
0
def test_search_titles_with_season_information_in_english():
    with LegendasTVProvider() as provider:
        titles = provider.search_titles('Pretty Little Liars')
    assert len(titles) == 7
    assert set(
        titles.keys()) == {20917, 24586, 27500, 28332, 30303, 33223, 38105}
Пример #22
0
def test_search_titles_dots():
    with LegendasTVProvider() as provider:
        titles = provider.search_titles('11.22.63', 1, None)
    assert len(titles) == 1
    assert set(titles.keys()) == {40092}
Пример #23
0
def test_login():
    provider = LegendasTVProvider(USERNAME, PASSWORD)
    assert provider.logged_in is False
    provider.initialize()
    assert provider.logged_in is True
Пример #24
0
def test_logout():
    provider = LegendasTVProvider(USERNAME, PASSWORD)
    provider.initialize()
    provider.terminate()
    assert provider.logged_in is False
Пример #25
0
def test_login_bad_password():
    provider = LegendasTVProvider(USERNAME, 'wrong')
    with pytest.raises(AuthenticationError):
        provider.initialize()
Пример #26
0
def test_login():
    provider = LegendasTVProvider(USERNAME, PASSWORD)
    assert provider.logged_in is False
    provider.initialize()
    assert provider.logged_in is True
Пример #27
0
def test_search_titles_without_season_information():
    with LegendasTVProvider() as provider:
        titles = provider.search_titles(
            'The Walking Dead Webisodes Torn Apart')
    assert len(titles) == 1
    assert set(titles.keys()) == {25770}
Пример #28
0
def test_search_titles_quote():
    with LegendasTVProvider() as provider:
        titles = provider.search_titles('Marvel\'s Jessica Jones', 1, None)
    assert len(titles) == 2
    assert set(titles.keys()) == {39376, 47071}
Пример #29
0
def test_search_titles_with_invalid_year():
    with LegendasTVProvider() as provider:
        titles = provider.search_titles('Grave Danger')
    assert len(titles) == 1
    assert set(titles.keys()) == {22034}
Пример #30
0
def test_search_titles_with_season_information_in_english():
    with LegendasTVProvider() as provider:
        # Season 3 uses '3rd Season'
        titles = provider.search_titles('Pretty Little Liars', 3, 2012)
    assert len(titles) == 1
    assert set(titles.keys()) == {27500}
Пример #31
0
def test_search_titles_containing_year_information():
    with LegendasTVProvider() as provider:
        titles = provider.search_titles('Bull', 1, 2016)
    assert 42047 in titles.keys()
    t = titles[42047]
    assert t['title'], t['year'] == ('Bull', 2016)
Пример #32
0
def test_login_bad_password():
    provider = LegendasTVProvider(USERNAME, 'wrong')
    with pytest.raises(AuthenticationError):
        provider.initialize()