コード例 #1
0
    def test_replacing_video_for_path_removes_downloads(self):
        path = "/data/Series/Season 1/01 Title.mkv"
        video = Video.fromname("Series.S01E02.Title.720p.WEB-DL.DD5.1.H264-ReleaseGroup.mkv")
        self.datastore.add_video(path, video)
        provider = "davessubs"
        sub_id = "ABC123"
        lang = Language.fromietf("en")
        score = 123
        self.datastore.add_download(path, provider, sub_id, lang, score)

        video2 = Video.fromname("Series.S01E02.Title.720p.BDRip-ReleaseGroup2.mkv")
        self.datastore.add_video(path, video)
        downloads = self.datastore.get_downloads_for_video(path)

        self.assertEqual(downloads, {})
コード例 #2
0
def data():
    return {
        'release_name':
        'Show.Name.2012.S01E02.Episode.Title.1080p.HDTV.x265.AC3-Group',
        'release_properties': {
            'series': 'Show Name',
            'season': 1,
            'episode': 2,
            'title': 'Episode Title',
            'year': 2012,
            'source': 'HDTV',
            'resolution': '1080p',
            'release_group': 'Group',
            'video_codec': 'H.265',
            'audio_codec': 'AC3'
        },
        'another_release_name':
        'Different.Show.2013.S03E04.Another.Episode.720p.BluRay.x264-NoGroup',
        'video': Video.fromname('Show.Name.S01E02.mkv'),
        'video_properties': {
            'series': 'Show Name',
            'season': 1,
            'episode': 2,
            'title': None,
            'year': None,
            'source': None,
            'resolution': None,
            'release_group': None,
            'video_codec': None,
            'audio_codec': None,
        }
    }
コード例 #3
0
def data():
    return {
        'release_name': 'Show.Name.2012.S01E02.Episode.Title.1080p.HDTV.x265.AC3-Group',
        'release_properties': {
            'series': 'Show Name',
            'season': 1,
            'episode': 2,
            'title': 'Episode Title',
            'year': 2012,
            'source': 'HDTV',
            'resolution': '1080p',
            'release_group': 'Group',
            'video_codec': 'H.265',
            'audio_codec': 'AC3'
        },
        'another_release_name': 'Different.Show.2013.S03E04.Another.Episode.720p.BluRay.x264-NoGroup',
        'video': Video.fromname('Show.Name.S01E02.mkv'),
        'video_properties': {
            'series': 'Show Name',
            'season': 1,
            'episode': 2,
            'title': None,
            'year': None,
            'source': None,
            'resolution': None,
            'release_group': None,
            'video_codec': None,
            'audio_codec': None,
        }
    }
コード例 #4
0
    def test_added_subs_are_returned_by_lang(self):
        path = "/data/Series/Season 1/01 Title.mkv"
        video = Video.fromname("Series.S01E02.Title.720p.WEB-DL.DD5.1.H264-ReleaseGroup.mkv")
        self.datastore.add_video(path, video)

        provider1 = "davessubs"
        sub_id1 = "ABC123"
        lang1 = Language.fromietf("en")
        score1 = 123
        provider2 = "stevesubs"
        sub_id2 = "steve123"
        lang2 = lang1
        score2 = 120
        provider3 = "pablosubs"
        sub_id3 = "umdoistres"
        lang3 = Language.fromietf("pt-BR")
        score3 = 150
        self.datastore.add_download(path, provider1, sub_id1, lang1, score1)
        self.datastore.add_download(path, provider2, sub_id2, lang2, score2)
        self.datastore.add_download(path, provider3, sub_id3, lang3, score3)

        downloads = self.datastore.get_downloads_for_video(path)

        self.assertEqual(
            downloads,
            {
                lang1: [
                    {"provider": provider1, "sub_id": sub_id1, "lang": lang1, "score": score1},
                    {"provider": provider2, "sub_id": sub_id2, "lang": lang2, "score": score2},
                ],
                lang3: [{"provider": provider3, "sub_id": sub_id3, "lang": lang3, "score": score3}],
            },
        )
