bazarr/tests/subliminal_patch/test_supersubtitles.py

198 lines
5.3 KiB
Python

# -*- coding: utf-8 -*-
import pytest
from subliminal_patch.providers.supersubtitles import SuperSubtitlesProvider
from subliminal_patch.providers.supersubtitles import SuperSubtitlesSubtitle
from subliminal_patch.core import Episode
from subzero.language import Language
@pytest.fixture
def episode():
episode = {
"name": "/tv/All of Us Are Dead/Season 1/All of Us Are Dead - S01E11 - Episode 11 WEBDL-1080p.mp4",
"source": "Web",
"release_group": None,
"resolution": "1080p",
"video_codec": None,
"audio_codec": None,
"imdb_id": None,
"subtitle_languages": set(),
"streaming_service": None,
"edition": None,
"series": "All of Us Are Dead",
"season": 1,
"episode": 11,
"title": "Episode 11",
"year": None,
"original_series": True,
"tvdb_id": None,
"series_tvdb_id": None,
"series_imdb_id": None,
"alternative_series": [],
}
return Episode(**episode)
def test_list_episode_subtitles(episode):
language = Language.fromalpha2("en")
with SuperSubtitlesProvider() as provider:
assert provider.list_subtitles(episode, {language})
def test_download_episode_subtitle(episode):
subtitle = SuperSubtitlesSubtitle(
Language.fromalpha2("en"),
"https://www.feliratok.eu/index.php?action=letolt&felirat=1643361676",
1643361676,
"All of us are dead",
1,
11,
"",
[
"NF.WEB-DL.1080p-TEPES",
"NF.WEBRip.1080p-TEPES",
"WEBRip-ION10",
"WEBRip-ION265",
"WEBRip.1080p-RARBG",
],
"",
"",
"",
asked_for_episode=True,
)
assert subtitle.get_matches(episode)
with SuperSubtitlesProvider() as provider:
provider.download_subtitle(subtitle)
assert subtitle.is_valid()
def test_list_and_download_movie_subtitles(movies):
movie = movies["dune"]
language = Language.fromalpha2("en")
with SuperSubtitlesProvider() as provider:
assert provider.list_subtitles(movie, {language})
def test_download_movie_subtitle(movies):
movie = movies["dune"]
subtitle = SuperSubtitlesSubtitle(
Language.fromalpha2("en"),
"https://www.feliratok.eu/index.php?action=letolt&felirat=1634579718",
1634579718,
"Dune",
0,
0,
"",
[
"NF.WEB-DL.1080p-TEPES",
"NF.WEBRip.1080p-TEPES",
"WEBRip-ION10",
"WEBRip-ION265",
"WEBRip.1080p-RARBG",
],
"",
"",
"",
asked_for_episode=None,
)
assert subtitle.get_matches(movie)
with SuperSubtitlesProvider() as provider:
provider.download_subtitle(subtitle)
assert subtitle.is_valid()
def test_download_movie_subtitle_hungarian(movies):
movie = movies["dune"]
subtitle = SuperSubtitlesSubtitle(
Language.fromalpha2("hu"),
"https://www.feliratok.eu//index.php?action=letolt&felirat=1681841063",
1634579718,
"Foo",
0,
0,
"",
["Foo"],
"",
"",
"",
asked_for_episode=None,
)
assert subtitle.get_matches(movie)
with SuperSubtitlesProvider() as provider:
provider.download_subtitle(subtitle)
assert subtitle.is_valid()
def test_subtitle_reprs(movies):
subtitle = SuperSubtitlesSubtitle(
Language.fromalpha2("en"),
"https://www.feliratok.eu/index.php?action=letolt&felirat=1634579718",
1634579718,
"Dune",
0,
0,
"",
[
"NF.WEB-DL.1080p-TEPES",
"NF.WEBRip.1080p-TEPES",
"WEBRip-ION10",
"WEBRip-ION265",
"WEBRip.1080p-RARBG",
],
"",
"",
"",
asked_for_episode=None,
)
assert isinstance(subtitle.__repr__(), str)
assert isinstance(subtitle.__str__(), str)
@pytest.fixture
def video_2():
return Episode(
**{
"name": "/tv/La.Brea/Season.02/La.Brea.S02E13.720p.WEB.H264-CAKES.mkv",
"source": "Web",
"release_group": "CAKES",
"resolution": "720p",
"video_codec": "H.264",
"audio_codec": "Dolby Digital Plus",
"imdb_id": None,
"size": 1598748631,
"original_name": "la.brea.s02e13.720p.web.h264-cakes.mkv",
"hints": {"title": "La Brea", "type": "episode", "single_value": True},
"streaming_service": None,
"edition": None,
"original_path": "/tv/La.Brea/Season.02/la.brea.s02e13.720p.web.h264-cakes.mkv",
"other": None,
"series": "La Brea",
"season": 2,
"episode": 13,
"title": "The Journey (1)",
"year": 2021,
"tvdb_id": None,
"series_tvdb_id": 395029,
"series_imdb_id": "tt11640018",
"alternative_series": [],
"used_scene_name": True,
}
)
def test_list_video_2(video_2):
lang = Language.fromalpha2("hu")
with SuperSubtitlesProvider() as provider:
subs = provider.list_subtitles(video_2, {lang})
for sub in subs:
matches = sub.get_matches(video_2)
assert {"season", "episode", "series"}.issubset(matches)