Implement fork of Subby subtitle converter (https://github.com/vevv/subby)

This commit is contained in:
stabbedbybrick
2024-01-30 13:40:30 +01:00
parent f383e154c7
commit adb0cf3f64

View File

@@ -15,6 +15,14 @@ import requests
from bs4 import BeautifulSoup
from pywidevine.device import Device, DeviceTypes
from rich.console import Console
from subby import (
CommonIssuesFixer,
SMPTEConverter,
WebVTTConverter,
ISMTConverter,
WVTTConverter,
SAMIConverter,
)
from unidecode import unidecode
console = Console()
@@ -283,6 +291,25 @@ def add_subtitles(soup: object, subtitle: str, language: str = None) -> object:
return soup
def convert_subtitles(tmp: Path, filename: str, sub_type: str) -> Path:
converters = {
"vtt": WebVTTConverter(),
"ttml": SMPTEConverter(),
"mp4": WVTTConverter(),
"dfxp": ISMTConverter(),
"sami": SAMIConverter(),
}
converter = converters[sub_type]
fixer = CommonIssuesFixer()
file = Path(tmp / f"{filename}.{sub_type}")
srt, _ = fixer.from_srt(converter.from_file(file))
output = Path(tmp / f"{filename}.srt")
srt.save(output)
return output
def from_mpd(mpd_data: str, url: str = None):
root = ET.fromstring(mpd_data)
items = []