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 |     CrunchyrollShowPlaylistIE | ||||||
| ) | ) | ||||||
| from .cspan import CSpanIE | from .cspan import CSpanIE | ||||||
| from .d8 import D8IE |  | ||||||
| from .dailymotion import ( | from .dailymotion import ( | ||||||
|     DailymotionIE, |     DailymotionIE, | ||||||
|     DailymotionPlaylistIE, |     DailymotionPlaylistIE, | ||||||
|   | |||||||
| @@ -7,16 +7,18 @@ from .common import InfoExtractor | |||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     unified_strdate, |     unified_strdate, | ||||||
|     url_basename, |     url_basename, | ||||||
|  |     qualities, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| class CanalplusIE(InfoExtractor): | class CanalplusIE(InfoExtractor): | ||||||
|     IE_DESC = 'canalplus.fr and piwiplus.fr' |     IE_DESC = 'canalplus.fr, piwiplus.fr and d8.tv' | ||||||
|     _VALID_URL = r'https?://(?:www\.(?P<site>canal|piwi)plus\.fr/.*?/(?P<path>.*)|player\.canalplus\.fr/#/(?P<id>[0-9]+))' |     _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' |     _VIDEO_INFO_TEMPLATE = 'http://service.canal-plus.com/video/rest/getVideosLiees/%s/%s' | ||||||
|     _SITE_ID_MAP = { |     _SITE_ID_MAP = { | ||||||
|         'canal': 'cplus', |         'canalplus.fr': 'cplus', | ||||||
|         'piwi': 'teletoon', |         'piwiplus.fr': 'teletoon', | ||||||
|  |         'd8.tv': 'd8', | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     _TESTS = [{ |     _TESTS = [{ | ||||||
| @@ -31,14 +33,24 @@ class CanalplusIE(InfoExtractor): | |||||||
|         }, |         }, | ||||||
|     }, { |     }, { | ||||||
|         'url': 'http://www.piwiplus.fr/videos-piwi/pid1405-le-labyrinthe-boing-super-ranger.html?vid=1108190', |         'url': 'http://www.piwiplus.fr/videos-piwi/pid1405-le-labyrinthe-boing-super-ranger.html?vid=1108190', | ||||||
|         'md5': '3db39fb48b9685438ecf33a1078023e4', |  | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': '1108190', |             'id': '1108190', | ||||||
|             'ext': 'flv', |             'ext': 'flv', | ||||||
|             'title': 'Le labyrinthe - Boing super ranger', |             'title': 'Le labyrinthe - Boing super ranger', | ||||||
|             'description': 'md5:', |             'description': 'md5:4cea7a37153be42c1ba2c1d3064376ff', | ||||||
|             'upload_date': '20140724', |             '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): |     def _real_extract(self, url): | ||||||
| @@ -62,16 +74,30 @@ class CanalplusIE(InfoExtractor): | |||||||
|         media = video_info.find('MEDIA') |         media = video_info.find('MEDIA') | ||||||
|         infos = video_info.find('INFOS') |         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 = [ |         formats = [] | ||||||
|             { |         for fmt in media.find('VIDEOS'): | ||||||
|                 'url': fmt.text + '?hdcore=2.11.3' if fmt.tag == 'HDS' else fmt.text, |             format_url = fmt.text | ||||||
|                 'format_id': fmt.tag, |             if not format_url: | ||||||
|                 'ext': 'mp4' if fmt.tag == 'HLS' else 'flv', |                 continue | ||||||
|                 'preference': preferences.index(fmt.tag) if fmt.tag in preferences else -1, |             format_id = fmt.tag | ||||||
|             } for fmt in media.find('VIDEOS') if fmt.text |             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) |         self._sort_formats(formats) | ||||||
|  |  | ||||||
|         return { |         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․