mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[canalplus] Improve and merge with d8 extractor
This commit is contained in:
		| @@ -67,7 +67,6 @@ from .crunchyroll import ( | ||||
|     CrunchyrollShowPlaylistIE | ||||
| ) | ||||
| from .cspan import CSpanIE | ||||
| from .d8 import D8IE | ||||
| from .dailymotion import ( | ||||
|     DailymotionIE, | ||||
|     DailymotionPlaylistIE, | ||||
|   | ||||
| @@ -7,16 +7,18 @@ from .common import InfoExtractor | ||||
| from ..utils import ( | ||||
|     unified_strdate, | ||||
|     url_basename, | ||||
|     qualities, | ||||
| ) | ||||
|  | ||||
|  | ||||
| class CanalplusIE(InfoExtractor): | ||||
|     IE_DESC = 'canalplus.fr and piwiplus.fr' | ||||
|     _VALID_URL = r'https?://(?:www\.(?P<site>canal|piwi)plus\.fr/.*?/(?P<path>.*)|player\.canalplus\.fr/#/(?P<id>[0-9]+))' | ||||
|     IE_DESC = 'canalplus.fr, piwiplus.fr and d8.tv' | ||||
|     _VALID_URL = r'https?://(?:www\.(?P<site>canalplus\.fr|piwiplus\.fr|d8\.tv)/.*?/(?P<path>.*)|player\.canalplus\.fr/#/(?P<id>[0-9]+))' | ||||
|     _VIDEO_INFO_TEMPLATE = 'http://service.canal-plus.com/video/rest/getVideosLiees/%s/%s' | ||||
|     _SITE_ID_MAP = { | ||||
|         'canal': 'cplus', | ||||
|         'piwi': 'teletoon', | ||||
|         'canalplus.fr': 'cplus', | ||||
|         'piwiplus.fr': 'teletoon', | ||||
|         'd8.tv': 'd8', | ||||
|     } | ||||
|  | ||||
|     _TESTS = [{ | ||||
| @@ -31,14 +33,24 @@ class CanalplusIE(InfoExtractor): | ||||
|         }, | ||||
|     }, { | ||||
|         'url': 'http://www.piwiplus.fr/videos-piwi/pid1405-le-labyrinthe-boing-super-ranger.html?vid=1108190', | ||||
|         'md5': '3db39fb48b9685438ecf33a1078023e4', | ||||
|         'info_dict': { | ||||
|             'id': '1108190', | ||||
|             'ext': 'flv', | ||||
|             'title': 'Le labyrinthe - Boing super ranger', | ||||
|             'description': 'md5:', | ||||
|             'description': 'md5:4cea7a37153be42c1ba2c1d3064376ff', | ||||
|             'upload_date': '20140724', | ||||
|         }, | ||||
|         'skip': 'Only works from France', | ||||
|     }, { | ||||
|         'url': 'http://www.d8.tv/d8-docs-mags/pid6589-d8-campagne-intime.html', | ||||
|         'info_dict': { | ||||
|             'id': '966289', | ||||
|             'ext': 'flv', | ||||
|             'title': 'Campagne intime - Documentaire exceptionnel', | ||||
|             'description': 'md5:d2643b799fb190846ae09c61e59a859f', | ||||
|             'upload_date': '20131108', | ||||
|         }, | ||||
|         'skip': 'videos get deleted after a while', | ||||
|     }] | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
| @@ -62,16 +74,30 @@ class CanalplusIE(InfoExtractor): | ||||
|         media = video_info.find('MEDIA') | ||||
|         infos = video_info.find('INFOS') | ||||
|  | ||||
|         preferences = ['MOBILE', 'BAS_DEBIT', 'HAUT_DEBIT', 'HD', 'HLS', 'HDS'] | ||||
|         preference = qualities(['MOBILE', 'BAS_DEBIT', 'HAUT_DEBIT', 'HD', 'HLS', 'HDS']) | ||||
|  | ||||
|         formats = [ | ||||
|             { | ||||
|                 'url': fmt.text + '?hdcore=2.11.3' if fmt.tag == 'HDS' else fmt.text, | ||||
|                 'format_id': fmt.tag, | ||||
|                 'ext': 'mp4' if fmt.tag == 'HLS' else 'flv', | ||||
|                 'preference': preferences.index(fmt.tag) if fmt.tag in preferences else -1, | ||||
|             } for fmt in media.find('VIDEOS') if fmt.text | ||||
|         ] | ||||
|         formats = [] | ||||
|         for fmt in media.find('VIDEOS'): | ||||
|             format_url = fmt.text | ||||
|             if not format_url: | ||||
|                 continue | ||||
|             format_id = fmt.tag | ||||
|             if format_id == 'HLS': | ||||
|                 hls_formats = self._extract_m3u8_formats(format_url, video_id, 'flv') | ||||
|                 for fmt in hls_formats: | ||||
|                     fmt['preference'] = preference(format_id) | ||||
|                 formats.extend(hls_formats) | ||||
|             elif format_id == 'HDS': | ||||
|                 hds_formats = self._extract_f4m_formats(format_url + '?hdcore=2.11.3', video_id) | ||||
|                 for fmt in hds_formats: | ||||
|                     fmt['preference'] = preference(format_id) | ||||
|                 formats.extend(hds_formats) | ||||
|             else: | ||||
|                 formats.append({ | ||||
|                     'url': format_url, | ||||
|                     'format_id': format_id, | ||||
|                     'preference': preference(format_id), | ||||
|                 }) | ||||
|         self._sort_formats(formats) | ||||
|  | ||||
|         return { | ||||
|   | ||||
| @@ -1,25 +0,0 @@ | ||||
| # encoding: utf-8 | ||||
| from __future__ import unicode_literals | ||||
|  | ||||
| from .canalplus import CanalplusIE | ||||
|  | ||||
|  | ||||
| class D8IE(CanalplusIE): | ||||
|     _VALID_URL = r'https?://www\.d8\.tv/.*?/(?P<path>.*)' | ||||
|     _VIDEO_INFO_TEMPLATE = 'http://service.canal-plus.com/video/rest/getVideosLiees/d8/%s' | ||||
|     IE_NAME = 'd8.tv' | ||||
|  | ||||
|     _TEST = { | ||||
|         'url': 'http://www.d8.tv/d8-docs-mags/pid6589-d8-campagne-intime.html', | ||||
|         'file': '966289.flv', | ||||
|         'info_dict': { | ||||
|             'title': 'Campagne intime - Documentaire exceptionnel', | ||||
|             'description': 'md5:d2643b799fb190846ae09c61e59a859f', | ||||
|             'upload_date': '20131108', | ||||
|         }, | ||||
|         'params': { | ||||
|             # rtmp | ||||
|             'skip_download': True, | ||||
|         }, | ||||
|         'skip': 'videos get deleted after a while', | ||||
|     } | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․