Files
unshackle/tests/lang_selection/test_apply_original_language.py
T
imSp4rky 825678a1c4 fix(dl): keep the --enrich original language after get_tracks
A service that sets title.language in get_tracks replaced the metadata language, so 'orig' picked the wrong audio. Video tags and original flags move to the enrich language with the title.
2026-10-02 20:06:56 -06:00

54 lines
1.8 KiB
Python

from types import SimpleNamespace
from langcodes import Language
from unshackle.core.utilities import apply_original_language
class FakeTracks(SimpleNamespace):
def __iter__(self):
return iter([*self.videos, *self.audio])
def track(lang, original=False):
return SimpleNamespace(language=Language.get(lang) if lang else None, is_original_lang=original)
def title(language, videos=(), audio=()):
return SimpleNamespace(
language=Language.get(language) if language else None,
tracks=FakeTracks(videos=list(videos), audio=list(audio)),
)
def test_overrides_the_service_guess_and_its_videos():
t = title("es", videos=[track("es"), track("es")])
apply_original_language(t, Language.get("it"))
assert str(t.language) == "it"
assert [str(v.language) for v in t.tracks.videos] == ["it", "it"]
def test_videos_in_another_language_keep_it():
t = title("es", videos=[track("es"), track("ja"), track(None)])
apply_original_language(t, Language.get("it"))
assert [v.language and str(v.language) for v in t.tracks.videos] == ["it", "ja", None]
def test_no_service_language_keeps_video_tags():
t = title(None, videos=[track("en")])
apply_original_language(t, Language.get("it"))
assert str(t.language) == "it"
assert str(t.tracks.videos[0].language) == "en"
def test_original_flag_moves_to_the_enrich_language():
t = title("es", audio=[track("es-419", original=True), track("it-IT")])
apply_original_language(t, Language.get("it"))
assert [a.is_original_lang for a in t.tracks.audio] == [False, True]
def test_same_language_leaves_flags_alone():
t = title("it", videos=[track(None, original=True)])
apply_original_language(t, Language.get("it"))
assert t.tracks.videos[0].is_original_lang is True