mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[shahid] fix extraction(fixes #14448)
This commit is contained in:
		| @@ -18,46 +18,32 @@ from ..utils import ( | |||||||
|  |  | ||||||
| class ShahidIE(InfoExtractor): | class ShahidIE(InfoExtractor): | ||||||
|     _NETRC_MACHINE = 'shahid' |     _NETRC_MACHINE = 'shahid' | ||||||
|     _VALID_URL = r'https?://shahid\.mbc\.net/ar/(?P<type>episode|movie)/(?P<id>\d+)' |     _VALID_URL = r'https?://shahid\.mbc\.net/ar/(?:serie|show|movie)s/[^/]+/(?P<type>episode|clip|movie)-(?P<id>\d+)' | ||||||
|     _TESTS = [{ |     _TESTS = [{ | ||||||
|         'url': 'https://shahid.mbc.net/ar/episode/90574/%D8%A7%D9%84%D9%85%D9%84%D9%83-%D8%B9%D8%A8%D8%AF%D8%A7%D9%84%D9%84%D9%87-%D8%A7%D9%84%D8%A5%D9%86%D8%B3%D8%A7%D9%86-%D8%A7%D9%84%D9%85%D9%88%D8%B3%D9%85-1-%D9%83%D9%84%D9%8A%D8%A8-3.html', |         'url': 'https://shahid.mbc.net/ar/shows/%D9%85%D8%AC%D9%84%D8%B3-%D8%A7%D9%84%D8%B4%D8%A8%D8%A7%D8%A8-%D8%A7%D9%84%D9%85%D9%88%D8%B3%D9%85-1-%D9%83%D9%84%D9%8A%D8%A8-1/clip-275286', | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': '90574', |             'id': '275286', | ||||||
|             'ext': 'mp4', |             'ext': 'mp4', | ||||||
|             'title': 'الملك عبدالله الإنسان الموسم 1 كليب 3', |             'title': 'مجلس الشباب الموسم 1 كليب 1', | ||||||
|             'description': 'الفيلم الوثائقي - الملك عبد الله الإنسان', |             'timestamp': 1506988800, | ||||||
|             'duration': 2972, |             'upload_date': '20171003', | ||||||
|             'timestamp': 1422057420, |  | ||||||
|             'upload_date': '20150123', |  | ||||||
|         }, |         }, | ||||||
|         'params': { |         'params': { | ||||||
|             # m3u8 download |             # m3u8 download | ||||||
|             'skip_download': True, |             'skip_download': True, | ||||||
|         } |         } | ||||||
|     }, { |     }, { | ||||||
|         'url': 'https://shahid.mbc.net/ar/movie/151746/%D8%A7%D9%84%D9%82%D9%86%D8%A7%D8%B5%D8%A9.html', |         'url': 'https://shahid.mbc.net/ar/movies/%D8%A7%D9%84%D9%82%D9%86%D8%A7%D8%B5%D8%A9/movie-151746', | ||||||
|         'only_matching': True |         'only_matching': True | ||||||
|     }, { |     }, { | ||||||
|         # shahid plus subscriber only |         # shahid plus subscriber only | ||||||
|         'url': 'https://shahid.mbc.net/ar/episode/90511/%D9%85%D8%B1%D8%A7%D9%8A%D8%A7-2011-%D8%A7%D9%84%D9%85%D9%88%D8%B3%D9%85-1-%D8%A7%D9%84%D8%AD%D9%84%D9%82%D8%A9-1.html', |         'url': 'https://shahid.mbc.net/ar/series/%D9%85%D8%B1%D8%A7%D9%8A%D8%A7-2011-%D8%A7%D9%84%D9%85%D9%88%D8%B3%D9%85-1-%D8%A7%D9%84%D8%AD%D9%84%D9%82%D8%A9-1/episode-90511', | ||||||
|         'only_matching': True |         'only_matching': True | ||||||
|     }] |     }] | ||||||
|  |  | ||||||
|     def _real_initialize(self): |     def _api2_request(self, *args, **kwargs): | ||||||
|         email, password = self._get_login_info() |  | ||||||
|         if email is None: |  | ||||||
|             return |  | ||||||
|  |  | ||||||
|         try: |         try: | ||||||
|             user_data = self._download_json( |             return self._download_json(*args, **kwargs) | ||||||
|                 'https://shahid.mbc.net/wd/service/users/login', |  | ||||||
|                 None, 'Logging in', data=json.dumps({ |  | ||||||
|                     'email': email, |  | ||||||
|                     'password': password, |  | ||||||
|                     'basic': 'false', |  | ||||||
|                 }).encode('utf-8'), headers={ |  | ||||||
|                     'Content-Type': 'application/json; charset=UTF-8', |  | ||||||
|                 })['user'] |  | ||||||
|         except ExtractorError as e: |         except ExtractorError as e: | ||||||
|             if isinstance(e.cause, compat_HTTPError): |             if isinstance(e.cause, compat_HTTPError): | ||||||
|                 fail_data = self._parse_json( |                 fail_data = self._parse_json( | ||||||
| @@ -69,6 +55,21 @@ class ShahidIE(InfoExtractor): | |||||||
|                         raise ExtractorError(faults_message, expected=True) |                         raise ExtractorError(faults_message, expected=True) | ||||||
|             raise |             raise | ||||||
|  |  | ||||||
|  |     def _real_initialize(self): | ||||||
|  |         email, password = self._get_login_info() | ||||||
|  |         if email is None: | ||||||
|  |             return | ||||||
|  |  | ||||||
|  |         user_data = self._api2_request( | ||||||
|  |             'https://shahid.mbc.net/wd/service/users/login', | ||||||
|  |             None, 'Logging in', data=json.dumps({ | ||||||
|  |                 'email': email, | ||||||
|  |                 'password': password, | ||||||
|  |                 'basic': 'false', | ||||||
|  |             }).encode('utf-8'), headers={ | ||||||
|  |                 'Content-Type': 'application/json; charset=UTF-8', | ||||||
|  |             })['user'] | ||||||
|  |  | ||||||
|         self._download_webpage( |         self._download_webpage( | ||||||
|             'https://shahid.mbc.net/populateContext', |             'https://shahid.mbc.net/populateContext', | ||||||
|             None, 'Populate Context', data=urlencode_postdata({ |             None, 'Populate Context', data=urlencode_postdata({ | ||||||
| @@ -93,15 +94,17 @@ class ShahidIE(InfoExtractor): | |||||||
|  |  | ||||||
|     def _real_extract(self, url): |     def _real_extract(self, url): | ||||||
|         page_type, video_id = re.match(self._VALID_URL, url).groups() |         page_type, video_id = re.match(self._VALID_URL, url).groups() | ||||||
|  |         if page_type == 'clip': | ||||||
|  |             page_type = 'episode' | ||||||
|  |  | ||||||
|         player = self._get_api_data(self._download_json( |         playout = self._api2_request( | ||||||
|             'https://shahid.mbc.net/arContent/getPlayerContent-param-.id-%s.type-player.html' % video_id, |             'https://api2.shahid.net/proxy/v2/playout/url/' + video_id, | ||||||
|             video_id, 'Downloading player JSON')) |             video_id, 'Downloading player JSON')['playout'] | ||||||
|  |  | ||||||
|         if player.get('drm'): |         if playout.get('drm'): | ||||||
|             raise ExtractorError('This video is DRM protected.', expected=True) |             raise ExtractorError('This video is DRM protected.', expected=True) | ||||||
|  |  | ||||||
|         formats = self._extract_m3u8_formats(player['url'], video_id, 'mp4') |         formats = self._extract_m3u8_formats(playout['url'], video_id, 'mp4') | ||||||
|         self._sort_formats(formats) |         self._sort_formats(formats) | ||||||
|  |  | ||||||
|         video = self._get_api_data(self._download_json( |         video = self._get_api_data(self._download_json( | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Remita Amine
					Remita Amine