From 95cb4382944335254a4b6f3032529d06ee90995f Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Fri, 1 Jul 2011 14:08:03 +0200 Subject: [PATCH] catch errors when page is not found or if video is not yet available --- weboob/backends/francetelevisions/browser.py | 5 ++++- weboob/backends/francetelevisions/pages.py | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/weboob/backends/francetelevisions/browser.py b/weboob/backends/francetelevisions/browser.py index d48428f7..bceb075e 100644 --- a/weboob/backends/francetelevisions/browser.py +++ b/weboob/backends/francetelevisions/browser.py @@ -42,8 +42,11 @@ class PluzzBrowser(BaseBrowser): self.location(url) assert self.is_on_page(VideoPage) - metaurl = self.page.get_meta_url() id = self.page.get_id() + metaurl = self.page.get_meta_url() + if metaurl is None: + return None + self.location(metaurl) assert self.is_on_page(MetaVideoPage) diff --git a/weboob/backends/francetelevisions/pages.py b/weboob/backends/francetelevisions/pages.py index 67854a22..a83970fc 100644 --- a/weboob/backends/francetelevisions/pages.py +++ b/weboob/backends/francetelevisions/pages.py @@ -21,7 +21,7 @@ import datetime import re from weboob.tools.capabilities.thumbnail import Thumbnail -from weboob.tools.browser import BasePage +from weboob.tools.browser import BasePage, BrokenPageError from .video import PluzzVideo @@ -52,9 +52,18 @@ class IndexPage(BasePage): yield video class VideoPage(BasePage): + def on_loaded(self): + p = self.parser.select(self.document.getroot(), 'p.alert') + if len(p) > 0: + raise Exception(p[0].text) + def get_meta_url(self): - div = self.parser.select(self.document.getroot(), 'a#current_video', 1) - return div.attrib['href'] + try: + div = self.parser.select(self.document.getroot(), 'a#current_video', 1) + except BrokenPageError: + return None + else: + return div.attrib['href'] def get_id(self): return self.groups[0]