|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
import os
|
|
|
|
from subliminal_patch.providers.argenteam import ArgenteamProvider
|
|
|
|
from subliminal_patch.providers.argenteam import ArgenteamSubtitle
|
|
|
|
from subliminal_patch.core import Episode
|
|
|
|
from subzero.language import Language
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
|
|
"imdb_id,expected_id", [("tt0028950", 62790), ("tt0054407", 102006)]
|
|
|
|
)
|
|
|
|
def test_search_ids_movie(imdb_id, expected_id):
|
|
|
|
with ArgenteamProvider() as provider:
|
|
|
|
ids = provider._search_ids(imdb_id)
|
|
|
|
assert ids[0] == expected_id
|
|
|
|
|
|
|
|
|
|
|
|
def test_search_ids_tv_show():
|
|
|
|
with ArgenteamProvider() as provider:
|
|
|
|
ids = provider._search_ids("tt0306414", season=1, episode=1)
|
|
|
|
assert ids[0] == 10075
|
|
|
|
|
|
|
|
|
|
|
|
def test_parse_subtitles_episode():
|
|
|
|
with ArgenteamProvider() as provider:
|
|
|
|
assert len(provider._parse_subtitles([10075])) > 1
|
|
|
|
|
|
|
|
|
|
|
|
def test_parse_subtitles_movie():
|
|
|
|
with ArgenteamProvider() as provider:
|
|
|
|
assert len(provider._parse_subtitles([61], is_episode=False)) > 3
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_matches_episode(episodes):
|
|
|
|
episode = episodes["breaking_bad_s01e01"]
|
|
|
|
subtitle = ArgenteamSubtitle(
|
|
|
|
Language.fromalpha2("es"),
|
|
|
|
None,
|
|
|
|
"https://argenteam.net/subtitles/24002/Breaking.Bad.%282008%29.S01E01-Pilot.BluRay.x264.720p-REWARD",
|
|
|
|
"Breaking.Bad.(2008).S01E01-Pilot.BluRay.x264.720p-REWARD\nBluRay x264 720p",
|
|
|
|
{"series", "title", "season", "episode", "imdb_id"},
|
|
|
|
)
|
|
|
|
matches = subtitle.get_matches(episode)
|
|
|
|
assert matches == {
|
|
|
|
"title",
|
|
|
|
"season",
|
|
|
|
"episode",
|
|
|
|
"imdb_id",
|
|
|
|
"source",
|
|
|
|
"video_codec",
|
|
|
|
"resolution",
|
|
|
|
"edition",
|
|
|
|
"streaming_service",
|
|
|
|
"release_group",
|
|
|
|
"series",
|
|
|
|
"year",
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_matches_movie(movies):
|
|
|
|
movie = movies["dune"]
|
|
|
|
subtitle = ArgenteamSubtitle(
|
|
|
|
Language.fromalpha2("es"),
|
|
|
|
None,
|
|
|
|
"https://argenteam.net/subtitles/86024/Dune.Part.One.%282021%29.WEB.H264.1080p-NAISU",
|
|
|
|
"WEB H264 1080p",
|
|
|
|
{"title", "year", "imdb_id"},
|
|
|
|
)
|
|
|
|
matches = subtitle.get_matches(movie)
|
|
|
|
assert matches == {
|
|
|
|
"title",
|
|
|
|
"year",
|
|
|
|
"imdb_id",
|
|
|
|
"source",
|
|
|
|
"resolution",
|
|
|
|
"edition",
|
|
|
|
"video_codec",
|
|
|
|
"streaming_service",
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_subtitles_movie(movies):
|
|
|
|
item = movies["dune"]
|
|
|
|
with ArgenteamProvider() as provider:
|
|
|
|
subtitles = provider.list_subtitles(item, {Language("spa", "MX")})
|
|
|
|
|
|
|
|
for expected in (
|
|
|
|
"https://argenteam.net/subtitles/86023/Dune.Part.One.%282021%29.WEB.H264.720p-NAISU",
|
|
|
|
"https://argenteam.net/subtitles/86024/Dune.Part.One.%282021%29.WEB.H264.1080p-NAISU",
|
|
|
|
"https://argenteam.net/subtitles/86025/Dune.Part.One.%282021%29.WEB.x265.2160p-NAISU",
|
|
|
|
):
|
|
|
|
assert any(expected == sub.download_link for sub in subtitles)
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_subtitles_movie_no_imdb(movies):
|
|
|
|
item = movies["dune"]
|
|
|
|
item.imdb_id = None
|
|
|
|
with ArgenteamProvider() as provider:
|
|
|
|
assert not provider.list_subtitles(item, {Language("spa", "MX")})
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_subtitles_movie_not_found(movies):
|
|
|
|
item = movies["dune"]
|
|
|
|
item.imdb_id = "tt29318321832"
|
|
|
|
with ArgenteamProvider() as provider:
|
|
|
|
assert not provider.list_subtitles(item, {Language("spa", "MX")})
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_subtitles_episode(episodes):
|
|
|
|
item = episodes["breaking_bad_s01e01"]
|
|
|
|
with ArgenteamProvider() as provider:
|
|
|
|
subtitles = provider.list_subtitles(item, {Language("spa", "MX")})
|
|
|
|
|
|
|
|
for expected in (
|
|
|
|
"https://argenteam.net/subtitles/24002/Breaking.Bad.%282008%29.S01E01-Pilot.BluRay.x264.720p-REWARD",
|
|
|
|
"https://argenteam.net/subtitles/23940/Breaking.Bad.%282008%29.S01E01-Pilot.DVDRip.XviD-ORPHEUS",
|
|
|
|
):
|
|
|
|
assert any(expected == sub.download_link for sub in subtitles)
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_subtitles_episode_no_imdb_id(episodes):
|
|
|
|
item = episodes["breaking_bad_s01e01"]
|
|
|
|
item.series_imdb_id = None
|
|
|
|
with ArgenteamProvider() as provider:
|
|
|
|
assert not provider.list_subtitles(item, {Language("spa", "MX")})
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_subtitles_episode_not_found(episodes):
|
|
|
|
item = episodes["breaking_bad_s01e01"]
|
|
|
|
item.series_imdb_id = "tt29318321832"
|
|
|
|
with ArgenteamProvider() as provider:
|
|
|
|
assert not provider.list_subtitles(item, {Language("spa", "MX")})
|
|
|
|
|
|
|
|
|
|
|
|
def test_download_subtitle(episodes):
|
|
|
|
item = episodes["breaking_bad_s01e01"]
|
|
|
|
with ArgenteamProvider() as provider:
|
|
|
|
subtitles = provider.list_subtitles(item, {Language("spa", "MX")})
|
|
|
|
provider.download_subtitle(subtitles[0])
|
|
|
|
assert subtitles[0].is_valid()
|