コード例 #5
0
    def test_newly_added_video_has_no_downloads(self):
        path = "/data/Series/Season 1/01 Title.mkv"
        video = Video.fromname("Series.S01E02.Title.720p.WEB-DL.DD5.1.H264-ReleaseGroup.mkv")
        self.datastore.add_video(path, video)

        downloads = self.datastore.get_downloads_for_video(path)

        self.assertEqual(downloads, {})
コード例 #6
0
    def test_added_sub_is_returned(self):
        path = "/data/Series/Season 1/01 Title.mkv"
        video = Video.fromname("Series.S01E02.Title.720p.WEB-DL.DD5.1.H264-ReleaseGroup.mkv")
        self.datastore.add_video(path, video)
        provider = "davessubs"
        sub_id = "ABC123"
        lang = Language.fromietf("en")
        score = 123
        self.datastore.add_download(path, provider, sub_id, lang, score)

        downloads = self.datastore.get_downloads_for_video(path)

        self.assertEqual(downloads, {lang: [{"provider": provider, "sub_id": sub_id, "lang": lang, "score": score}]})
コード例 #7
0
def data(create_tvshow, create_tvepisode):
    show_name = 'Enhanced Show Name'
    show_year = 2012
    tvshow = create_tvshow(indexerid=12,
                           name='{0} ({1})'.format(show_name, show_year),
                           imdb_id='tt0000000')
    tvepisode = create_tvepisode(show=tvshow,
                                 indexer=34,
                                 season=3,
                                 episode=4,
                                 name='Episode Title',
                                 file_size=1122334455,
                                 status=Quality.composite_status(
                                     DOWNLOADED, Quality.FULLHDBLURAY),
                                 release_group='SuperGroup')
    return {
        'tvshow': tvshow,
        'tvshow_properties': {
            'series': show_name,
            'year': show_year,
            'series_tvdb_id': tvshow.tvdb_id,
            'series_imdb_id': tvshow.imdb_id,
        },
        'tvepisode': tvepisode,
        'tvepisode_properties': {
            'season': tvepisode.season,
            'episode': tvepisode.episode,
            'title': tvepisode.name,
            'resolution': '1080p',
            'format': 'BluRay',
            'release_group': tvepisode.release_group,
            'size': tvepisode.file_size,
            'tvdb_id': tvepisode.tvdb_id,
        },
        'video': Video.fromname('Show.Name.S01E02.mkv'),
        'video_properties': {
            'series': 'Show Name',
            'season': 1,
            'episode': 2,
            'title': None,
            'year': None,
            'resolution': None,
            'format': None,
            'release_group': None,
            'size': None,
            'series_tvdb_id': None,
            'series_imdb_id': None,
            'tvdb_id': None,
        }
    }
コード例 #8
0
ファイル: test_video.py プロジェクト: pokys/rpi-subliminal
def test_video_fromname_movie(movies):
    video = Video.fromname(movies['man_of_steel'].name)
    assert type(video) is Movie
    assert video.name == movies['man_of_steel'].name
    assert video.format == movies['man_of_steel'].format
    assert video.release_group == movies['man_of_steel'].release_group
    assert video.resolution == movies['man_of_steel'].resolution
    assert video.video_codec == movies['man_of_steel'].video_codec
    assert video.audio_codec is None
    assert video.imdb_id is None
    assert video.hashes == {}
    assert video.size is None
    assert video.subtitle_languages == set()
    assert video.title == movies['man_of_steel'].title
    assert video.year == movies['man_of_steel'].year
コード例 #9
0
ファイル: test_video.py プロジェクト: fernandog/subliminal
def test_video_fromname_movie(movies):
    video = Video.fromname(movies['man_of_steel'].name)
    assert type(video) is Movie
    assert video.name == movies['man_of_steel'].name
    assert video.format == movies['man_of_steel'].format
    assert video.release_group == movies['man_of_steel'].release_group
    assert video.resolution == movies['man_of_steel'].resolution
    assert video.video_codec == movies['man_of_steel'].video_codec
    assert video.audio_codec is None
    assert video.imdb_id is None
    assert video.hashes == {}
    assert video.size is None
    assert video.subtitle_languages == set()
    assert video.title == movies['man_of_steel'].title
    assert video.year == movies['man_of_steel'].year
