1
0
mirror of https://github.com/l1ving/youtube-dl synced 2024-12-22 00:05:37 +08:00

[teamcoco] Fix extraction

Also, use a single style of quotes
This commit is contained in:
Naglis Jonaitis 2015-02-21 22:19:39 +02:00
parent c5181ab410
commit 314368c822

View File

@ -1,8 +1,10 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import base64
import re import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import qualities
class TeamcocoIE(InfoExtractor): class TeamcocoIE(InfoExtractor):
@ -24,8 +26,8 @@ class TeamcocoIE(InfoExtractor):
'info_dict': { 'info_dict': {
'id': '19705', 'id': '19705',
'ext': 'mp4', 'ext': 'mp4',
"description": "Louis C.K. got starstruck by George W. Bush, so what? Part one.", 'description': 'Louis C.K. got starstruck by George W. Bush, so what? Part one.',
"title": "Louis C.K. Interview Pt. 1 11/3/11", 'title': 'Louis C.K. Interview Pt. 1 11/3/11',
'age_limit': 0, 'age_limit': 0,
} }
} }
@ -42,42 +44,39 @@ class TeamcocoIE(InfoExtractor):
display_id = mobj.group('display_id') display_id = mobj.group('display_id')
webpage = self._download_webpage(url, display_id) webpage = self._download_webpage(url, display_id)
video_id = mobj.group("video_id") video_id = mobj.group('video_id')
if not video_id: if not video_id:
video_id = self._html_search_regex( video_id = self._html_search_regex(
self._VIDEO_ID_REGEXES, webpage, 'video id') self._VIDEO_ID_REGEXES, webpage, 'video id')
data_url = 'http://teamcoco.com/cvp/2.0/%s.xml' % video_id embed_url = 'http://teamcoco.com/embed/v/%s' % video_id
data = self._download_xml( embed = self._download_webpage(
data_url, display_id, 'Downloading data webpage') embed_url, video_id, 'Downloading embed page')
encoded_data = self._search_regex(
r'"preload"\s*:\s*"([^"]+)"', embed, 'encoded data')
data = self._parse_json(
base64.b64decode(encoded_data.encode('ascii')).decode('utf-8'), video_id)
qualities = ['500k', '480p', '1000k', '720p', '1080p']
formats = [] formats = []
for filed in data.findall('files/file'): get_quality = qualities(['500k', '480p', '1000k', '720p', '1080p'])
if filed.attrib.get('playmode') == 'all': for filed in data['files']:
# it just duplicates one of the entries m_format = re.search(r'(\d+(k|p))\.mp4', filed['url'])
break
file_url = filed.text
m_format = re.search(r'(\d+(k|p))\.mp4', file_url)
if m_format is not None: if m_format is not None:
format_id = m_format.group(1) format_id = m_format.group(1)
else: else:
format_id = filed.attrib['bitrate'] format_id = filed['bitrate']
tbr = ( tbr = (
int(filed.attrib['bitrate']) int(filed['bitrate'])
if filed.attrib['bitrate'].isdigit() if filed['bitrate'].isdigit()
else None) else None)
try:
quality = qualities.index(format_id)
except ValueError:
quality = -1
formats.append({ formats.append({
'url': file_url, 'url': filed['url'],
'ext': 'mp4', 'ext': 'mp4',
'tbr': tbr, 'tbr': tbr,
'format_id': format_id, 'format_id': format_id,
'quality': quality, 'quality': get_quality(format_id),
}) })
self._sort_formats(formats) self._sort_formats(formats)
@ -86,8 +85,8 @@ class TeamcocoIE(InfoExtractor):
'id': video_id, 'id': video_id,
'display_id': display_id, 'display_id': display_id,
'formats': formats, 'formats': formats,
'title': self._og_search_title(webpage), 'title': data['title'],
'thumbnail': self._og_search_thumbnail(webpage), 'thumbnail': data.get('thumb', {}).get('href'),
'description': self._og_search_description(webpage), 'description': data.get('teaser'),
'age_limit': self._family_friendly_search(webpage), 'age_limit': self._family_friendly_search(webpage),
} }