mirror of
https://github.com/tubearchivist/tubearchivist-frontend.git
synced 2024-11-22 03:40:14 +00:00
add download format channel overwrite per video
This commit is contained in:
parent
a7945e30e3
commit
89428297c9
@ -32,6 +32,7 @@ class VideoDownloader:
|
|||||||
|
|
||||||
def __init__(self, youtube_id_list=False):
|
def __init__(self, youtube_id_list=False):
|
||||||
self.obs = False
|
self.obs = False
|
||||||
|
self.video_overwrites = False
|
||||||
self.youtube_id_list = youtube_id_list
|
self.youtube_id_list = youtube_id_list
|
||||||
self.config = AppConfig().config
|
self.config = AppConfig().config
|
||||||
self._build_obs()
|
self._build_obs()
|
||||||
@ -39,6 +40,11 @@ class VideoDownloader:
|
|||||||
|
|
||||||
def run_queue(self):
|
def run_queue(self):
|
||||||
"""setup download queue in redis loop until no more items"""
|
"""setup download queue in redis loop until no more items"""
|
||||||
|
pending = PendingList()
|
||||||
|
pending.get_download()
|
||||||
|
pending.get_channels()
|
||||||
|
self.video_overwrites = pending.video_overwrites
|
||||||
|
|
||||||
queue = RedisQueue("dl_queue")
|
queue = RedisQueue("dl_queue")
|
||||||
|
|
||||||
limit_queue = self.config["downloads"]["limit_count"]
|
limit_queue = self.config["downloads"]["limit_count"]
|
||||||
@ -182,16 +188,31 @@ class VideoDownloader:
|
|||||||
|
|
||||||
self.obs["postprocessors"] = postprocessors
|
self.obs["postprocessors"] = postprocessors
|
||||||
|
|
||||||
|
def get_format_overwrites(self, youtube_id):
|
||||||
|
"""get overwrites from single video"""
|
||||||
|
overwrites = self.video_overwrites.get(youtube_id, False)
|
||||||
|
if overwrites:
|
||||||
|
return overwrites.get("download_format", False)
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
def _dl_single_vid(self, youtube_id):
|
def _dl_single_vid(self, youtube_id):
|
||||||
"""download single video"""
|
"""download single video"""
|
||||||
|
obs = self.obs.copy()
|
||||||
|
format_overwrite = self.get_format_overwrites(youtube_id)
|
||||||
|
if format_overwrite:
|
||||||
|
obs["format"] = format_overwrite
|
||||||
|
|
||||||
dl_cache = self.config["application"]["cache_dir"] + "/download/"
|
dl_cache = self.config["application"]["cache_dir"] + "/download/"
|
||||||
|
|
||||||
# check if already in cache to continue from there
|
# check if already in cache to continue from there
|
||||||
all_cached = ignore_filelist(os.listdir(dl_cache))
|
all_cached = ignore_filelist(os.listdir(dl_cache))
|
||||||
for file_name in all_cached:
|
for file_name in all_cached:
|
||||||
if youtube_id in file_name:
|
if youtube_id in file_name:
|
||||||
self.obs["outtmpl"] = os.path.join(dl_cache, file_name)
|
obs["outtmpl"] = os.path.join(dl_cache, file_name)
|
||||||
with yt_dlp.YoutubeDL(self.obs) as ydl:
|
|
||||||
|
print(obs)
|
||||||
|
with yt_dlp.YoutubeDL(obs) as ydl:
|
||||||
try:
|
try:
|
||||||
ydl.download([youtube_id])
|
ydl.download([youtube_id])
|
||||||
except yt_dlp.utils.DownloadError:
|
except yt_dlp.utils.DownloadError:
|
||||||
@ -261,6 +282,7 @@ class VideoDownloader:
|
|||||||
print("sync playlists")
|
print("sync playlists")
|
||||||
self._add_subscribed_channels()
|
self._add_subscribed_channels()
|
||||||
pending = PendingList()
|
pending = PendingList()
|
||||||
|
pending.get_download()
|
||||||
pending.get_indexed()
|
pending.get_indexed()
|
||||||
all_youtube_ids = [i["youtube_id"] for i in pending.all_videos]
|
all_youtube_ids = [i["youtube_id"] for i in pending.all_videos]
|
||||||
for id_c, channel_id in enumerate(self.channels):
|
for id_c, channel_id in enumerate(self.channels):
|
||||||
|
Loading…
Reference in New Issue
Block a user