[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