From 6c550ea5a7f1fd55359917391d11d96a70dbddb9 Mon Sep 17 00:00:00 2001 From: Bezleputh Date: Tue, 6 Jan 2015 17:04:11 +0100 Subject: [PATCH] [francetelevisions] add option to get video from an url this will allow to do things like that : videoob -d -b francetelevisions download http://pluzz.francetv.fr/videos/faites_entrer_l_accuse.html --- modules/francetelevisions/browser.py | 5 +++++ modules/francetelevisions/module.py | 4 ++++ modules/francetelevisions/test.py | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/modules/francetelevisions/browser.py b/modules/francetelevisions/browser.py index 706b7696..bcc525c7 100644 --- a/modules/francetelevisions/browser.py +++ b/modules/francetelevisions/browser.py @@ -35,6 +35,11 @@ class PluzzBrowser(PagesBrowser): video_page = URL(r'http://webservices.francetelevisions.fr/tools/getInfosOeuvre/v2/\?idDiffusion=(?P.*)&catalogue=Pluzz', VideoPage) videos_list_page = URL('(?Pvideos/.*)', VideoListPage) + def get_video_from_url(self, url): + video = self.videos_list_page.go(program=url).get_last_video() + if video: + return self.get_video(video.id, video) + def search_videos(self, pattern): if not self.PROGRAMS: self.PROGRAMS = self.get_program_list() diff --git a/modules/francetelevisions/module.py b/modules/francetelevisions/module.py index 75e78d11..c576dd2a 100644 --- a/modules/francetelevisions/module.py +++ b/modules/francetelevisions/module.py @@ -24,6 +24,7 @@ from weboob.tools.backend import Module from .browser import PluzzBrowser +import re __all__ = ['PluzzModule'] @@ -38,6 +39,9 @@ class PluzzModule(Module, CapVideo, CapCollection): BROWSER = PluzzBrowser def get_video(self, _id): + m = re.match('http://pluzz.francetv.fr/(videos/.*)', _id) + if m: + return self.browser.get_video_from_url(m.group(1)) return self.browser.get_video(_id) def search_videos(self, pattern, sortby=CapVideo.SEARCH_RELEVANCE, nsfw=False): diff --git a/modules/francetelevisions/test.py b/modules/francetelevisions/test.py index 98b89e50..de0bc14a 100644 --- a/modules/francetelevisions/test.py +++ b/modules/francetelevisions/test.py @@ -31,3 +31,7 @@ class PluzzTest(BackendTest): v = l[0] self.backend.fillobj(v, ('url',)) self.assertTrue(v.url, 'URL for video "%s" not found: %s' % (v.id, v.url)) + + def test_video_from_url(self): + v = self.backend.get_video('http://pluzz.francetv.fr/videos/faites_entrer_l_accuse.html') + self.assertTrue(v.url, 'URL for video "%s" not found: %s' % (v.id, v.url))