1
1
mirror of https://github.com/ytdl-org/youtube-dl synced 2024-11-27 04:26:50 +01:00

[telecinco] fix extraction

This commit is contained in:
Remita Amine 2020-12-27 16:20:49 +01:00
parent e474996541
commit f86b299d0e

View File

@ -5,14 +5,11 @@ import json
import re import re
from .common import InfoExtractor from .common import InfoExtractor
from .ooyala import OoyalaIE
from ..utils import ( from ..utils import (
clean_html, clean_html,
determine_ext,
int_or_none, int_or_none,
str_or_none, str_or_none,
try_get, try_get,
urljoin,
) )
@ -28,7 +25,7 @@ class TelecincoIE(InfoExtractor):
'description': 'md5:716caf5601e25c3c5ab6605b1ae71529', 'description': 'md5:716caf5601e25c3c5ab6605b1ae71529',
}, },
'playlist': [{ 'playlist': [{
'md5': 'adb28c37238b675dad0f042292f209a7', 'md5': '7ee56d665cfd241c0e6d80fd175068b0',
'info_dict': { 'info_dict': {
'id': 'JEA5ijCnF6p5W08A1rNKn7', 'id': 'JEA5ijCnF6p5W08A1rNKn7',
'ext': 'mp4', 'ext': 'mp4',
@ -38,7 +35,7 @@ class TelecincoIE(InfoExtractor):
}] }]
}, { }, {
'url': 'http://www.cuatro.com/deportes/futbol/barcelona/Leo_Messi-Champions-Roma_2_2052780128.html', 'url': 'http://www.cuatro.com/deportes/futbol/barcelona/Leo_Messi-Champions-Roma_2_2052780128.html',
'md5': '9468140ebc300fbb8b9d65dc6e5c4b43', 'md5': 'c86fe0d99e3bdb46b7950d38bf6ef12a',
'info_dict': { 'info_dict': {
'id': 'jn24Od1zGLG4XUZcnUnZB6', 'id': 'jn24Od1zGLG4XUZcnUnZB6',
'ext': 'mp4', 'ext': 'mp4',
@ -48,7 +45,7 @@ class TelecincoIE(InfoExtractor):
}, },
}, { }, {
'url': 'http://www.mediaset.es/12meses/campanas/doylacara/conlatratanohaytrato/Ayudame-dar-cara-trata-trato_2_1986630220.html', 'url': 'http://www.mediaset.es/12meses/campanas/doylacara/conlatratanohaytrato/Ayudame-dar-cara-trata-trato_2_1986630220.html',
'md5': 'ae2dc6b7b50b2392076a51c0f70e01f6', 'md5': 'eddb50291df704ce23c74821b995bcac',
'info_dict': { 'info_dict': {
'id': 'aywerkD2Sv1vGNqq9b85Q2', 'id': 'aywerkD2Sv1vGNqq9b85Q2',
'ext': 'mp4', 'ext': 'mp4',
@ -90,58 +87,24 @@ class TelecincoIE(InfoExtractor):
def _parse_content(self, content, url): def _parse_content(self, content, url):
video_id = content['dataMediaId'] video_id = content['dataMediaId']
if content.get('dataCmsId') == 'ooyala':
return self.url_result(
'ooyala:%s' % video_id, OoyalaIE.ie_key(), video_id)
config_url = urljoin(url, content['dataConfig'])
config = self._download_json( config = self._download_json(
config_url, video_id, 'Downloading config JSON') content['dataConfig'], video_id, 'Downloading config JSON')
title = config['info']['title'] title = config['info']['title']
services = config['services']
def mmc_url(mmc_type): caronte = self._download_json(services['caronte'], video_id)
return re.sub( stream = caronte['dls'][0]['stream']
r'/(?:flash|html5)\.json', '/%s.json' % mmc_type, headers = self.geo_verification_headers()
config['services']['mmc']) headers.update({
'Content-Type': 'application/json;charset=UTF-8',
duration = None 'Origin': re.match(r'https?://[^/]+', url).group(0),
formats = [] })
for mmc_type in ('flash', 'html5'): cdn = self._download_json(
mmc = self._download_json( caronte['cerbero'], video_id, data=json.dumps({
mmc_url(mmc_type), video_id, 'bbx': caronte['bbx'],
'Downloading %s mmc JSON' % mmc_type, fatal=False) 'gbx': self._download_json(services['gbx'], video_id)['gbx'],
if not mmc: }).encode(), headers=headers)['tokens']['1']['cdn']
continue formats = self._extract_m3u8_formats(
if not duration: stream + '?' + cdn, video_id, 'mp4', 'm3u8_native', m3u8_id='hls')
duration = int_or_none(mmc.get('duration'))
for location in mmc['locations']:
gat = self._proto_relative_url(location.get('gat'), 'http:')
gcp = location.get('gcp')
ogn = location.get('ogn')
if None in (gat, gcp, ogn):
continue
token_data = {
'gcp': gcp,
'ogn': ogn,
'sta': 0,
}
media = self._download_json(
gat, video_id, data=json.dumps(token_data).encode('utf-8'),
headers={
'Content-Type': 'application/json;charset=utf-8',
'Referer': url,
}, fatal=False) or {}
stream = media.get('stream') or media.get('file')
if not stream:
continue
ext = determine_ext(stream)
if ext == 'f4m':
formats.extend(self._extract_f4m_formats(
stream + '&hdcore=3.2.0&plugin=aasp-3.2.0.77.18',
video_id, f4m_id='hds', fatal=False))
elif ext == 'm3u8':
formats.extend(self._extract_m3u8_formats(
stream, video_id, 'mp4', 'm3u8_native',
m3u8_id='hls', fatal=False))
self._sort_formats(formats) self._sort_formats(formats)
return { return {
@ -149,7 +112,7 @@ class TelecincoIE(InfoExtractor):
'title': title, 'title': title,
'formats': formats, 'formats': formats,
'thumbnail': content.get('dataPoster') or config.get('poster', {}).get('imageUrl'), 'thumbnail': content.get('dataPoster') or config.get('poster', {}).get('imageUrl'),
'duration': duration, 'duration': int_or_none(content.get('dataDuration')),
} }
def _real_extract(self, url): def _real_extract(self, url):