X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Fcanalplus.py;h=1b14471e57198c2a04833089c174c0c6c3108ab8;hb=5c7495a19429e3b27c003a4bd5bb96ed1e3a4932;hp=9873728df6f3bb1adbfddc1959aa5e7e70241f5b;hpb=5f6a1245ffa9276c1af59b0835afeef67e2fb5b1;p=youtube-dl diff --git a/youtube_dl/extractor/canalplus.py b/youtube_dl/extractor/canalplus.py index 9873728df..1b14471e5 100644 --- a/youtube_dl/extractor/canalplus.py +++ b/youtube_dl/extractor/canalplus.py @@ -5,6 +5,8 @@ import re from .common import InfoExtractor from ..utils import ( + ExtractorError, + HEADRequest, unified_strdate, url_basename, qualities, @@ -13,12 +15,13 @@ from ..utils import ( class CanalplusIE(InfoExtractor): IE_DESC = 'canalplus.fr, piwiplus.fr and d8.tv' - _VALID_URL = r'https?://(?:www\.(?Pcanalplus\.fr|piwiplus\.fr|d8\.tv)/.*?/(?P.*)|player\.canalplus\.fr/#/(?P[0-9]+))' + _VALID_URL = r'https?://(?:www\.(?Pcanalplus\.fr|piwiplus\.fr|d8\.tv|itele\.fr)/.*?/(?P.*)|player\.canalplus\.fr/#/(?P[0-9]+))' _VIDEO_INFO_TEMPLATE = 'http://service.canal-plus.com/video/rest/getVideosLiees/%s/%s' _SITE_ID_MAP = { 'canalplus.fr': 'cplus', 'piwiplus.fr': 'teletoon', 'd8.tv': 'd8', + 'itele.fr': 'itele', } _TESTS = [{ @@ -51,6 +54,16 @@ class CanalplusIE(InfoExtractor): 'upload_date': '20131108', }, 'skip': 'videos get deleted after a while', + }, { + 'url': 'http://www.itele.fr/france/video/aubervilliers-un-lycee-en-colere-111559', + 'md5': '65aa83ad62fe107ce29e564bb8712580', + 'info_dict': { + 'id': '1213714', + 'ext': 'flv', + 'title': 'Aubervilliers : un lycée en colère - Le 11/02/2015 à 06h45', + 'description': 'md5:8216206ec53426ea6321321f3b3c16db', + 'upload_date': '20150211', + }, }] def _real_extract(self, url): @@ -76,6 +89,16 @@ class CanalplusIE(InfoExtractor): preference = qualities(['MOBILE', 'BAS_DEBIT', 'HAUT_DEBIT', 'HD', 'HLS', 'HDS']) + fmt_url = next(iter(media.find('VIDEOS'))).text + if '/geo' in fmt_url.lower(): + response = self._request_webpage( + HEADRequest(fmt_url), video_id, + 'Checking if the video is georestricted') + if '/blocage' in response.geturl(): + raise ExtractorError( + 'The video is not available in your country', + expected=True) + formats = [] for fmt in media.find('VIDEOS'): format_url = fmt.text