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.page import ListElement, method, ItemElement
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.video import BaseVideo
@ -46,7 +47,7 @@ class IndexPage(HTMLPage):
obj_id = Id(Link('.//a'))
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
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+))?')
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):
m = self.regexp.search(txt)
if m:
@ -268,6 +272,11 @@ class Time(Filter):
kwargs[key] = int(m.groupdict()[index] or 0)
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):
klass = datetime.timedelta