Add `remove_multi_lang_srt_header()` method to Subtitle class

This commit is contained in:
rlaphoenix 2023-12-29 16:20:04 +00:00
parent e7e18a4204
commit 53de34da51
1 changed files with 21 additions and 0 deletions

View File

@ -418,6 +418,27 @@ class Subtitle(Track):
stdout=subprocess.DEVNULL
)
def remove_multi_lang_srt_header(self) -> None:
"""
Remove Multi-Language SRT Header from Subtitle.
Sometimes a SubRip (SRT) format Subtitle has a "MULTI-LANGUAGE SRT" line,
when it shouldn't. This can cause Subtitle format/syntax errors in some
programs including mkvmerge/MKVToolNix.
This should only be used if it truly is a normal SubRip (SRT) subtitle
just with this line added by mistake.
"""
if not self.path or not self.path.exists():
raise ValueError("You must download the subtitle track first.")
if self.codec != Subtitle.Codec.SubRip:
raise ValueError("Only SubRip (SRT) format Subtitles have the 'MULTI-LANGUAGE SRT' header.")
srt_text = self.path.read_text("utf8")
fixed_srt_text = srt_text.replace("MULTI-LANGUAGE SRT\n", "")
self.path.write_text(fixed_srt_text, "utf8")
def __str__(self) -> str:
return " | ".join(filter(bool, [
"SUB",