|
|
@ -1015,14 +1015,14 @@ class YoutubeChannelIE(InfoExtractor):
|
|
|
|
|
|
|
|
|
|
|
|
class YoutubeUserIE(InfoExtractor):
|
|
|
|
class YoutubeUserIE(InfoExtractor):
|
|
|
|
IE_DESC = u'YouTube.com user videos (URL or "ytuser" keyword)'
|
|
|
|
IE_DESC = u'YouTube.com user videos (URL or "ytuser" keyword)'
|
|
|
|
_VALID_URL = r'(?:(?:(?:https?://)?(?:\w+\.)?youtube\.com/(?:user/)?)|ytuser:)([A-Za-z0-9_-]+)'
|
|
|
|
_VALID_URL = r'(?:(?:(?:https?://)?(?:\w+\.)?youtube\.com/(?:user/)?)|ytuser:)(?!feed/)([A-Za-z0-9_-]+)'
|
|
|
|
_TEMPLATE_URL = 'http://gdata.youtube.com/feeds/api/users/%s'
|
|
|
|
_TEMPLATE_URL = 'http://gdata.youtube.com/feeds/api/users/%s'
|
|
|
|
_GDATA_PAGE_SIZE = 50
|
|
|
|
_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 = 'http://gdata.youtube.com/feeds/api/users/%s/uploads?max-results=%d&start-index=%d&alt=json'
|
|
|
|
IE_NAME = u'youtube:user'
|
|
|
|
IE_NAME = u'youtube:user'
|
|
|
|
|
|
|
|
|
|
|
|
def suitable(cls, url):
|
|
|
|
def suitable(cls, url):
|
|
|
|
if YoutubeIE.suitable(url): return False
|
|
|
|
if YoutubeIE.suitable(url) or YoutubeFavouritesIE.suitable(url): return False
|
|
|
|
else: return super(YoutubeUserIE, cls).suitable(url)
|
|
|
|
else: return super(YoutubeUserIE, cls).suitable(url)
|
|
|
|
|
|
|
|
|
|
|
|
def _real_extract(self, url):
|
|
|
|
def _real_extract(self, url):
|
|
|
|