mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	| @@ -13,6 +13,7 @@ from ..utils import ( | |||||||
|     float_or_none, |     float_or_none, | ||||||
|     sanitized_Request, |     sanitized_Request, | ||||||
|     urlencode_postdata, |     urlencode_postdata, | ||||||
|  |     USER_AGENTS, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -114,6 +115,9 @@ class CeskaTelevizeIE(InfoExtractor): | |||||||
|             'requestSource': 'iVysilani', |             'requestSource': 'iVysilani', | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         entries = [] | ||||||
|  |  | ||||||
|  |         for user_agent in (None, USER_AGENTS['Safari']): | ||||||
|             req = sanitized_Request( |             req = sanitized_Request( | ||||||
|                 'http://www.ceskatelevize.cz/ivysilani/ajax/get-client-playlist', |                 'http://www.ceskatelevize.cz/ivysilani/ajax/get-client-playlist', | ||||||
|                 data=urlencode_postdata(data)) |                 data=urlencode_postdata(data)) | ||||||
| @@ -121,10 +125,14 @@ class CeskaTelevizeIE(InfoExtractor): | |||||||
|             req.add_header('Content-type', 'application/x-www-form-urlencoded') |             req.add_header('Content-type', 'application/x-www-form-urlencoded') | ||||||
|             req.add_header('x-addr', '127.0.0.1') |             req.add_header('x-addr', '127.0.0.1') | ||||||
|             req.add_header('X-Requested-With', 'XMLHttpRequest') |             req.add_header('X-Requested-With', 'XMLHttpRequest') | ||||||
|         req.add_header('User-agent', 'Mozilla/5.0') |             if user_agent: | ||||||
|  |                 req.add_header('User-Agent', user_agent) | ||||||
|             req.add_header('Referer', url) |             req.add_header('Referer', url) | ||||||
|  |  | ||||||
|         playlistpage = self._download_json(req, playlist_id) |             playlistpage = self._download_json(req, playlist_id, fatal=False) | ||||||
|  |  | ||||||
|  |             if not playlistpage: | ||||||
|  |                 continue | ||||||
|  |  | ||||||
|             playlist_url = playlistpage['url'] |             playlist_url = playlistpage['url'] | ||||||
|             if playlist_url == 'error_region': |             if playlist_url == 'error_region': | ||||||
| @@ -136,19 +144,32 @@ class CeskaTelevizeIE(InfoExtractor): | |||||||
|             playlist_title = self._og_search_title(webpage, default=None) |             playlist_title = self._og_search_title(webpage, default=None) | ||||||
|             playlist_description = self._og_search_description(webpage, default=None) |             playlist_description = self._og_search_description(webpage, default=None) | ||||||
|  |  | ||||||
|         playlist = self._download_json(req, playlist_id)['playlist'] |             playlist = self._download_json(req, playlist_id, fatal=False) | ||||||
|  |             if not playlist: | ||||||
|  |                 continue | ||||||
|  |  | ||||||
|  |             playlist = playlist.get('playlist') | ||||||
|  |             if not isinstance(playlist, list): | ||||||
|  |                 continue | ||||||
|  |  | ||||||
|             playlist_len = len(playlist) |             playlist_len = len(playlist) | ||||||
|  |  | ||||||
|         entries = [] |             for num, item in enumerate(playlist): | ||||||
|         for item in playlist: |  | ||||||
|                 is_live = item.get('type') == 'LIVE' |                 is_live = item.get('type') == 'LIVE' | ||||||
|                 formats = [] |                 formats = [] | ||||||
|             for format_id, stream_url in item['streamUrls'].items(): |                 for format_id, stream_url in item.get('streamUrls', {}).items(): | ||||||
|  |                     if 'playerType=flash' in stream_url: | ||||||
|                         formats.extend(self._extract_m3u8_formats( |                         formats.extend(self._extract_m3u8_formats( | ||||||
|                             stream_url, playlist_id, 'mp4', |                             stream_url, playlist_id, 'mp4', | ||||||
|                             entry_protocol='m3u8' if is_live else 'm3u8_native', |                             entry_protocol='m3u8' if is_live else 'm3u8_native', | ||||||
|                             fatal=False)) |                             fatal=False)) | ||||||
|             self._sort_formats(formats) |                     else: | ||||||
|  |                         formats.extend(self._extract_mpd_formats( | ||||||
|  |                             stream_url, playlist_id, fatal=False)) | ||||||
|  |  | ||||||
|  |                 if user_agent and len(entries) == playlist_len: | ||||||
|  |                     entries[num]['formats'].extend(formats) | ||||||
|  |                     continue | ||||||
|  |  | ||||||
|                 item_id = item.get('id') or item['assetId'] |                 item_id = item.get('id') or item['assetId'] | ||||||
|                 title = item['title'] |                 title = item['title'] | ||||||
| @@ -180,6 +201,9 @@ class CeskaTelevizeIE(InfoExtractor): | |||||||
|                     'is_live': is_live, |                     'is_live': is_live, | ||||||
|                 }) |                 }) | ||||||
|  |  | ||||||
|  |         for e in entries: | ||||||
|  |             self._sort_formats(e['formats']) | ||||||
|  |  | ||||||
|         return self.playlist_result(entries, playlist_id, playlist_title, playlist_description) |         return self.playlist_result(entries, playlist_id, playlist_title, playlist_description) | ||||||
|  |  | ||||||
|     def _get_subtitles(self, episode_id, subs): |     def _get_subtitles(self, episode_id, subs): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․