From e6d12e36c72d40b3e7fcb0353122f5058e4ce0da Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sun, 16 May 2021 05:48:59 +0200 Subject: [PATCH] Don't accumulate playlist items over multiple attemps Playlist items would previously have been added once for each attempt, due to items being scoped differently than the playlist parsing attempts. Each attempt would add to the playlist every time, since we only returned outside the attempts loop. --- media/url_from_playlist.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/media/url_from_playlist.py b/media/url_from_playlist.py index a0fdccd..7d03c7b 100644 --- a/media/url_from_playlist.py +++ b/media/url_from_playlist.py @@ -1,3 +1,4 @@ +import logging import youtube_dl from constants import tr_cli as tr import variables as var @@ -5,8 +6,10 @@ from media.item import item_builders, item_loaders, item_id_generators from media.url import URLItem, url_item_id_generator +log = logging.getLogger("bot") + + def get_playlist_info(url, start_index=0, user=""): - items = [] ydl_opts = { 'extract_flat': 'in_playlist', 'verbose': var.config.getboolean('debug', 'youtube_dl') @@ -23,6 +26,7 @@ def get_playlist_info(url, start_index=0, user=""): with youtube_dl.YoutubeDL(ydl_opts) as ydl: attempts = var.config.getint('bot', 'download_attempts', fallback=2) for i in range(attempts): + items = [] try: info = ydl.extract_info(url, download=False) # # if url is not a playlist but a video @@ -55,10 +59,12 @@ def get_playlist_info(url, start_index=0, user=""): } items.append(music) - except: # todo need to be specified - pass - return items + except Exception as ex: + log.exception(ex, exc_info=True) + continue + + return items def playlist_url_item_builder(**kwargs):