mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	| @@ -8,12 +8,12 @@ from ..utils import ( | ||||
|     float_or_none, | ||||
|     int_or_none, | ||||
|     str_or_none, | ||||
|     traverse_obj, | ||||
|     traverse_obj | ||||
| ) | ||||
| 
 | ||||
| 
 | ||||
| class MedalTVIE(InfoExtractor): | ||||
|     _VALID_URL = r'https?://(?:www\.)?medal\.tv/(?P<path>games/[^/?#&]+/clips)/(?P<id>[^/?#&]+)' | ||||
|     _VALID_URL = r'https?://(?:www\.)?medal\.tv/games/[^/?#&]+/clips/(?P<id>[^/?#&]+)' | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://medal.tv/games/valorant/clips/jTBFnLKdLy15K', | ||||
|         'md5': '6930f8972914b6b9fdc2bb3918098ba0', | ||||
| @@ -80,25 +80,14 @@ class MedalTVIE(InfoExtractor): | ||||
| 
 | ||||
|     def _real_extract(self, url): | ||||
|         video_id = self._match_id(url) | ||||
|         path = self._match_valid_url(url).group('path') | ||||
| 
 | ||||
|         webpage = self._download_webpage(url, video_id) | ||||
| 
 | ||||
|         next_data = self._search_json( | ||||
|             '<script[^>]*__NEXT_DATA__[^>]*>', webpage, | ||||
|         hydration_data = self._search_json( | ||||
|             r'<script[^>]*>[^<]*\bhydrationData\s*=', webpage, | ||||
|             'next data', video_id, end_pattern='</script>', fatal=False) | ||||
| 
 | ||||
|         build_id = next_data.get('buildId') | ||||
|         if not build_id: | ||||
|             raise ExtractorError( | ||||
|                 'Could not find build ID.', video_id=video_id) | ||||
| 
 | ||||
|         locale = next_data.get('locale', 'en') | ||||
| 
 | ||||
|         api_response = self._download_json( | ||||
|             f'https://medal.tv/_next/data/{build_id}/{locale}/{path}/{video_id}.json', video_id) | ||||
| 
 | ||||
|         clip = traverse_obj(api_response, ('pageProps', 'clip')) or {} | ||||
|         clip = traverse_obj(hydration_data, ('clips', ...), get_all=False) | ||||
|         if not clip: | ||||
|             raise ExtractorError( | ||||
|                 'Could not find video information.', video_id=video_id) | ||||
| @@ -152,7 +141,7 @@ class MedalTVIE(InfoExtractor): | ||||
| 
 | ||||
|         # Necessary because the id of the author is not known in advance. | ||||
|         # Won't raise an issue if no profile can be found as this is optional. | ||||
|         author = traverse_obj(api_response, ('pageProps', 'profile')) or {} | ||||
|         author = traverse_obj(hydration_data, ('profiles', ...), get_all=False) or {} | ||||
|         author_id = str_or_none(author.get('userId')) | ||||
|         author_url = format_field(author_id, None, 'https://medal.tv/users/%s') | ||||
| 
 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Joshua Lochner
					Joshua Lochner