From f346b0ef52e4a9fbd83774003b48f6e0fac801be Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Sat, 17 Feb 2024 09:51:21 -0800 Subject: [PATCH] [BUGFIX] Handle case when yt-dlp returns LazyList (#929) Fixes https://github.com/jmbannon/ytdl-sub/issues/910 , when yt-dlp sometimes returns a non-serializable LazyList --- src/ytdl_sub/entries/base_entry.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/ytdl_sub/entries/base_entry.py b/src/ytdl_sub/entries/base_entry.py index 1d8acd3e..d863bc42 100644 --- a/src/ytdl_sub/entries/base_entry.py +++ b/src/ytdl_sub/entries/base_entry.py @@ -8,6 +8,7 @@ from typing import Type from typing import TypeVar from typing import final +from yt_dlp.utils import LazyList from yt_dlp.utils import sanitize_filename from ytdl_sub.entries.script.variable_definitions import VARIABLES @@ -37,6 +38,12 @@ class BaseEntry(ABC): self._working_directory = working_directory self._kwargs = entry_dict + # Sometimes yt-dlp can return a LazyList which is not JSON serializable. + # Cast it to a native list here. (https://github.com/jmbannon/ytdl-sub/issues/910) + for key in self._kwargs.keys(): + if isinstance(self._kwargs[key], LazyList): + self._kwargs[key] = list(self._kwargs[key]) + @property def uid(self) -> str: """