mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	
							
								
								
									
										72
									
								
								youtube_dl/extractor/corus.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								youtube_dl/extractor/corus.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | |||||||
|  | # coding: utf-8 | ||||||
|  | from __future__ import unicode_literals | ||||||
|  |  | ||||||
|  | import re | ||||||
|  |  | ||||||
|  | from .theplatform import ThePlatformFeedIE | ||||||
|  | from ..utils import int_or_none | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class CorusIE(ThePlatformFeedIE): | ||||||
|  |     _VALID_URL = r'https?://(?:www\.)?(?P<domain>(?:globaltv|etcanada)\.com|(?:hgtv|foodnetwork|slice)\.ca)/(?:video/|(?:[^/]+/)+(?:videos/[a-z0-9-]+-|video\.html\?.*?\bv=))(?P<id>\d+)' | ||||||
|  |     _TESTS = [{ | ||||||
|  |         'url': 'http://www.hgtv.ca/shows/bryan-inc/videos/movie-night-popcorn-with-bryan-870923331648/', | ||||||
|  |         'md5': '05dcbca777bf1e58c2acbb57168ad3a6', | ||||||
|  |         'info_dict': { | ||||||
|  |             'id': '870923331648', | ||||||
|  |             'ext': 'mp4', | ||||||
|  |             'title': 'Movie Night Popcorn with Bryan', | ||||||
|  |             'description': 'Bryan whips up homemade popcorn, the old fashion way for Jojo and Lincoln.', | ||||||
|  |             'uploader': 'SHWM-NEW', | ||||||
|  |             'upload_date': '20170206', | ||||||
|  |             'timestamp': 1486392197, | ||||||
|  |         }, | ||||||
|  |     }, { | ||||||
|  |         'url': 'http://www.foodnetwork.ca/shows/chopped/video/episode/chocolate-obsession/video.html?v=872683587753', | ||||||
|  |         'only_matching': True, | ||||||
|  |     }, { | ||||||
|  |         'url': 'http://etcanada.com/video/873675331955/meet-the-survivor-game-changers-castaways-part-2/', | ||||||
|  |         'only_matching': True, | ||||||
|  |     }] | ||||||
|  |  | ||||||
|  |     _TP_FEEDS = { | ||||||
|  |         'globaltv': { | ||||||
|  |             'feed_id': 'ChQqrem0lNUp', | ||||||
|  |             'account_id': 2269680845, | ||||||
|  |         }, | ||||||
|  |         'etcanada': { | ||||||
|  |             'feed_id': 'ChQqrem0lNUp', | ||||||
|  |             'account_id': 2269680845, | ||||||
|  |         }, | ||||||
|  |         'hgtv': { | ||||||
|  |             'feed_id': 'L0BMHXi2no43', | ||||||
|  |             'account_id': 2414428465, | ||||||
|  |         }, | ||||||
|  |         'foodnetwork': { | ||||||
|  |             'feed_id': 'ukK8o58zbRmJ', | ||||||
|  |             'account_id': 2414429569, | ||||||
|  |         }, | ||||||
|  |         'slice': { | ||||||
|  |             'feed_id': '5tUJLgV2YNJ5', | ||||||
|  |             'account_id': 2414427935, | ||||||
|  |         }, | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     def _real_extract(self, url): | ||||||
|  |         domain, video_id = re.match(self._VALID_URL, url).groups() | ||||||
|  |         feed_info = self._TP_FEEDS[domain.split('.')[0]] | ||||||
|  |         return self._extract_feed_info('dtjsEC', feed_info['feed_id'], 'byId=' + video_id, video_id, lambda e: { | ||||||
|  |             'episode_number': int_or_none(e.get('pl1$episode')), | ||||||
|  |             'season_number': int_or_none(e.get('pl1$season')), | ||||||
|  |             'series': e.get('pl1$show'), | ||||||
|  |         }, { | ||||||
|  |             'HLS': { | ||||||
|  |                 'manifest': 'm3u', | ||||||
|  |             }, | ||||||
|  |             'DesktopHLS Default': { | ||||||
|  |                 'manifest': 'm3u', | ||||||
|  |             }, | ||||||
|  |             'MP4 MBR': { | ||||||
|  |                 'manifest': 'm3u', | ||||||
|  |             }, | ||||||
|  |         }, feed_info['account_id']) | ||||||
| @@ -202,6 +202,7 @@ from .commonprotocols import ( | |||||||
|     RtmpIE, |     RtmpIE, | ||||||
| ) | ) | ||||||
| from .condenast import CondeNastIE | from .condenast import CondeNastIE | ||||||
|  | from .corus import CorusIE | ||||||
| from .cracked import CrackedIE | from .cracked import CrackedIE | ||||||
| from .crackle import CrackleIE | from .crackle import CrackleIE | ||||||
| from .criterion import CriterionIE | from .criterion import CriterionIE | ||||||
| @@ -381,10 +382,7 @@ from .heise import HeiseIE | |||||||
| from .hellporno import HellPornoIE | from .hellporno import HellPornoIE | ||||||
| from .helsinki import HelsinkiIE | from .helsinki import HelsinkiIE | ||||||
| from .hentaistigma import HentaiStigmaIE | from .hentaistigma import HentaiStigmaIE | ||||||
| from .hgtv import ( | from .hgtv import HGTVComShowIE | ||||||
|     HGTVIE, |  | ||||||
|     HGTVComShowIE, |  | ||||||
| ) |  | ||||||
| from .historicfilms import HistoricFilmsIE | from .historicfilms import HistoricFilmsIE | ||||||
| from .hitbox import HitboxIE, HitboxLiveIE | from .hitbox import HitboxIE, HitboxLiveIE | ||||||
| from .hitrecord import HitRecordIE | from .hitrecord import HitRecordIE | ||||||
|   | |||||||
| @@ -2,50 +2,6 @@ | |||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
|  |  | ||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from ..utils import ( |  | ||||||
|     int_or_none, |  | ||||||
|     js_to_json, |  | ||||||
|     smuggle_url, |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class HGTVIE(InfoExtractor): |  | ||||||
|     _VALID_URL = r'https?://(?:www\.)?hgtv\.ca/[^/]+/video/(?P<id>[^/]+)/video.html' |  | ||||||
|     _TEST = { |  | ||||||
|         'url': 'http://www.hgtv.ca/homefree/video/overnight-success/video.html?v=738081859718&p=1&s=da#video', |  | ||||||
|         'md5': '', |  | ||||||
|         'info_dict': { |  | ||||||
|             'id': 'aFH__I_5FBOX', |  | ||||||
|             'ext': 'mp4', |  | ||||||
|             'title': 'Overnight Success', |  | ||||||
|             'description': 'After weeks of hard work, high stakes, breakdowns and pep talks, the final 2 contestants compete to win the ultimate dream.', |  | ||||||
|             'uploader': 'SHWM-NEW', |  | ||||||
|             'timestamp': 1470320034, |  | ||||||
|             'upload_date': '20160804', |  | ||||||
|         }, |  | ||||||
|         'params': { |  | ||||||
|             # m3u8 download |  | ||||||
|             'skip_download': True, |  | ||||||
|         }, |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     def _real_extract(self, url): |  | ||||||
|         display_id = self._match_id(url) |  | ||||||
|         webpage = self._download_webpage(url, display_id) |  | ||||||
|         embed_vars = self._parse_json(self._search_regex( |  | ||||||
|             r'(?s)embed_vars\s*=\s*({.*?});', |  | ||||||
|             webpage, 'embed vars'), display_id, js_to_json) |  | ||||||
|         return { |  | ||||||
|             '_type': 'url_transparent', |  | ||||||
|             'url': smuggle_url( |  | ||||||
|                 'http://link.theplatform.com/s/dtjsEC/%s?mbr=true&manifest=m3u' % embed_vars['pid'], { |  | ||||||
|                     'force_smil_url': True |  | ||||||
|                 }), |  | ||||||
|             'series': embed_vars.get('show'), |  | ||||||
|             'season_number': int_or_none(embed_vars.get('season')), |  | ||||||
|             'episode_number': int_or_none(embed_vars.get('episode')), |  | ||||||
|             'ie_key': 'ThePlatform', |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class HGTVComShowIE(InfoExtractor): | class HGTVComShowIE(InfoExtractor): | ||||||
|   | |||||||
| @@ -306,9 +306,10 @@ class ThePlatformFeedIE(ThePlatformBaseIE): | |||||||
|         }, |         }, | ||||||
|     }] |     }] | ||||||
|  |  | ||||||
|     def _extract_feed_info(self, provider_id, feed_id, filter_query, video_id, custom_fields=None, asset_types_query={}): |     def _extract_feed_info(self, provider_id, feed_id, filter_query, video_id, custom_fields=None, asset_types_query={}, account_id=None): | ||||||
|         real_url = self._URL_TEMPLATE % (self.http_scheme(), provider_id, feed_id, filter_query) |         real_url = self._URL_TEMPLATE % (self.http_scheme(), provider_id, feed_id, filter_query) | ||||||
|         entry = self._download_json(real_url, video_id)['entries'][0] |         entry = self._download_json(real_url, video_id)['entries'][0] | ||||||
|  |         main_smil_url = 'http://link.theplatform.com/s/%s/media/guid/%d/%s' % (provider_id, account_id, entry['guid']) if account_id else None | ||||||
|  |  | ||||||
|         formats = [] |         formats = [] | ||||||
|         subtitles = {} |         subtitles = {} | ||||||
| @@ -333,7 +334,7 @@ class ThePlatformFeedIE(ThePlatformBaseIE): | |||||||
|                 if asset_type in asset_types_query: |                 if asset_type in asset_types_query: | ||||||
|                     query.update(asset_types_query[asset_type]) |                     query.update(asset_types_query[asset_type]) | ||||||
|                 cur_formats, cur_subtitles = self._extract_theplatform_smil(update_url_query( |                 cur_formats, cur_subtitles = self._extract_theplatform_smil(update_url_query( | ||||||
|                     smil_url, query), video_id, 'Downloading SMIL data for %s' % asset_type) |                     main_smil_url or smil_url, query), video_id, 'Downloading SMIL data for %s' % asset_type) | ||||||
|                 formats.extend(cur_formats) |                 formats.extend(cur_formats) | ||||||
|                 subtitles = self._merge_subtitles(subtitles, cur_subtitles) |                 subtitles = self._merge_subtitles(subtitles, cur_subtitles) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Remita Amine
					Remita Amine