diff --git a/weboob/backends/youtube/backend.py b/weboob/backends/youtube/backend.py index c96d3246..16c00829 100644 --- a/weboob/backends/youtube/backend.py +++ b/weboob/backends/youtube/backend.py @@ -46,7 +46,7 @@ class YoutubeBackend(BaseBackend, ICapVideoProvider): def need_url(func): def inner(self, *args, **kwargs): url = args[0] - if (u'youtube.com' not in url) and not re.match('^\w+$', url): + if (u'youtube.com' not in url) and not re.match('^[\w-]+$', url): return None return func(self, *args, **kwargs) return inner diff --git a/weboob/backends/youtube/browser.py b/weboob/backends/youtube/browser.py index bf038b5e..82e10b5f 100644 --- a/weboob/backends/youtube/browser.py +++ b/weboob/backends/youtube/browser.py @@ -44,7 +44,7 @@ class YoutubeBrowser(BaseBrowser): return self.page.iter_videos() def get_video(self, _id): - if re.match('^\w+$', _id): + if re.match('^[\w-]+$', _id): url = 'http://www.youtube.com/watch?v=%s' % _id else: url = _id diff --git a/weboob/backends/youtube/pages/results.py b/weboob/backends/youtube/pages/results.py index 63fc0cca..5944e24c 100644 --- a/weboob/backends/youtube/pages/results.py +++ b/weboob/backends/youtube/pages/results.py @@ -24,7 +24,7 @@ from weboob.tools.browser import BasePage from weboob.capabilities.video import Video class ResultsPage(BasePage): - WATCH_RE = re.compile('/watch\?v=(\w+)') + WATCH_RE = re.compile('/watch\?v=([\w-]+)') def iter_videos(self): for div in self.document.getroot().cssselect("div[class^=video-entry]"): a = div.find('a') diff --git a/weboob/backends/youtube/pages/video.py b/weboob/backends/youtube/pages/video.py index 29a16654..65a624ab 100644 --- a/weboob/backends/youtube/pages/video.py +++ b/weboob/backends/youtube/pages/video.py @@ -25,7 +25,7 @@ from weboob.tools.browser import BasePage from weboob.capabilities.video import Video class VideoPage(BasePage): - URL_REGEX = re.compile(r"https?://[w\.]*youtube.com/watch\?v=(\w+)") + URL_REGEX = re.compile(r"https?://[w\.]*youtube.com/watch\?v=([\w-]+)") VIDEO_SIGNATURE_REGEX = re.compile(r'&t=([^ ,&]*)') def on_loaded(self):