Support more YouTube URLs

The regular expression is also more strict, yet accepts the
youtu.be short URLs and user page URLs.
This commit is contained in:
Laurent Bachelier 2011-05-01 14:37:15 +02:00
commit 5e90c1f47c
3 changed files with 7 additions and 1 deletions

View file

@ -45,7 +45,7 @@ class YoutubeBackend(BaseBackend, ICapVideo):
LICENSE = 'AGPLv3+'
BROWSER = YoutubeBrowser
URL_RE = re.compile(r'https?://.*youtube.com/watch\?v=(.*)')
URL_RE = re.compile(r'^https?://(?:\w*\.?youtube\.com/watch\?v=|youtu\.be\/|\w*\.?youtube\.com\/user\/\w+#p\/u\/\d+\/)(.*)$')
AVAILABLE_FORMATS = [38, 37, 22, 45, 35, 34, 43, 18, 6, 5, 17, 13]
FORMAT_EXTENSIONS = {
13: '3gp',

View file

@ -29,4 +29,5 @@ class YoutubeTest(BackendTest):
v = l[0]
self.backend.fillobj(v, ('url',))
self.assertTrue(v.url and v.url.startswith('http://'), 'URL for video "%s" not found: %s' % (v.id, v.url))
assert self.backend.get_video(v.shorturl)
self.backend.browser.openurl(v.url)

View file

@ -28,3 +28,8 @@ class YoutubeVideo(BaseVideo):
@classmethod
def id2url(cls, _id):
return 'http://www.youtube.com/watch?v=%s' % _id
def _get_shorturl(self):
return 'http://youtu.be/%s' % self.id
shorturl = property(_get_shorturl)