From def349faf6a4a9ec37ddea87d4f0a5b247a3577c Mon Sep 17 00:00:00 2001 From: v3DJG6GL <72495210+v3DJG6GL@users.noreply.github.com> Date: Wed, 5 Mar 2025 12:54:41 +0100 Subject: [PATCH] traverse_obj rewrite --- yt_dlp/extractor/playsuisse.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/yt_dlp/extractor/playsuisse.py b/yt_dlp/extractor/playsuisse.py index cd6196c86..57ba82e7d 100644 --- a/yt_dlp/extractor/playsuisse.py +++ b/yt_dlp/extractor/playsuisse.py @@ -260,20 +260,21 @@ def _extract_single(self, media_data): self._merge_subtitles(subs, target=subtitles) return { - 'id': media_data['id'], - 'title': media_data.get('name'), - 'description': media_data.get('descriptionLong') or media_data.get('description'), - 'genres': media_data.get('contentTypes'), - 'creators': media_data.get('directors'), - 'cast': media_data.get('mainCast'), - 'location': media_data.get('productionCountries'), - 'release_year': int_or_none(media_data.get('year')[:4]) if media_data.get('year') else None, + 'id': traverse_obj(media_data, 'id'), + 'title': traverse_obj(media_data, 'name'), + 'description': traverse_obj(media_data, 'descriptionLong') or traverse_obj(media_data, 'description'), + 'genres': traverse_obj(media_data, 'contentTypes'), + 'creators': traverse_obj(media_data, 'directors'), + 'cast': traverse_obj(media_data, 'mainCast'), + 'location': traverse_obj(media_data, 'productionCountries'), + 'release_year': int_or_none(traverse_obj(media_data, 'year', lambda x: x[:4])), 'thumbnails': thumbnails, - 'duration': int_or_none(media_data.get('duration')), + 'duration': int_or_none(traverse_obj(media_data, 'duration')), 'formats': formats, 'subtitles': subtitles, - 'series': media_data.get('seriesName'), - 'season_number': int_or_none(media_data.get('seasonNumber')), - 'episode': media_data.get('name') if media_data.get('episodeNumber') else None, - 'episode_number': int_or_none(media_data.get('episodeNumber')), + 'series': traverse_obj(media_data, 'seriesName'), + 'season_number': int_or_none(traverse_obj(media_data, 'seasonNumber')), + 'episode': traverse_obj(media_data, 'name') if traverse_obj(media_data, 'episodeNumber') else None, + 'episode_number': int_or_none(traverse_obj(media_data, 'episodeNumber')), } +