|
|
@ -40,7 +40,7 @@ class YoutubeBaseInfoExtractor(InfoExtractor): |
|
|
|
"""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' |
|
|
|
_AGE_URL = 'http://www.youtube.com/verify_age?next_url=/&gl=US&hl=en' |
|
|
|
_AGE_URL = 'https://www.youtube.com/verify_age?next_url=/&gl=US&hl=en' |
|
|
|
_NETRC_MACHINE = 'youtube' |
|
|
|
# If True it will raise an error if no login info is provided |
|
|
|
_LOGIN_REQUIRED = False |
|
|
@ -1014,7 +1014,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor): |
|
|
|
def _get_available_subtitles(self, video_id, webpage): |
|
|
|
try: |
|
|
|
sub_list = self._download_webpage( |
|
|
|
'http://video.google.com/timedtext?hl=en&type=list&v=%s' % video_id, |
|
|
|
'https://video.google.com/timedtext?hl=en&type=list&v=%s' % video_id, |
|
|
|
video_id, note=False) |
|
|
|
except ExtractorError as err: |
|
|
|
self._downloader.report_warning(u'unable to download video subtitles: %s' % compat_str(err)) |
|
|
@ -1030,7 +1030,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor): |
|
|
|
'fmt': self._downloader.params.get('subtitlesformat', 'srt'), |
|
|
|
'name': unescapeHTML(l[0]).encode('utf-8'), |
|
|
|
}) |
|
|
|
url = u'http://www.youtube.com/api/timedtext?' + params |
|
|
|
url = u'https://www.youtube.com/api/timedtext?' + params |
|
|
|
sub_lang_list[lang] = url |
|
|
|
if not sub_lang_list: |
|
|
|
self._downloader.report_warning(u'video doesn\'t have subtitles') |
|
|
@ -1554,7 +1554,7 @@ class YoutubeChannelIE(InfoExtractor): |
|
|
|
IE_DESC = u'YouTube.com channels' |
|
|
|
_VALID_URL = r"^(?:https?://)?(?:youtu\.be|(?:\w+\.)?youtube(?:-nocookie)?\.com)/channel/([0-9A-Za-z_-]+)" |
|
|
|
_MORE_PAGES_INDICATOR = 'yt-uix-load-more' |
|
|
|
_MORE_PAGES_URL = 'http://www.youtube.com/c4_browse_ajax?action_load_more_videos=1&flow=list&paging=%s&view=0&sort=da&channel_id=%s' |
|
|
|
_MORE_PAGES_URL = 'https://www.youtube.com/c4_browse_ajax?action_load_more_videos=1&flow=list&paging=%s&view=0&sort=da&channel_id=%s' |
|
|
|
IE_NAME = u'youtube:channel' |
|
|
|
|
|
|
|
def extract_videos_from_page(self, page): |
|
|
@ -1610,9 +1610,9 @@ class YoutubeChannelIE(InfoExtractor): |
|
|
|
class YoutubeUserIE(InfoExtractor): |
|
|
|
IE_DESC = u'YouTube.com user videos (URL or "ytuser" keyword)' |
|
|
|
_VALID_URL = r'(?:(?:(?:https?://)?(?:\w+\.)?youtube\.com/(?:user/)?(?!(?:attribution_link|watch)(?:$|[^a-z_A-Z0-9-])))|ytuser:)(?!feed/)([A-Za-z0-9_-]+)' |
|
|
|
_TEMPLATE_URL = 'http://gdata.youtube.com/feeds/api/users/%s' |
|
|
|
_TEMPLATE_URL = 'https://gdata.youtube.com/feeds/api/users/%s' |
|
|
|
_GDATA_PAGE_SIZE = 50 |
|
|
|
_GDATA_URL = 'http://gdata.youtube.com/feeds/api/users/%s/uploads?max-results=%d&start-index=%d&alt=json' |
|
|
|
_GDATA_URL = 'https://gdata.youtube.com/feeds/api/users/%s/uploads?max-results=%d&start-index=%d&alt=json' |
|
|
|
IE_NAME = u'youtube:user' |
|
|
|
|
|
|
|
@classmethod |
|
|
@ -1743,7 +1743,7 @@ class YoutubeFeedsInfoExtractor(YoutubeBaseInfoExtractor): |
|
|
|
action = 'action_load_system_feed' |
|
|
|
if self._PERSONAL_FEED: |
|
|
|
action = 'action_load_personal_feed' |
|
|
|
return 'http://www.youtube.com/feed_ajax?%s=1&feed_name=%s&paging=%%s' % (action, self._FEED_NAME) |
|
|
|
return 'https://www.youtube.com/feed_ajax?%s=1&feed_name=%s&paging=%%s' % (action, self._FEED_NAME) |
|
|
|
|
|
|
|
@property |
|
|
|
def IE_NAME(self): |
|
|
|