diff --git a/yt_dlp/extractor/playsuisse.py b/yt_dlp/extractor/playsuisse.py index d74024b03a..b5edf49608 100644 --- a/yt_dlp/extractor/playsuisse.py +++ b/yt_dlp/extractor/playsuisse.py @@ -260,20 +260,22 @@ class PlaySuisseIE(InfoExtractor): self._merge_subtitles(subs, target=subtitles) return { - '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(traverse_obj(media_data, 'duration')), 'formats': formats, 'subtitles': subtitles, - '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')), + **traverse_obj(media_data, { + 'id': ('id', {str}), + 'title': ('name', {str}), + 'description': (('descriptionLong', 'description'), {str}, any), + 'genres': ('contentTypes', ..., {str}), + 'creators': ('directors', ..., {str}), + 'cast': ('mainCast', ..., {str}), + 'location': ('productionCountries', ..., {str}, any), + 'release_year': ('year', {str}), + 'duration': ('duration', {int_or_none}), + 'series': ('seriesName', {str}), + 'season_number': ('seasonNumber', {int_or_none}), + 'episode': ('name', {str}), + 'episode_number': ('episodeNumber', {int_or_none}), + }), }