|
@ -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 ' |
|
|