From deab875acd647d02654f1a721824842923419ff0 Mon Sep 17 00:00:00 2001 From: almeidapaulopt Date: Thu, 17 Feb 2022 15:28:24 +0000 Subject: ass playlist parameters --- app/ytdl.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/app/ytdl.py b/app/ytdl.py index 6e406b0..46f4f1c 100644 --- a/app/ytdl.py +++ b/app/ytdl.py @@ -210,8 +210,15 @@ class DownloadQueue: if etype == 'playlist': entries = entry['entries'] log.info(f'playlist detected with {len(entries)} entries') + playlist_index_digits = len(str(len(entries))) results = [] - for etr in entries: + for index, etr in enumerate(entries, start=1): + etr["playlist"] = entry["id"] + etr["playlist_index"] = '{{0:0{0:d}d}}'.format(playlist_index_digits).format(index) + etr["playlist_id"] = entry["id"] + etr["playlist_title"] = entry["title"] + etr["playlist_uploader"] = entry["uploader"] + etr["playlist_uploader_id"] = entry["uploader_id"] results.append(await self.__add_entry(etr, quality, format, already)) if any(res['status'] == 'error' for res in results): return {'status': 'error', 'msg': ', '.join(res['msg'] for res in results if res['status'] == 'error' and 'msg' in res)} @@ -220,7 +227,15 @@ class DownloadQueue: if not self.queue.exists(entry['id']): dl = DownloadInfo(entry['id'], entry['title'], entry.get('webpage_url') or entry['url'], quality, format) dldirectory = self.config.DOWNLOAD_DIR if (quality != 'audio' and format != 'mp3') else self.config.AUDIO_DOWNLOAD_DIR - self.queue.put(Download(dldirectory, self.config.OUTPUT_TEMPLATE, quality, format, self.config.YTDL_OPTIONS, dl)) + output = self.config.OUTPUT_TEMPLATE + if "playlist" in entry: + output = output.replace("%(playlist_index)s",entry["playlist_index"]) + output = output.replace("%(playlist_id)s",entry["playlist_id"]) + output = output.replace("%(playlist_title)s",entry["playlist_title"]) + output = output.replace("%(playlist_uploader)s",str(entry["playlist_uploader"])) + output = output.replace("%(playlist_uploader_id)s",str(entry["playlist_uploader_id"])) + output = output.replace("%(playlist)s",entry["playlist"]) + self.queue.put(Download(dldirectory, output, quality, format, self.config.YTDL_OPTIONS, dl)) self.event.set() await self.notifier.added(dl) return {'status': 'ok'} -- cgit From 979c98ef7ea0ac07a79d9a78d8ed3aa127dd9e39 Mon Sep 17 00:00:00 2001 From: almeidapaulopt Date: Thu, 17 Feb 2022 16:33:17 +0000 Subject: pass properties if they exist --- app/ytdl.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/app/ytdl.py b/app/ytdl.py index 46f4f1c..38e29b8 100644 --- a/app/ytdl.py +++ b/app/ytdl.py @@ -215,10 +215,9 @@ class DownloadQueue: for index, etr in enumerate(entries, start=1): etr["playlist"] = entry["id"] etr["playlist_index"] = '{{0:0{0:d}d}}'.format(playlist_index_digits).format(index) - etr["playlist_id"] = entry["id"] - etr["playlist_title"] = entry["title"] - etr["playlist_uploader"] = entry["uploader"] - etr["playlist_uploader_id"] = entry["uploader_id"] + for property in ("id", "title", "uploader", "uploader_id"): + if property in entry: + etr[f"playlist_{property}"] = entry[property] results.append(await self.__add_entry(etr, quality, format, already)) if any(res['status'] == 'error' for res in results): return {'status': 'error', 'msg': ', '.join(res['msg'] for res in results if res['status'] == 'error' and 'msg' in res)} @@ -228,13 +227,9 @@ class DownloadQueue: dl = DownloadInfo(entry['id'], entry['title'], entry.get('webpage_url') or entry['url'], quality, format) dldirectory = self.config.DOWNLOAD_DIR if (quality != 'audio' and format != 'mp3') else self.config.AUDIO_DOWNLOAD_DIR output = self.config.OUTPUT_TEMPLATE - if "playlist" in entry: - output = output.replace("%(playlist_index)s",entry["playlist_index"]) - output = output.replace("%(playlist_id)s",entry["playlist_id"]) - output = output.replace("%(playlist_title)s",entry["playlist_title"]) - output = output.replace("%(playlist_uploader)s",str(entry["playlist_uploader"])) - output = output.replace("%(playlist_uploader_id)s",str(entry["playlist_uploader_id"])) - output = output.replace("%(playlist)s",entry["playlist"]) + for property, value in entry.items(): + if property.startswith("playlist"): + output = output.replace(f"%({property})s", str(value)) self.queue.put(Download(dldirectory, output, quality, format, self.config.YTDL_OPTIONS, dl)) self.event.set() await self.notifier.added(dl) -- cgit