mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[itv:btcc] Add extractor (closes #16139)
This commit is contained in:
		| @@ -477,7 +477,10 @@ from .internetvideoarchive import InternetVideoArchiveIE | |||||||
| from .iprima import IPrimaIE | from .iprima import IPrimaIE | ||||||
| from .iqiyi import IqiyiIE | from .iqiyi import IqiyiIE | ||||||
| from .ir90tv import Ir90TvIE | from .ir90tv import Ir90TvIE | ||||||
| from .itv import ITVIE | from .itv import ( | ||||||
|  |     ITVIE, | ||||||
|  |     ITVBTCCIE, | ||||||
|  | ) | ||||||
| from .ivi import ( | from .ivi import ( | ||||||
|     IviIE, |     IviIE, | ||||||
|     IviCompilationIE |     IviCompilationIE | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ import json | |||||||
| import re | import re | ||||||
|  |  | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
|  | from .brightcove import BrightcoveNewIE | ||||||
| from ..compat import ( | from ..compat import ( | ||||||
|     compat_str, |     compat_str, | ||||||
|     compat_etree_register_namespace, |     compat_etree_register_namespace, | ||||||
| @@ -18,6 +19,7 @@ from ..utils import ( | |||||||
|     xpath_text, |     xpath_text, | ||||||
|     int_or_none, |     int_or_none, | ||||||
|     parse_duration, |     parse_duration, | ||||||
|  |     smuggle_url, | ||||||
|     ExtractorError, |     ExtractorError, | ||||||
|     determine_ext, |     determine_ext, | ||||||
| ) | ) | ||||||
| @@ -260,3 +262,38 @@ class ITVIE(InfoExtractor): | |||||||
|             'subtitles': subtitles, |             'subtitles': subtitles, | ||||||
|         }) |         }) | ||||||
|         return info |         return info | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ITVBTCCIE(InfoExtractor): | ||||||
|  |     _VALID_URL = r'https?://(?:www\.)?itv\.com/btcc/(?:[^/]+/)*(?P<id>[^/?#&]+)' | ||||||
|  |     _TEST = { | ||||||
|  |         'url': 'http://www.itv.com/btcc/races/btcc-2018-all-the-action-from-brands-hatch', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': 'btcc-2018-all-the-action-from-brands-hatch', | ||||||
|  |             'title': 'BTCC 2018: All the action from Brands Hatch', | ||||||
|  |         }, | ||||||
|  |         'playlist_mincount': 9, | ||||||
|  |     } | ||||||
|  |     BRIGHTCOVE_URL_TEMPLATE = 'http://players.brightcove.net/1582188683001/HkiHLnNRx_default/index.html?videoId=%s' | ||||||
|  |  | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         playlist_id = self._match_id(url) | ||||||
|  |  | ||||||
|  |         webpage = self._download_webpage(url, playlist_id) | ||||||
|  |  | ||||||
|  |         entries = [ | ||||||
|  |             self.url_result( | ||||||
|  |                 smuggle_url(self.BRIGHTCOVE_URL_TEMPLATE % video_id, { | ||||||
|  |                     # ITV does not like some GB IP ranges, so here are some | ||||||
|  |                     # IP blocks it accepts | ||||||
|  |                     'geo_ip_blocks': [ | ||||||
|  |                         '193.113.0.0/16', '54.36.162.0/23', '159.65.16.0/21' | ||||||
|  |                     ], | ||||||
|  |                     'referrer': url, | ||||||
|  |                 }), | ||||||
|  |                 ie=BrightcoveNewIE.ie_key(), video_id=video_id) | ||||||
|  |             for video_id in re.findall(r'data-video-id=["\'](\d+)', webpage)] | ||||||
|  |  | ||||||
|  |         title = self._og_search_title(webpage, fatal=False) | ||||||
|  |  | ||||||
|  |         return self.playlist_result(entries, playlist_id, title) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․