From d38d7bd1b10cb0a93826f7210257d9b5e94548e0 Mon Sep 17 00:00:00 2001 From: McSwindler Date: Thu, 9 Apr 2026 10:15:11 -0500 Subject: [PATCH] fix: handle playlists that don't supply video ids --- app/subscriptions.py | 2 ++ app/ytdl.py | 3 +++ 2 files changed, 5 insertions(+) diff --git a/app/subscriptions.py b/app/subscriptions.py index 4db28c8..031ede0 100644 --- a/app/subscriptions.py +++ b/app/subscriptions.py @@ -359,6 +359,8 @@ class SubscriptionManager: if not eid or not vurl: continue queue_entry = dict(ent) + if "id" not in queue_entry: + queue_entry["id"] = eid queue_entry["_type"] = "video" queue_entry["webpage_url"] = vurl result = await self.dqueue.add_entry( diff --git a/app/ytdl.py b/app/ytdl.py index 21d44f9..509ebb7 100644 --- a/app/ytdl.py +++ b/app/ytdl.py @@ -19,6 +19,7 @@ from yt_dlp.utils import STR_FORMAT_RE_TMPL, STR_FORMAT_TYPES from dl_formats import get_format, get_opts, AUDIO_FORMATS from datetime import datetime from state_store import AtomicJsonStore, from_json_compatible, read_legacy_shelf, to_json_compatible +from subscriptions import _entry_id log = logging.getLogger('ytdl') @@ -930,6 +931,8 @@ class DownloadQueue: if _add_gen is not None and self._add_generation != _add_gen: log.info(f'Playlist add canceled after processing {len(already)} entries') return {'status': 'ok', 'msg': f'Canceled - added {len(already)} items before cancel'} + if "id" not in etr: + etr["id"] = _entry_id(etr) etr["_type"] = "video" etr[etype] = entry.get("id") or entry.get("channel_id") or entry.get("channel") etr[f"{etype}_index"] = '{{0:0{0:d}d}}'.format(index_digits).format(index)