mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 22:55:18 +00:00 
			
		
		
		
	| @@ -5978,14 +5978,43 @@ class YoutubeTruncatedURLIE(InfoExtractor): | ||||
|             expected=True) | ||||
| 
 | ||||
| 
 | ||||
| class YoutubeClipIE(InfoExtractor): | ||||
| class YoutubeClipIE(YoutubeTabBaseInfoExtractor): | ||||
|     IE_NAME = 'youtube:clip' | ||||
|     IE_DESC = False  # Do not list | ||||
|     _VALID_URL = r'https?://(?:www\.)?youtube\.com/clip/' | ||||
|     _VALID_URL = r'https?://(?:www\.)?youtube\.com/clip/(?P<id>[^/?#]+)' | ||||
|     _TESTS = [{ | ||||
|         # FIXME: Other metadata should be extracted from the clip, not from the base video | ||||
|         'url': 'https://www.youtube.com/clip/UgytZKpehg-hEMBSn3F4AaABCQ', | ||||
|         'info_dict': { | ||||
|             'id': 'UgytZKpehg-hEMBSn3F4AaABCQ', | ||||
|             'ext': 'mp4', | ||||
|             'section_start': 29.0, | ||||
|             'section_end': 39.7, | ||||
|             'duration': 10.7, | ||||
|         } | ||||
|     }] | ||||
| 
 | ||||
|     def _real_extract(self, url): | ||||
|         self.report_warning('YouTube clips are not currently supported. The entire video will be downloaded instead') | ||||
|         return self.url_result(url, 'Generic') | ||||
|         clip_id = self._match_id(url) | ||||
|         _, data = self._extract_webpage(url, clip_id) | ||||
| 
 | ||||
|         video_id = traverse_obj(data, ('currentVideoEndpoint', 'watchEndpoint', 'videoId')) | ||||
|         if not video_id: | ||||
|             raise ExtractorError('Unable to find video ID') | ||||
| 
 | ||||
|         clip_data = traverse_obj(data, ( | ||||
|             'engagementPanels', ..., 'engagementPanelSectionListRenderer', 'content', 'clipSectionRenderer', | ||||
|             'contents', ..., 'clipAttributionRenderer', 'onScrubExit', 'commandExecutorCommand', 'commands', ..., | ||||
|             'openPopupAction', 'popup', 'notificationActionRenderer', 'actionButton', 'buttonRenderer', 'command', | ||||
|             'commandExecutorCommand', 'commands', ..., 'loopCommand'), get_all=False) | ||||
| 
 | ||||
|         return { | ||||
|             '_type': 'url_transparent', | ||||
|             'url': f'https://www.youtube.com/watch?v={video_id}', | ||||
|             'ie_key': YoutubeIE.ie_key(), | ||||
|             'id': clip_id, | ||||
|             'section_start': int(clip_data['startTimeMs']) / 1000, | ||||
|             'section_end': int(clip_data['endTimeMs']) / 1000, | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
| class YoutubeTruncatedIDIE(InfoExtractor): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan