1
0
mirror of https://github.com/l1ving/youtube-dl synced 2024-11-22 01:22:54 +08:00

[subtitles] made inheritance hierarchy flat as requested

This commit is contained in:
Ismael Mejia 2013-09-11 15:21:09 +02:00
parent cf1dd0c59e
commit f8e52269c1
2 changed files with 17 additions and 21 deletions

View File

@ -18,23 +18,7 @@ from ..utils import (
)
class DailyMotionSubtitlesIE(NoAutoSubtitlesIE):
def _get_available_subtitles(self, video_id):
request = compat_urllib_request.Request('https://api.dailymotion.com/video/%s/subtitles?fields=id,language,url' % video_id)
try:
sub_list = compat_urllib_request.urlopen(request).read().decode('utf-8')
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
self._downloader.report_warning(u'unable to download video subtitles: %s' % compat_str(err))
return {}
info = json.loads(sub_list)
if (info['total'] > 0):
sub_lang_list = dict((l['language'], l['url']) for l in info['list'])
return sub_lang_list
self._downloader.report_warning(u'video doesn\'t have subtitles')
return {}
class DailymotionIE(DailyMotionSubtitlesIE, InfoExtractor):
class DailymotionIE(NoAutoSubtitlesIE):
"""Information Extractor for Dailymotion"""
_VALID_URL = r'(?i)(?:https?://)?(?:www\.)?dailymotion\.[a-z]{2,3}/(?:embed/)?video/([^/]+)'
@ -120,6 +104,20 @@ class DailymotionIE(DailyMotionSubtitlesIE, InfoExtractor):
'thumbnail': info['thumbnail_url']
}]
def _get_available_subtitles(self, video_id):
request = compat_urllib_request.Request('https://api.dailymotion.com/video/%s/subtitles?fields=id,language,url' % video_id)
try:
sub_list = compat_urllib_request.urlopen(request).read().decode('utf-8')
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
self._downloader.report_warning(u'unable to download video subtitles: %s' % compat_str(err))
return {}
info = json.loads(sub_list)
if (info['total'] > 0):
sub_lang_list = dict((l['language'], l['url']) for l in info['list'])
return sub_lang_list
self._downloader.report_warning(u'video doesn\'t have subtitles')
return {}
class DailymotionPlaylistIE(InfoExtractor):
_VALID_URL = r'(?:https?://)?(?:www\.)?dailymotion\.[a-z]{2,3}/playlist/(?P<id>.+?)/'

View File

@ -24,7 +24,7 @@ from ..utils import (
orderedSet,
)
class YoutubeBaseInfoExtractor(InfoExtractor):
class YoutubeBaseInfoExtractor(SubtitlesIE):
"""Provide base functions for Youtube extractors"""
_LOGIN_URL = 'https://accounts.google.com/ServiceLogin'
_LANG_URL = r'https://www.youtube.com/?hl=en&persist_hl=1&gl=US&persist_gl=1&opt_out_ackd=1'
@ -131,8 +131,6 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
return
self._confirm_age()
class YoutubeSubtitlesIE(SubtitlesIE):
def _get_available_subtitles(self, video_id):
request = compat_urllib_request.Request('http://video.google.com/timedtext?hl=en&type=list&v=%s' % video_id)
try:
@ -189,7 +187,7 @@ class YoutubeSubtitlesIE(SubtitlesIE):
self._downloader.report_warning(err_msg)
return {}
class YoutubeIE(YoutubeSubtitlesIE, YoutubeBaseInfoExtractor):
class YoutubeIE(YoutubeBaseInfoExtractor):
IE_DESC = u'YouTube.com'
_VALID_URL = r"""^
(