diff --git a/scraper/src/youtube2zim/schemas.py b/scraper/src/youtube2zim/schemas.py index 3698cf1e..643f919f 100644 --- a/scraper/src/youtube2zim/schemas.py +++ b/scraper/src/youtube2zim/schemas.py @@ -74,6 +74,12 @@ class PlaylistPreview(CamelModel): count: int +class Playlists(CamelModel): + """Class to serialize data about a list of YouTube playlists.""" + + playlists: list[PlaylistPreview] + + class Channel(CamelModel): """Class to serialize data about a YouTube channel.""" diff --git a/scraper/src/youtube2zim/scraper.py b/scraper/src/youtube2zim/scraper.py index 29d8ed0e..49640b04 100644 --- a/scraper/src/youtube2zim/scraper.py +++ b/scraper/src/youtube2zim/scraper.py @@ -26,7 +26,6 @@ from dateutil import parser as dt_parser from kiwixstorage import KiwixStorage from pif import get_public_ip -from pydantic.json import pydantic_encoder from zimscraperlib.download import stream_file from zimscraperlib.fix_ogvjs_dist import fix_source_dir from zimscraperlib.i18n import NotFound, get_language_details, setlocale @@ -61,6 +60,7 @@ Channel, Playlist, PlaylistPreview, + Playlists, Subtitle, Video, VideoPreview, @@ -1305,7 +1305,9 @@ def get_playlist_slug(playlist) -> str: self.zim_file.add_item_for( path="playlists.json", title="Playlists", - content=json.dumps(playlist_list, default=pydantic_encoder, indent=2), + content=Playlists(playlists=playlist_list).model_dump_json( + by_alias=True, indent=2 + ), mimetype="application/json", is_front=False, )