fix: handle playlists that don't supply video ids

This commit is contained in:
McSwindler
2026-04-09 10:15:11 -05:00
parent 1f79883b75
commit d38d7bd1b1
2 changed files with 5 additions and 0 deletions
+2
View File
@@ -359,6 +359,8 @@ class SubscriptionManager:
if not eid or not vurl: if not eid or not vurl:
continue continue
queue_entry = dict(ent) queue_entry = dict(ent)
if "id" not in queue_entry:
queue_entry["id"] = eid
queue_entry["_type"] = "video" queue_entry["_type"] = "video"
queue_entry["webpage_url"] = vurl queue_entry["webpage_url"] = vurl
result = await self.dqueue.add_entry( result = await self.dqueue.add_entry(
+3
View File
@@ -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 dl_formats import get_format, get_opts, AUDIO_FORMATS
from datetime import datetime from datetime import datetime
from state_store import AtomicJsonStore, from_json_compatible, read_legacy_shelf, to_json_compatible from state_store import AtomicJsonStore, from_json_compatible, read_legacy_shelf, to_json_compatible
from subscriptions import _entry_id
log = logging.getLogger('ytdl') log = logging.getLogger('ytdl')
@@ -930,6 +931,8 @@ class DownloadQueue:
if _add_gen is not None and self._add_generation != _add_gen: if _add_gen is not None and self._add_generation != _add_gen:
log.info(f'Playlist add canceled after processing {len(already)} entries') log.info(f'Playlist add canceled after processing {len(already)} entries')
return {'status': 'ok', 'msg': f'Canceled - added {len(already)} items before cancel'} 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["_type"] = "video"
etr[etype] = entry.get("id") or entry.get("channel_id") or entry.get("channel") 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) etr[f"{etype}_index"] = '{{0:0{0:d}d}}'.format(index_digits).format(index)