コード例 #10
0
ファイル: test_video.py プロジェクト: pokys/rpi-subliminal
def test_video_fromname_episode_no_season(episodes):
    video = Video.fromname(episodes['the_jinx_e05'].name)
    assert type(video) is Episode
    assert video.name == episodes['the_jinx_e05'].name
    assert video.format == episodes['the_jinx_e05'].format
    assert video.release_group == episodes['the_jinx_e05'].release_group
    assert video.resolution == episodes['the_jinx_e05'].resolution
    assert video.video_codec == episodes['the_jinx_e05'].video_codec
    assert video.audio_codec is None
    assert video.imdb_id is None
    assert video.hashes == {}
    assert video.size is None
    assert video.subtitle_languages == set()
    assert sanitize(video.series) == sanitize(episodes['the_jinx_e05'].series)
    assert video.season == episodes['the_jinx_e05'].season
    assert video.episode == episodes['the_jinx_e05'].episode
    assert video.title is None
    assert video.year is None
    assert video.tvdb_id is None
コード例 #11
0
ファイル: test_video.py プロジェクト: vxcamiloxv/subliminal
def test_video_fromname_episode(episodes):
    video = Video.fromname(episodes['bbt_s07e05'].name)
    assert type(video) is Episode
    assert video.name == episodes['bbt_s07e05'].name
    assert video.source == episodes['bbt_s07e05'].source
    assert video.release_group == episodes['bbt_s07e05'].release_group
    assert video.resolution == episodes['bbt_s07e05'].resolution
    assert video.video_codec == episodes['bbt_s07e05'].video_codec
    assert video.audio_codec is None
    assert video.imdb_id is None
    assert video.hashes == {}
    assert video.size is None
    assert video.subtitle_languages == set()
    assert video.series == episodes['bbt_s07e05'].series
    assert video.season == episodes['bbt_s07e05'].season
    assert video.episode == episodes['bbt_s07e05'].episode
    assert video.title is None
    assert video.year is None
    assert video.tvdb_id is None
コード例 #12
0
ファイル: test_video.py プロジェクト: fernandog/subliminal
def test_video_fromname_episode(episodes):
    video = Video.fromname(episodes['bbt_s07e05'].name)
    assert type(video) is Episode
    assert video.name == episodes['bbt_s07e05'].name
    assert video.format == episodes['bbt_s07e05'].format
    assert video.release_group == episodes['bbt_s07e05'].release_group
    assert video.resolution == episodes['bbt_s07e05'].resolution
    assert video.video_codec == episodes['bbt_s07e05'].video_codec
    assert video.audio_codec is None
    assert video.imdb_id is None
    assert video.hashes == {}
    assert video.size is None
    assert video.subtitle_languages == set()
    assert video.series == episodes['bbt_s07e05'].series
    assert video.season == episodes['bbt_s07e05'].season
    assert video.episode == episodes['bbt_s07e05'].episode
    assert video.title is None
    assert video.year is None
    assert video.tvdb_id is None
コード例 #13
0
    def test_get_incomplete_videos(self, name, videos, expected):
        for video in videos:
            added = datetime.utcnow() - video["age"] if "age" in video else timedelta(0)
            self.datastore.add_video(video["path"], Video.fromname(video["name"]), added)
            for provider, sub_id, lang, score in video["downloads"]:
                self.datastore.add_download(video["path"], provider, sub_id, Language.fromietf(lang), score)

        lang1 = Language.fromietf("en")
        lang2 = Language.fromietf("pt-BR")
        incomplete = self.datastore.get_incomplete_videos(
            [lang1, lang2], 80, 100, datetime.utcnow() - timedelta(days=1)
        )

        self.assertEqual(len(incomplete), len(expected))
        for video_idx, needs in expected:
            actual = next(video for video in incomplete if video["path"] == videos[video_idx]["path"])
            self.assertEqual(actual["video"].name, videos[video_idx]["name"])
            self.assertEqual(len(actual["needs"]), len(needs))
            for lang, score in needs:
                actual_need = next(need for need in actual["needs"] if str(need["lang"]) == lang)
                self.assertEqual(actual_need["current_score"], score)
