add a default value for Time/Duration

This commit is contained in:
Romain Bignon 2014-03-19 20:45:39 +01:00
commit e217b24427
2 changed files with 11 additions and 1 deletions

View file

@ -23,6 +23,7 @@ import re
from weboob.tools.browser2 import HTMLPage from weboob.tools.browser2 import HTMLPage
from weboob.tools.browser2.page import ListElement, method, ItemElement from weboob.tools.browser2.page import ListElement, method, ItemElement
from weboob.tools.browser2.filters import Filter, Link, CleanText, Duration from weboob.tools.browser2.filters import Filter, Link, CleanText, Duration
from weboob.capabilities.base import NotAvailable
from weboob.capabilities.image import BaseImage from weboob.capabilities.image import BaseImage
from weboob.capabilities.video import BaseVideo from weboob.capabilities.video import BaseVideo
@ -46,7 +47,7 @@ class IndexPage(HTMLPage):
obj_id = Id(Link('.//a')) obj_id = Id(Link('.//a'))
obj_title = CleanText('.//span[@id="title1"]') obj_title = CleanText('.//span[@id="title1"]')
obj_duration = Duration(CleanText('.//span[@class="thumbtime"]//span')) obj_duration = Duration(CleanText('.//span[@class="thumbtime"]//span'), default=NotAvailable)
obj_nsfw = True obj_nsfw = True
def obj_thumbnail(self): def obj_thumbnail(self):

View file

@ -260,6 +260,10 @@ class Time(Filter):
regexp = re.compile(ur'(?P<hh>\d+):?(?P<mm>\d+)(:(?P<ss>\d+))?') regexp = re.compile(ur'(?P<hh>\d+):?(?P<mm>\d+)(:(?P<ss>\d+))?')
kwargs = {'hour': 'hh', 'minute': 'mm', 'second': 'ss'} kwargs = {'hour': 'hh', 'minute': 'mm', 'second': 'ss'}
def __init__(self, selector, default=_NO_DEFAULT):
super(Time, self).__init__(selector)
self.default = default
def filter(self, txt): def filter(self, txt):
m = self.regexp.search(txt) m = self.regexp.search(txt)
if m: if m:
@ -268,6 +272,11 @@ class Time(Filter):
kwargs[key] = int(m.groupdict()[index] or 0) kwargs[key] = int(m.groupdict()[index] or 0)
return self.klass(**kwargs) return self.klass(**kwargs)
if self.default is not _NO_DEFAULT:
return self.default
else:
raise ValueError('Unable to find time in %r' % txt)
class Duration(Time): class Duration(Time):
klass = datetime.timedelta klass = datetime.timedelta