1
0
mirror of https://github.com/yt-dlp/yt-dlp.git synced 2025-06-28 01:18:30 +00:00

Refactored to work with Python 3.9

This commit is contained in:
1100101 2025-05-16 13:04:42 +02:00
parent e10926d1d2
commit 096fd691bb

View File

@ -284,16 +284,7 @@ class ArteTVPlaylistIE(ArteTVBaseIE):
}, },
}] }]
def _real_extract(self, url): def _entries(self, playlist_data, playlist_id):
lang, playlist_id = self._match_valid_url(url).group('lang', 'id')
webpage = self._download_webpage(url, playlist_id)
unescape_func = lambda jstring: jstring.replace('\\"', '"').replace('\\\\', '\\')
playlist_data = self._search_json(r'\$L23.+?', webpage, 'series data',
playlist_id,
end_pattern=r'\],\[\[',
transform_source=unescape_func)
playlist_item_filter = lambda _, v: re.match(rf'collection_(?:videos|subcollection)_{playlist_id}', v['code']) playlist_item_filter = lambda _, v: re.match(rf'collection_(?:videos|subcollection)_{playlist_id}', v['code'])
collections = traverse_obj(playlist_data, collections = traverse_obj(playlist_data,
('data', ('data',
@ -303,20 +294,32 @@ def _real_extract(self, url):
'data', 'data',
...)) ...))
entries = [{ for video in collections:
yield {
'_type': 'url_transparent', '_type': 'url_transparent',
'url': f'https://www.arte.tv{video['url']}', 'url': 'https://www.arte.tv' + video['url'],
'ie_key': ArteTVIE.ie_key(), 'ie_key': ArteTVIE.ie_key(),
'id': video.get('id'), 'id': video['id'],
'title': video.get('title'), 'title': video.get('title'),
'alt_title': video.get('subtitle'), 'alt_title': video.get('subtitle'),
'duration': int_or_none(traverse_obj(video, ('duration'))), 'duration': int_or_none(traverse_obj(video, ('duration'))),
'age_limit': int_or_none(traverse_obj(video, 'ageRating')), 'age_limit': int_or_none(traverse_obj(video, 'ageRating')),
} for video in collections] }
return self.playlist_result(entries, playlist_id, def _real_extract(self, url):
traverse_obj(playlist_data, ('data', 'metadata', 'title')), lang, playlist_id = self._match_valid_url(url).group('lang', 'id')
traverse_obj(playlist_data, ('data', 'metadata', 'description'))) webpage = self._download_webpage(url, playlist_id)
unescape_func = lambda jstring: jstring.replace('\\"', '"').replace('\\\\', '\\')
json_data = self._search_json(r'\$L23.+?', webpage, 'series data',
playlist_id,
end_pattern=r'\],\[\[',
transform_source=unescape_func)
return self.playlist_result(self._entries(json_data, playlist_id),
playlist_id,
traverse_obj(json_data, ('data', 'metadata', 'title')),
traverse_obj(json_data, ('data', 'metadata', 'description')))
class ArteTVCategoryIE(ArteTVBaseIE): class ArteTVCategoryIE(ArteTVBaseIE):