mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[ie/twitter:spaces] Improve metadata extraction (#12911)
Authored by: doe1080
This commit is contained in:
		| @@ -1717,21 +1717,22 @@ class TwitterSpacesIE(TwitterBaseIE): | ||||
|     _VALID_URL = TwitterBaseIE._BASE_REGEX + r'i/spaces/(?P<id>[0-9a-zA-Z]{13})' | ||||
| 
 | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://twitter.com/i/spaces/1RDxlgyvNXzJL', | ||||
|         'url': 'https://twitter.com/i/spaces/1OwxWwQOPlNxQ', | ||||
|         'info_dict': { | ||||
|             'id': '1RDxlgyvNXzJL', | ||||
|             'id': '1OwxWwQOPlNxQ', | ||||
|             'ext': 'm4a', | ||||
|             'title': 'King Carlo e la mossa Kansas City per fare il Grande Centro', | ||||
|             'description': 'Twitter Space participated by annarita digiorgio, Signor Ernesto, Raffaello Colosimo, Simone M. Sepe', | ||||
|             'uploader': r're:Lucio Di Gaetano.*?', | ||||
|             'uploader_id': 'luciodigaetano', | ||||
|             'title': 'Everybody in: @mtbarra & @elonmusk discuss the future of EV charging', | ||||
|             'description': 'Twitter Space participated by Elon Musk', | ||||
|             'live_status': 'was_live', | ||||
|             'timestamp': 1659877956, | ||||
|             'upload_date': '20220807', | ||||
|             'release_timestamp': 1659904215, | ||||
|             'release_date': '20220807', | ||||
|             'release_date': '20230608', | ||||
|             'release_timestamp': 1686256230, | ||||
|             'thumbnail': r're:https?://pbs\.twimg\.com/profile_images/.+', | ||||
|             'timestamp': 1686254250, | ||||
|             'upload_date': '20230608', | ||||
|             'uploader': 'Mary Barra', | ||||
|             'uploader_id': 'mtbarra', | ||||
|         }, | ||||
|         'skip': 'No longer available', | ||||
|         'params': {'skip_download': 'm3u8'}, | ||||
|     }, { | ||||
|         # post_live/TimedOut but downloadable | ||||
|         'url': 'https://twitter.com/i/spaces/1vAxRAVQWONJl', | ||||
| @@ -1743,9 +1744,10 @@ class TwitterSpacesIE(TwitterBaseIE): | ||||
|             'uploader': 'Google Cloud', | ||||
|             'uploader_id': 'googlecloud', | ||||
|             'live_status': 'post_live', | ||||
|             'thumbnail': r're:https?://pbs\.twimg\.com/profile_images/.+', | ||||
|             'timestamp': 1681409554, | ||||
|             'upload_date': '20230413', | ||||
|             'release_timestamp': 1681839000, | ||||
|             'release_timestamp': 1681839082, | ||||
|             'release_date': '20230418', | ||||
|             'protocol': 'm3u8',  # ffmpeg is forced | ||||
|             'container': 'm4a_dash',  # audio-only format fixup is applied | ||||
| @@ -1762,6 +1764,9 @@ class TwitterSpacesIE(TwitterBaseIE): | ||||
|             'uploader': '息根とめる', | ||||
|             'uploader_id': 'tomeru_ikinone', | ||||
|             'live_status': 'was_live', | ||||
|             'release_date': '20230601', | ||||
|             'release_timestamp': 1685617200, | ||||
|             'thumbnail': r're:https?://pbs\.twimg\.com/profile_images/.+', | ||||
|             'timestamp': 1685617198, | ||||
|             'upload_date': '20230601', | ||||
|             'protocol': 'm3u8',  # ffmpeg is forced | ||||
| @@ -1779,9 +1784,10 @@ class TwitterSpacesIE(TwitterBaseIE): | ||||
|             'uploader': 'Candace Owens', | ||||
|             'uploader_id': 'RealCandaceO', | ||||
|             'live_status': 'was_live', | ||||
|             'thumbnail': r're:https?://pbs\.twimg\.com/profile_images/.+', | ||||
|             'timestamp': 1723931351, | ||||
|             'upload_date': '20240817', | ||||
|             'release_timestamp': 1723932000, | ||||
|             'release_timestamp': 1723932056, | ||||
|             'release_date': '20240817', | ||||
|             'protocol': 'm3u8_native',  # not ffmpeg, detected as video space | ||||
|         }, | ||||
| @@ -1861,18 +1867,21 @@ class TwitterSpacesIE(TwitterBaseIE): | ||||
| 
 | ||||
|         return { | ||||
|             'id': space_id, | ||||
|             'title': metadata.get('title'), | ||||
|             'description': f'Twitter Space participated by {participants}', | ||||
|             'uploader': traverse_obj( | ||||
|                 metadata, ('creator_results', 'result', 'legacy', 'name')), | ||||
|             'uploader_id': traverse_obj( | ||||
|                 metadata, ('creator_results', 'result', 'legacy', 'screen_name')), | ||||
|             'live_status': live_status, | ||||
|             'release_timestamp': try_call( | ||||
|                 lambda: int_or_none(metadata['scheduled_start'], scale=1000)), | ||||
|             'timestamp': int_or_none(metadata.get('created_at'), scale=1000), | ||||
|             'formats': formats, | ||||
|             'http_headers': headers, | ||||
|             'live_status': live_status, | ||||
|             **traverse_obj(metadata, { | ||||
|                 'title': ('title', {str}), | ||||
|                 # started_at is None when stream is_upcoming so fallback to scheduled_start for --wait-for-video | ||||
|                 'release_timestamp': (('started_at', 'scheduled_start'), {int_or_none(scale=1000)}, any), | ||||
|                 'timestamp': ('created_at', {int_or_none(scale=1000)}), | ||||
|             }), | ||||
|             **traverse_obj(metadata, ('creator_results', 'result', 'legacy', { | ||||
|                 'uploader': ('name', {str}), | ||||
|                 'uploader_id': ('screen_name', {str_or_none}), | ||||
|                 'thumbnail': ('profile_image_url_https', {lambda x: x.replace('_normal', '_400x400')}, {url_or_none}), | ||||
|             })), | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 doe1080
					doe1080