コード例 #14
0
ファイル: conftest.py プロジェクト: hyptechdev2015/Medusa
def video():
    return Video.fromname('Show.Name.S03E04.mkv')
コード例 #15
0
ファイル: conftest.py プロジェクト: pymedusa/SickRage
def video():
    return Video.fromname('Show.Name.S03E04.mkv')
コード例 #16
0
x = 'n'
while x != 'y':
    index = randint(0, countGS - 1)
    print("Launching " + str(stashnames[index]))
    findGenre(stashnames[index])
    print("\n\n......Good enough? Y/N\n")
    x = str(getch(), 'utf-8')
    print(
        "\n=================================================================================\n"
    )
    if x.lower() == 'y':
        if dlSub == True:
            print("\n\nGetting subtitles..Please Wait..\n\n")
            try:
                region.configure('dogpile.cache.dbm',
                                 arguments={'filename': 'cachefile.dbm'})
                videos = Video.fromname(stash[index])
                subtitles = download_best_subtitles([videos],
                                                    {Language('eng')})
                best_subtitle = subtitles[videos][0]
                save_subtitles(videos, [best_subtitle])
                print("\nSubtitle downloaded.\n")
            except:
                print("\nCould not get subtitle :\\\n")
        os.startfile(stash[index])
    elif x.lower() == 'n':
        print("Moving on...\n")
    else:
        print("\nWut? wut? i'll just assume it wasn't of your taste sire.\n")
コード例 #17
0
def findGenre(search):

    #  store=["True","0000000"]
    nsearch = ""
    #  c=0
    #  if search[0].isnumeric():
    #     search=search[0:7]
    #     for i in search:
    #         if i=="." or i.isspace():
    #             nsearch=nsearch+" "
    #         else:
    #             nsearch=nsearch+i
    #  else:
    #   for i in search:
    #      if i.isnumeric():
    #          if c<1:
    #              nsearch=nsearch+i
    #          c+=1
    #      elif i=="." or i.isspace():
    #         nsearch=nsearch+" "
    #      else:
    #             nsearch=nsearch+i

    #      if c>1:
    #         break

    try:
        global store
        store = loadKey()
        global apikey
        if store[0] == False:
            apikey = store[1]
        elif store[0] == True:
            ak = input("Enter api key\n")
            store[1] = ak
            store[0] = False
            apikey = store[1]
    except Exception as e:
        print("No key found\n")
        ak = input("Enter api key\n")
        store[0] = False
        store[1] = ak
        apikey = store[1]

    storeKey(store)
    global apikeyurl
    apikeyurl = '&apikey=' + apikey

    #  if nsearch[len(nsearch)-1].isnumeric():
    #      nsearch=nsearch[0:len(nsearch)-1]
    videos = Video.fromname(stash[index])
    nsearch = str(videos.title)
    #  print(nsearch)

    if nsearch == None:
        nsearch = "qzx120254frerwfdcvs"

    if search_movie(nsearch.strip()) != False:
        try:
            url = serviceurl + urllib.parse.urlencode({'t': abv90[0]
                                                       }) + apikeyurl
            print(
                f'\nBest Match: "{abv90[0].upper()}"\n\nGetting genre now... \n'
            )
            uh = urllib.request.urlopen(url)
            #   print(url+"\n")
            data = uh.read()
            json_data = json.loads(data)
            list_keys = ['Genre']
            if json_data['Response'] == 'True':
                for k in list_keys:
                    if k in list(json_data.keys()):
                        print(f"{k}: {json_data[k]}")

            abv90.clear()
        except Exception as e:
            if flagIncorrectKey != True:
                print(f"Error: {e}")
コード例 #18
0
ファイル: test_video.py プロジェクト: vxcamiloxv/subliminal
def test_episode_from_guess_multi_episode(episodes):
    video = Video.fromname(
        episodes['Marvels.Agents.of.S.H.I.E.L.D.S05E01-E02'].name)
    # Multi-ep is converted to single-ep by taking the lowest episode number
    assert video.episode == episodes[
        'Marvels.Agents.of.S.H.I.E.L.D.S05E01-E02'].episode