|
|
@ -1825,10 +1825,18 @@ class YoutubeTruncatedURLIE(InfoExtractor):
|
|
|
|
IE_NAME = 'youtube:truncated_url'
|
|
|
|
IE_NAME = 'youtube:truncated_url'
|
|
|
|
IE_DESC = False # Do not list
|
|
|
|
IE_DESC = False # Do not list
|
|
|
|
_VALID_URL = r'''(?x)
|
|
|
|
_VALID_URL = r'''(?x)
|
|
|
|
(?:https?://)?[^/]+/watch\?(?:feature=[a-z_]+)?$|
|
|
|
|
(?:https?://)?[^/]+/watch\?(?:
|
|
|
|
|
|
|
|
feature=[a-z_]+|
|
|
|
|
|
|
|
|
annotation_id=annotation_[^&]+
|
|
|
|
|
|
|
|
)?$|
|
|
|
|
(?:https?://)?(?:www\.)?youtube\.com/attribution_link\?a=[^&]+$
|
|
|
|
(?:https?://)?(?:www\.)?youtube\.com/attribution_link\?a=[^&]+$
|
|
|
|
'''
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_TESTS = [{
|
|
|
|
|
|
|
|
'url': 'http://www.youtube.com/watch?annotation_id=annotation_3951667041',
|
|
|
|
|
|
|
|
'only_matching': True,
|
|
|
|
|
|
|
|
}]
|
|
|
|
|
|
|
|
|
|
|
|
def _real_extract(self, url):
|
|
|
|
def _real_extract(self, url):
|
|
|
|
raise ExtractorError(
|
|
|
|
raise ExtractorError(
|
|
|
|
u'Did you forget to quote the URL? Remember that & is a meta '
|
|
|
|
u'Did you forget to quote the URL? Remember that & is a meta '
|
|
|
|