[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
This commit is contained in:
Bezleputh 2015-01-06 17:04:11 +01:00 committed by Florent
commit 6c550ea5a7
3 changed files with 13 additions and 0 deletions

View file

@ -35,6 +35,11 @@ class PluzzBrowser(PagesBrowser):
video_page = URL(r'http://webservices.francetelevisions.fr/tools/getInfosOeuvre/v2/\?idDiffusion=(?P<id>.*)&catalogue=Pluzz', VideoPage)
videos_list_page = URL('(?P<program>videos/.*)', 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()

View file

@ -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):

View file

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