mirror of
https://github.com/ytdl-org/youtube-dl
synced 2024-12-23 04:30:10 +09:00
Compare commits
2 Commits
015e19b350
...
b79977fb6b
Author | SHA1 | Date | |
---|---|---|---|
|
b79977fb6b | ||
|
bc7c8f3d4e |
@ -3,7 +3,7 @@ from __future__ import unicode_literals
|
||||
|
||||
import re
|
||||
|
||||
from .common import InfoExtractor
|
||||
from .yahoo import YahooIE
|
||||
from ..compat import (
|
||||
compat_parse_qs,
|
||||
compat_urllib_parse_urlparse,
|
||||
@ -15,9 +15,9 @@ from ..utils import (
|
||||
)
|
||||
|
||||
|
||||
class AolIE(InfoExtractor):
|
||||
class AolIE(YahooIE):
|
||||
IE_NAME = 'aol.com'
|
||||
_VALID_URL = r'(?:aol-video:|https?://(?:www\.)?aol\.(?:com|ca|co\.uk|de|jp)/video/(?:[^/]+/)*)(?P<id>[0-9a-f]+)'
|
||||
_VALID_URL = r'(?:aol-video:|https?://(?:www\.)?aol\.(?:com|ca|co\.uk|de|jp)/video/(?:[^/]+/)*)(?P<id>\d{9}|[0-9a-f]{24}|[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12})'
|
||||
|
||||
_TESTS = [{
|
||||
# video with 5min ID
|
||||
@ -76,10 +76,16 @@ class AolIE(InfoExtractor):
|
||||
}, {
|
||||
'url': 'https://www.aol.jp/video/playlist/5a28e936a1334d000137da0c/5a28f3151e642219fde19831/',
|
||||
'only_matching': True,
|
||||
}, {
|
||||
# Yahoo video
|
||||
'url': 'https://www.aol.com/video/play/991e6700-ac02-11ea-99ff-357400036f61/24bbc846-3e30-3c46-915e-fe8ccd7fcc46/',
|
||||
'only_matching': True,
|
||||
}]
|
||||
|
||||
def _real_extract(self, url):
|
||||
video_id = self._match_id(url)
|
||||
if '-' in video_id:
|
||||
return self._extract_yahoo_video(video_id, 'us')
|
||||
|
||||
response = self._download_json(
|
||||
'https://feedapi.b2c.on.aol.com/v1.0/app/videos/aolon/%s/details' % video_id,
|
||||
|
@ -177,46 +177,9 @@ class YahooIE(InfoExtractor):
|
||||
'only_matching': True,
|
||||
}]
|
||||
|
||||
def _real_extract(self, url):
|
||||
url, country, display_id = re.match(self._VALID_URL, url).groups()
|
||||
if not country:
|
||||
country = 'us'
|
||||
else:
|
||||
country = country.split('-')[0]
|
||||
api_base = 'https://%s.yahoo.com/_td/api/resource/' % country
|
||||
|
||||
for i, uuid in enumerate(['url=' + url, 'ymedia-alias=' + display_id]):
|
||||
content = self._download_json(
|
||||
api_base + 'content;getDetailView=true;uuids=["%s"]' % uuid,
|
||||
display_id, 'Downloading content JSON metadata', fatal=i == 1)
|
||||
if content:
|
||||
item = content['items'][0]
|
||||
break
|
||||
|
||||
if item.get('type') != 'video':
|
||||
entries = []
|
||||
|
||||
cover = item.get('cover') or {}
|
||||
if cover.get('type') == 'yvideo':
|
||||
cover_url = cover.get('url')
|
||||
if cover_url:
|
||||
entries.append(self.url_result(
|
||||
cover_url, 'Yahoo', cover.get('uuid')))
|
||||
|
||||
for e in item.get('body', []):
|
||||
if e.get('type') == 'videoIframe':
|
||||
iframe_url = e.get('url')
|
||||
if not iframe_url:
|
||||
continue
|
||||
entries.append(self.url_result(iframe_url))
|
||||
|
||||
return self.playlist_result(
|
||||
entries, item.get('uuid'),
|
||||
item.get('title'), item.get('summary'))
|
||||
|
||||
video_id = item['uuid']
|
||||
def _extract_yahoo_video(self, video_id, country):
|
||||
video = self._download_json(
|
||||
api_base + 'VideoService.videos;view=full;video_ids=["%s"]' % video_id,
|
||||
'https://%s.yahoo.com/_td/api/resource/VideoService.videos;view=full;video_ids=["%s"]' % (country, video_id),
|
||||
video_id, 'Downloading video JSON metadata')[0]
|
||||
title = video['title']
|
||||
|
||||
@ -298,7 +261,6 @@ class YahooIE(InfoExtractor):
|
||||
'id': video_id,
|
||||
'title': self._live_title(title) if is_live else title,
|
||||
'formats': formats,
|
||||
'display_id': display_id,
|
||||
'thumbnails': thumbnails,
|
||||
'description': clean_html(video.get('description')),
|
||||
'timestamp': parse_iso8601(video.get('publish_time')),
|
||||
@ -311,6 +273,44 @@ class YahooIE(InfoExtractor):
|
||||
'episode_number': int_or_none(series_info.get('episode_number')),
|
||||
}
|
||||
|
||||
def _real_extract(self, url):
|
||||
url, country, display_id = re.match(self._VALID_URL, url).groups()
|
||||
if not country:
|
||||
country = 'us'
|
||||
else:
|
||||
country = country.split('-')[0]
|
||||
|
||||
item = self._download_json(
|
||||
'https://%s.yahoo.com/caas/content/article' % country, display_id,
|
||||
'Downloading content JSON metadata', query={
|
||||
'url': url
|
||||
})['items'][0]['data']['partnerData']
|
||||
|
||||
if item.get('type') != 'video':
|
||||
entries = []
|
||||
|
||||
cover = item.get('cover') or {}
|
||||
if cover.get('type') == 'yvideo':
|
||||
cover_url = cover.get('url')
|
||||
if cover_url:
|
||||
entries.append(self.url_result(
|
||||
cover_url, 'Yahoo', cover.get('uuid')))
|
||||
|
||||
for e in (item.get('body') or []):
|
||||
if e.get('type') == 'videoIframe':
|
||||
iframe_url = e.get('url')
|
||||
if not iframe_url:
|
||||
continue
|
||||
entries.append(self.url_result(iframe_url))
|
||||
|
||||
return self.playlist_result(
|
||||
entries, item.get('uuid'),
|
||||
item.get('title'), item.get('summary'))
|
||||
|
||||
info = self._extract_yahoo_video(item['uuid'], country)
|
||||
info['display_id'] = display_id
|
||||
return info
|
||||
|
||||
|
||||
class YahooSearchIE(SearchInfoExtractor):
|
||||
IE_DESC = 'Yahoo screen search'
|
||||
|
Loading…
Reference in New Issue
Block a user