diff --git a/weboob/backends/arte/backend.py b/weboob/backends/arte/backend.py index eb82e2fc..4af556c9 100644 --- a/weboob/backends/arte/backend.py +++ b/weboob/backends/arte/backend.py @@ -35,8 +35,14 @@ class ArteBackend(BaseBackend, ICapVideo): VERSION = '0.2' DESCRIPTION = 'Arte french TV' LICENSE = 'GPLv3' + CONFIG = {'lang': BaseBackend.ConfigField(default='fr', description='Lang of videos', choices=['fr', 'de', 'en']), + 'quality': BaseBackend.ConfigField(default='hd', description='Quality of video', choices=['hd', 'sd']), + } BROWSER = ArteBrowser + def create_default_browser(self): + return self.create_browser(lang=self.config['lang'], quality=self.config['quality']) + def get_video(self, _id): with self.browser: return self.browser.get_video(_id) diff --git a/weboob/backends/arte/browser.py b/weboob/backends/arte/browser.py index 2b88290f..688c5e36 100644 --- a/weboob/backends/arte/browser.py +++ b/weboob/backends/arte/browser.py @@ -29,15 +29,27 @@ __all__ = ['ArteBrowser'] class ArteBrowser(BaseBrowser): DOMAIN = u'videos.arte.tv' ENCODING = None - PAGES = {r'http://videos.arte.tv/fr/videos/arte7.*': IndexPage, - r'http://videos.arte.tv/fr/do_search/videos/recherche.*': IndexPage, - r'http://videos.arte.tv/fr/videos/(?P.+)\.html': VideoPage + PAGES = {r'http://videos.arte.tv/%(lang)s/videos/arte7.*': IndexPage, + r'http://videos.arte.tv/%(lang)s/do_search/videos/%(searchlang)s.*': IndexPage, + r'http://videos.arte.tv/%(lang)s/videos/(?P.+)\.html': VideoPage } + SEARCH_LANG = {'fr': 'recherche', 'de':'suche', 'en': 'search'} + + def __init__(self, lang, quality, *args, **kwargs): + last_pages = self.PAGES + self.PAGES = {} + for url, page in last_pages.iteritems(): + self.PAGES[url % {'lang': lang, 'searchlang': self.SEARCH_LANG[lang]}] = page + + BaseBrowser.__init__(self, *args, **kwargs) + self.lang = lang + self.quality = quality + @id2url(ArteVideo.id2url) def get_video(self, url, video=None): self.location(url) - return self.page.get_video(video) + return self.page.get_video(video, self.lang, self.quality) def home(self): self.location('http://videos.arte.tv/fr/videos/arte7') @@ -46,6 +58,6 @@ class ArteBrowser(BaseBrowser): if not pattern: self.home() else: - self.location(self.buildurl('/fr/do_search/videos/recherche', q=pattern)) + self.location(self.buildurl('/%s/do_search/videos/%s' % (self.lang, self.SEARCH_LANG[self.lang]), q=pattern)) assert self.is_on_page(IndexPage) return self.page.iter_videos()