diff --git a/src/html_extract.py b/src/html_extract.py
index 44f10c5..7f2212a 100644
--- a/src/html_extract.py
+++ b/src/html_extract.py
@@ -47,6 +47,10 @@ RE_SEP = re.compile(
r"\s*(?:\+|;|/)\s*(?=Проф|Люб|Авт|Дубл|Многоголос|Двухголос|Одноголос)",
re.I)
+# строка, начинающаяся со слова типа озвучки (продолжение списка под «Перевод:»)
+RE_TYPE_START = re.compile(
+ r"^\s*(?:Проф|Люб|Авт|Дубл|Многоголос|Двухголос|Одноголос)", re.I)
+
SELECTORS = ("div.post_body", "div[id^=post-text-]", ".postbody", "#tabs")
@@ -122,6 +126,11 @@ def extract_segments(text: str) -> list[str]:
if j >= len(lines):
break
body, i = lines[j].strip(), j + 1
+ # rutracker: «Перевод:» и под ним по строке на дорожку — берём
+ # подряд идущие строки, начинающиеся со слова типа
+ while i < len(lines) and RE_TYPE_START.match(lines[i]):
+ body += " ; " + lines[i].strip()
+ i += 1
else:
i += 1
continue
diff --git a/tests/run_tests.py b/tests/run_tests.py
index 9ae3d43..84231f9 100644
--- a/tests/run_tests.py
+++ b/tests/run_tests.py
@@ -102,6 +102,19 @@ segs = extract_segments("Перевод:\nПрофессиональный (ду
check("значение на следующей строке",
segs == ["Профессиональный (дублированный) Невафильм"], f"got {segs}")
+segs = extract_segments(
+ "Перевод: \n"
+ "Профессиональный (дублированный) | Cinema Tone Production\n"
+ "Профессиональный (псевдодублированный) | HDRezka Studio\n"
+ "Профессиональный (многоголосый закадровый) | HDRezka Studio\n"
+ "Профессиональный (многоголосый закадровый) | TVShows\n"
+ "\nОригинальная аудиодорожка: Английская\n")
+check("список строк под «Перевод:» (rt 6919056)", segs == [
+ "Профессиональный (дублированный) | Cinema Tone Production",
+ "Профессиональный (псевдодублированный) | HDRezka Studio",
+ "Профессиональный (многоголосый закадровый) | HDRezka Studio",
+ "Профессиональный (многоголосый закадровый) | TVShows"], f"got {segs}")
+
segs = extract_segments("Перевод: Профессиональный (двухголосый закадровый) + Любительский (одноголосый закадровый)")
check("разделитель +", len(segs) == 2, f"got {segs}")