diff --git a/rwx/sw/ytdlp/__init__.py b/rwx/sw/ytdlp/__init__.py index 5f6af1f..99d93e9 100644 --- a/rwx/sw/ytdlp/__init__.py +++ b/rwx/sw/ytdlp/__init__.py @@ -10,7 +10,7 @@ from rwx import Object from rwx.fs import read_file_yaml from rwx.log import stream as log -EXT = "webm" +SUBTITLES_EXTENSIONS = ["vtt"] TIMESTAMP = "%Y%m%d%H%M%S" URL = "https://youtube.com" @@ -135,6 +135,20 @@ class Playlist(Object): self.title = d["title"] +class Subtitles(Object): + """YouTube subtitles.""" + + def __init__(self, uid: str, d: dict) -> None: + """Set subtitles info. + + :param d: subtitles info + :type d: dict + """ + self.uid = uid + self.extension = d["ext"] + self.name = d["name"] + + # TODO Thumbnail @@ -175,7 +189,12 @@ class Video(Object): self.categories = d["categories"] self.tags = d["tags"] # TODO automatic_captions - # TODO subtitles + self.subtitles = [] + for uid, entries in d["subtitles"].items(): + for entry in entries: + subtitles = Subtitles(uid, entry) + if subtitles.extension in SUBTITLES_EXTENSIONS: + self.subtitles.append(subtitles) self.chapters = d["chapters"] self.likes = d["like_count"] self.timestamp = datetime.fromtimestamp(d["timestamp"]).strftime(