kinozal: догрузка вкладки «Релиз» по URL; кодек-строки «Аудио N» как источник студий
На kinozal во встроенном #tabs только «Техданные» («Перевод:» без студий), а строки «Аудио N: … (MVO, LostFilm)» лежат во вкладке «Релиз», которую страница грузит JS. Поэтому по URL определялись только типы без студий. * fetch: для kinozal скачиваются вкладки showtab(id,N) (get_srv_details.php?id=…&pagesd=N, кроме «Техданных» и «Скриншотов») и дописываются в #tabs; недоступная вкладка пропускается. * release: кодек-строки с типом озвучки берутся правилом codec_segments (сегментатор их отбрасывает — в разметке rutracker это не raw) и идут второстепенным источником (source=codec / page+codec): только дорожки со студией, дубли студии (same_studio) пропускаются, студия вписывается в дорожку того же типа без студии. «English Dubbing» и т.п. не берутся. * merge_title_tracks переведён на общий merge_extra_tracks. e2e test rutracker без изменений (P 0.988 / R 0.982); train-страницы P 0.975 -> 0.951. Тесты: 77 ok. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
6a87bc993c
commit
1f9ee46a0d
4 files changed
+177
-31
No files matched your search
@@ -219,6 +219,34 @@ check("title: студия вписана в дорожку без студии"
|
||||
check("title: дубль студии пропущен, новая добавлена",
|
||||
len(_page) == 3 and _page[2]["source"] == "title")
|
||||
|
||||
from src.fetch import inline_tabs, kinozal_tabs # noqa: E402
|
||||
from src.release import codec_segments, merge_extra_tracks, same_studio # noqa: E402
|
||||
|
||||
_kz = ('<ul><li><a onclick="showtab(7,100); return false;" href="#">Техданные</a></li>'
|
||||
'<li><a onclick="showtab(7,0); return false;" href="#">Релиз</a></li>'
|
||||
'<li><a onclick="showtab(7,2); return false;" href="#">Скриншоты</a></li></ul>'
|
||||
'<div id="tabs"><b>Перевод:</b> Профессиональный многоголосый</div>')
|
||||
check("kinozal: вкладки без «Техданных» и скриншотов", kinozal_tabs(_kz) == [("7", 0, "Релиз")])
|
||||
_kz_text = html_to_text(inline_tabs(_kz, [("Релиз", "Аудио 1: AC3 - Русский (MVO, LostFilm)<br>")]))
|
||||
check("kinozal: вкладка «Релиз» попадает в текст",
|
||||
"Перевод: Профессиональный многоголосый" in _kz_text and "(MVO, LostFilm)" in _kz_text)
|
||||
check("codec_segments: русская дорожка с типом, без иноязычной",
|
||||
codec_segments("Аудио 3: AC3, 2.0 ch - Русский (MVO, HDrezka Studio)\n"
|
||||
"Аудио 6: E-AC3, 5.1 ch, 640 Kbps - English Dubbing\n"
|
||||
"Перевод: Профессиональный") == ["AC3, 2.0 ch - Русский (MVO, HDrezka Studio)"])
|
||||
check("same_studio: варианты написания",
|
||||
same_studio("DVD", "DVD Магия") and same_studio("Михаил Яроцкий", "М.Яроцкий/Kyberpunk")
|
||||
and not same_studio("LostFilm", "HDrezka"))
|
||||
_page2 = [dict(_t("проф. многоголосый", None), studio_span=None, studio_confidence=None)]
|
||||
merge_extra_tracks(_page2, [
|
||||
dict(_t("проф. многоголосый", "HDrezka"), studio_span="HDrezka Studio", studio_confidence=1),
|
||||
dict(_t("проф. многоголосый", "LostFilm"), studio_span="LostFilm", studio_confidence=1),
|
||||
dict(_t("одноголосый", None), studio_span=None, studio_confidence=None)],
|
||||
"codec", match=same_studio)
|
||||
check("codec: студия вписана, новая добавлена, без студии — нет",
|
||||
[(x["studio"], x["source"]) for x in _page2]
|
||||
== [("HDrezka", "page+codec"), ("LostFilm", "codec")])
|
||||
|
||||
_dump = ("Меню\nГангстерленд / MobLand / 2025 / ПМ (LostFilm) / WEB\n"
|
||||
"Гангстерленд / 2026 / ДБ (X) / WEB-DL")
|
||||
check("title_from_text: первая строка",
|
||||
|
||||
Reference in new issue
Block a user