From 4ff90bc796479416fb14d58108cf037fdd71be24 Mon Sep 17 00:00:00 2001 From: nathom Date: Fri, 16 Apr 2021 12:47:59 -0700 Subject: [PATCH] Added video class --- streamrip/downloader.py | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/streamrip/downloader.py b/streamrip/downloader.py index ad69f12..ae4da91 100644 --- a/streamrip/downloader.py +++ b/streamrip/downloader.py @@ -9,8 +9,8 @@ import os import re import shutil import subprocess -from tempfile import gettempdir from dataclasses import dataclass +from tempfile import gettempdir from typing import Any, Generator, Iterable, Union import click @@ -1488,6 +1488,40 @@ class Label(Artist): return self.name +class Video: + """Only for Tidal.""" + + path = "/users/nathan/streamrip/videos/test.mp4" + + def __init__(self, client, id, **kwargs): + self.id = id + self.client = client + self.parent_folder = kwargs.get('parent_folder', 'StreamripDownloads') + os.makedirs(self.parent_folder, exist_ok=True) + + def load_meta(self): + resp = self.client.get(self.id, "video") + self.title = resp['title'] + self.explicit = resp['explicit'] + + def download(self): + url = self.client.get_file_url(self.id, video=True) + # it's more convenient to have ffmpeg download the hls + command = ["ffmpeg", "-i", url, "-c", "copy", "-loglevel", "panic", self.path] + p = subprocess.Popen(command) + p.wait() + + @property + def path(self) -> str: + fname = self.title + if self.explicit: + fname = f"{fname} (Explicit)" + return os.path.join(self.parent_folder, f"{fname}.mp4") + + +# ---------- misc utility functions ----------- + + def _get_tracklist(resp, source) -> list: if source == "qobuz": return resp["tracks"]["items"]