Compare commits

...

4 Commits

Author SHA1 Message Date
HitomaruKonpaku
4f7e9c4f58 [ie/twitter:broadcast] Update tests 2023-11-04 23:09:45 +07:00
HitomaruKonpaku
d8a0b038fa [ie/twitter:broadcast] Refactor following review 2023-11-04 22:53:39 +07:00
HitomaruKonpaku
230ad985cf [ie/twitter:broadcast] Add channel data from uploader data 2023-11-04 18:20:25 +07:00
HitomaruKonpaku
28fd9d5eb9 [ie/twitter:broadcast] Update mapping & fix test 2023-11-04 18:10:44 +07:00
2 changed files with 37 additions and 7 deletions

View File

@ -21,7 +21,6 @@ class PeriscopeBaseIE(InfoExtractor):
uploader = broadcast.get('user_display_name') or broadcast.get('username')
title = '%s - %s' % (uploader, title) if uploader else title
is_live = broadcast.get('state').lower() == 'running'
timestamp = int_or_none(broadcast.get('created_at_ms'), scale=1000) or parse_iso8601(broadcast.get('created_at'))
thumbnails = [{
'url': broadcast[image],
@ -30,7 +29,7 @@ class PeriscopeBaseIE(InfoExtractor):
return {
'id': broadcast.get('id') or video_id,
'title': title,
'timestamp': timestamp,
'timestamp': int_or_none(broadcast.get('created_at_ms'), scale=1000) or parse_iso8601(broadcast.get('created_at')),
'uploader': uploader,
'uploader_id': broadcast.get('user_id') or broadcast.get('username'),
'thumbnails': thumbnails,

View File

@ -1563,7 +1563,7 @@ class TwitterBroadcastIE(TwitterBaseIE, PeriscopeBaseIE):
IE_NAME = 'twitter:broadcast'
_VALID_URL = TwitterBaseIE._BASE_REGEX + r'i/broadcasts/(?P<id>[0-9a-zA-Z]{13})'
_TEST = {
_TESTS = [{
# untitled Periscope video
'url': 'https://twitter.com/i/broadcasts/1yNGaQLWpejGj',
'info_dict': {
@ -1571,11 +1571,42 @@ class TwitterBroadcastIE(TwitterBaseIE, PeriscopeBaseIE):
'ext': 'mp4',
'title': 'Andrea May Sahouri - Periscope Broadcast',
'uploader': 'Andrea May Sahouri',
'uploader_id': '1PXEdBZWpGwKe',
'uploader_id': 'andreamsahouri',
'uploader_url': 'https://twitter.com/andreamsahouri',
'timestamp': 1590973638,
'upload_date': '20200601',
'thumbnail': r're:^https?://[^?#]+\.jpg\?token=',
'view_count': int,
},
}
}, {
'url': 'https://twitter.com/i/broadcasts/1ZkKzeyrPbaxv',
'info_dict': {
'id': '1ZkKzeyrPbaxv',
'ext': 'mp4',
'title': 'Starship | SN10 | High-Altitude Flight Test',
'uploader': 'SpaceX',
'uploader_id': 'SpaceX',
'uploader_url': 'https://twitter.com/SpaceX',
'timestamp': 1614812942,
'upload_date': '20210303',
'thumbnail': r're:^https?://[^?#]+\.jpg\?token=',
'view_count': int,
},
}, {
'url': 'https://twitter.com/i/broadcasts/1OyKAVQrgzwGb',
'info_dict': {
'id': '1OyKAVQrgzwGb',
'ext': 'mp4',
'title': 'Starship Flight Test',
'uploader': 'SpaceX',
'uploader_id': 'SpaceX',
'uploader_url': 'https://twitter.com/SpaceX',
'timestamp': 1681993964,
'upload_date': '20230420',
'thumbnail': r're:^https?://[^?#]+\.jpg\?token=',
'view_count': int,
},
}]
def _real_extract(self, url):
broadcast_id = self._match_id(url)
@ -1586,8 +1617,8 @@ class TwitterBroadcastIE(TwitterBaseIE, PeriscopeBaseIE):
raise ExtractorError('Broadcast no longer exists', expected=True)
info = self._parse_broadcast_data(broadcast, broadcast_id)
info['title'] = broadcast.get('status') or info.get('title')
info['uploader_id'] = broadcast.get('twitter_user_id') or info.get('uploader_id')
info['uploader'] = broadcast.get('twitter_username') or info.get('uploader')
info['uploader_id'] = broadcast.get('twitter_username') or info.get('uploader_id')
info['uploader_url'] = format_field(broadcast, 'twitter_username', 'https://twitter.com/%s', default=None)
media_key = broadcast['media_key']
source = self._call_api(
f'live_video_stream/status/{media_key}', media_key)['source']