diff --git a/modules/senscritique/pages.py b/modules/senscritique/pages.py index 9f8bfc78..f1fda2b3 100644 --- a/modules/senscritique/pages.py +++ b/modules/senscritique/pages.py @@ -23,7 +23,7 @@ from .calendar import SensCritiquenCalendarEvent from datetime import date, datetime, time, timedelta from weboob.tools.browser2.page import HTMLPage, method, ItemElement, ListElement, JsonPage -from weboob.tools.browser2.filters import Filter, Link, CleanText, Regexp, Attr +from weboob.tools.browser2.filters import Filter, Link, CleanText, Regexp, Attr, Join, Format __all__ = ['AjaxPage', 'EventPage', 'JsonResumePage'] @@ -134,22 +134,13 @@ class AjaxPage(HTMLPage): class Description(Filter): def filter(self, el): - header = el[0].xpath("//div[@class='pvi-hero-product']")[0] - - title = CleanText("div[@class='d-rubric-inner']/h1")(header) - year = CleanText("div[@class='d-rubric-inner']/small")(header) - - _infos = header.xpath("ul[@class='pvi-product-specs']/li") - infos = '' - for li in _infos: - infos += u'- %s\n' % CleanText(li)(self) - + header = "//div[@class='pvi-hero-product']" section = "//section[@class='pvi-productDetails']" - _infos = el[0].xpath("%s/ul/li" % section) - for li in _infos: - infos += u'- %s\n' % CleanText(li)(self) - - return u'%s %s\n\n%s\n\n' % (title, year, infos) + return Format(u'%s %s\n\n%s%s\n\n', + CleanText("%s/div[@class='d-rubric-inner']/h1" % header), + CleanText("%s/div[@class='d-rubric-inner']/small" % header), + Join(u'- %s\n', "%s/ul[@class='pvi-product-specs']/li" % header), + Join(u'- %s\n', "%s/ul/li" % section))(el[0]) class Resume(Filter): diff --git a/weboob/tools/browser2/filters.py b/weboob/tools/browser2/filters.py index 1e5a4d8b..677ba456 100644 --- a/weboob/tools/browser2/filters.py +++ b/weboob/tools/browser2/filters.py @@ -323,3 +323,16 @@ class Format(MultiFilter): def filter(self, values): return self.fmt % values + + +class Join(CleanText): + def __init__(self, pattern, selector): + super(Join, self).__init__(selector) + self.pattern = pattern + + def filter(self, el): + res = '' + for li in el: + res += self.pattern % self.clean(li) + + return res