From a648175e7429114ef9cb3fae0e6984e4bc119ed4 Mon Sep 17 00:00:00 2001 From: Andres Date: Tue, 20 Mar 2018 09:59:14 +0100 Subject: [PATCH 1/3] [ccma] fix extractor. A list of urls is now being sent from the server. --- youtube_dl/extractor/ccma.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/ccma.py b/youtube_dl/extractor/ccma.py index bec0a825a..39d2c7c9c 100644 --- a/youtube_dl/extractor/ccma.py +++ b/youtube_dl/extractor/ccma.py @@ -52,12 +52,22 @@ class CCMAIE(InfoExtractor): if md: media_data = md media_url = media_data.get('media', {}).get('url') - if media_url: + if media_url and isinstance(media_url, list): + q = 0 + for _url in media_url: + formats.append({ + 'format_id': profile, + 'url': _url['file'], + 'quality': q, + }) + q += 1 + elif media_url and isinstance(media_url, str): formats.append({ 'format_id': profile, 'url': media_url, - 'quality': i, + 'quality': 0, }) + self._sort_formats(formats) informacio = media_data['informacio'] From dfaae7e7ebdde00854da6963d05ef3401cf7234c Mon Sep 17 00:00:00 2001 From: Andres Date: Mon, 26 Mar 2018 20:12:12 +0200 Subject: [PATCH 2/3] [ccma] fetch height from label, ensuring extraction with missing data. --- youtube_dl/extractor/ccma.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/youtube_dl/extractor/ccma.py b/youtube_dl/extractor/ccma.py index 39d2c7c9c..194d7a5fe 100644 --- a/youtube_dl/extractor/ccma.py +++ b/youtube_dl/extractor/ccma.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import re +from ..compat import compat_str from .common import InfoExtractor from ..utils import ( int_or_none, @@ -52,20 +53,28 @@ class CCMAIE(InfoExtractor): if md: media_data = md media_url = media_data.get('media', {}).get('url') + ext = media_data.get('media', {}).get('format') + if ext: + ext = ext.lower() + if media_url and isinstance(media_url, list): - q = 0 for _url in media_url: + if 'label' in _url: + height = int_or_none(_url.get('label').replace('p', '')) + else: + height = None + formats.append({ 'format_id': profile, - 'url': _url['file'], - 'quality': q, + 'url': _url.get('file'), + 'height': height, + 'ext': ext }) - q += 1 - elif media_url and isinstance(media_url, str): + elif media_url and isinstance(media_url, compat_str): formats.append({ 'format_id': profile, 'url': media_url, - 'quality': 0, + 'ext': ext }) self._sort_formats(formats) @@ -83,8 +92,8 @@ class CCMAIE(InfoExtractor): if sub_url: subtitles.setdefault( subtitols.get('iso') or subtitols.get('text') or 'ca', []).append({ - 'url': sub_url, - }) + 'url': sub_url, + }) thumbnails = [] imatges = media_data.get('imatges', {}) From a35a69bece24e5b838a434052044c0781cb40a4e Mon Sep 17 00:00:00 2001 From: Andres Date: Sun, 8 Apr 2018 21:27:27 +0200 Subject: [PATCH 3/3] [ccma] parse resolution from utils, ensure only existing urls are appended. --- youtube_dl/extractor/ccma.py | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/youtube_dl/extractor/ccma.py b/youtube_dl/extractor/ccma.py index 194d7a5fe..568168493 100644 --- a/youtube_dl/extractor/ccma.py +++ b/youtube_dl/extractor/ccma.py @@ -10,6 +10,7 @@ from ..utils import ( parse_duration, parse_iso8601, clean_html, + parse_resolution ) @@ -44,7 +45,7 @@ class CCMAIE(InfoExtractor): media_data = {} formats = [] profiles = ['pc'] if media_type == 'audio' else ['mobil', 'pc'] - for i, profile in enumerate(profiles): + for profile in profiles: md = self._download_json('http://dinamics.ccma.cat/pvideo/media.jsp', media_id, query={ 'media': media_type, 'idint': media_id, @@ -53,28 +54,21 @@ class CCMAIE(InfoExtractor): if md: media_data = md media_url = media_data.get('media', {}).get('url') - ext = media_data.get('media', {}).get('format') - if ext: - ext = ext.lower() if media_url and isinstance(media_url, list): for _url in media_url: - if 'label' in _url: - height = int_or_none(_url.get('label').replace('p', '')) - else: - height = None + resolution = parse_resolution(_url.get('label')) - formats.append({ - 'format_id': profile, - 'url': _url.get('file'), - 'height': height, - 'ext': ext - }) + if _url.get('file'): + formats.append({ + 'format_id': profile, + 'url': _url.get('file'), + 'height': resolution.get('height'), + }) elif media_url and isinstance(media_url, compat_str): formats.append({ 'format_id': profile, 'url': media_url, - 'ext': ext }) self._sort_formats(formats) @@ -92,8 +86,8 @@ class CCMAIE(InfoExtractor): if sub_url: subtitles.setdefault( subtitols.get('iso') or subtitols.get('text') or 'ca', []).append({ - 'url': sub_url, - }) + 'url': sub_url, + }) thumbnails = [] imatges = media_data.get('imatges', {})