diff --git a/modules/senscritique/browser.py b/modules/senscritique/browser.py
index 34a113f5..ac7075be 100644
--- a/modules/senscritique/browser.py
+++ b/modules/senscritique/browser.py
@@ -19,7 +19,6 @@
from weboob.browser import PagesBrowser, URL
from weboob.browser.profiles import Firefox
-from .calendar import SensCritiquenCalendarEvent
from .pages import AjaxPage, EventPage, JsonResumePage
import re
@@ -71,7 +70,7 @@ class SenscritiqueBrowser(PagesBrowser):
def set_package_settings(self, package, channels):
url = 'http://www.senscritique.com/sc/tv_guides/saveSettings.json'
- #do not use a dict because there are several same keys
+ # do not use a dict because there are several same keys
params = "network=%s" % package
params += ''.join(["&channels%%5B%%5D=%d" % (channel) for channel in channels])
self.open(url, data=params)
@@ -115,26 +114,28 @@ class SenscritiqueBrowser(PagesBrowser):
while True:
self.DATA['page'] = '%d' % page_nb
page = self.ajax_page.open(data=self.DATA)
- event = page.list_events(_id=_id)
+ try:
+ event = page.list_events(_id=_id).next()
+ except StopIteration:
+ event = None
+
nb_events = page.count_events()
- if event or nb_events < self.LIMIT or page >= self.LIMIT_NB_PAGES:
+ if event or nb_events < self.LIMIT or page_nb >= self.LIMIT_NB_PAGES:
break
- page += 1
+ page_nb += 1
if event:
- if not isinstance(event, SensCritiquenCalendarEvent):
- event = event.next()
-
- event._resume = self.get_resume(_id)
-
+ _id = _id.split('#')[0]
self._setup_session(Firefox())
event = self.event_page.go(_id=_id).get_event(obj=event)
-
+ resume = self.get_resume(_id)
+ if resume:
+ event.description += self.get_resume(_id)
return event
def get_resume(self, _id):
self.set_json_header()
re_id = re.compile('^/?.*/(.*)', re.DOTALL)
- a_id = re_id.search(_id.split('#')[0]).group(1)
- return self.json_page.go(_id=a_id).get_resume()
+ _id = re_id.search(_id).group(1)
+ return self.json_page.go(_id=_id).get_resume()
diff --git a/modules/senscritique/module.py b/modules/senscritique/module.py
index a17a946a..9a21047f 100644
--- a/modules/senscritique/module.py
+++ b/modules/senscritique/module.py
@@ -111,7 +111,7 @@ class SenscritiqueModule(Module, CapCalendarEvent):
for item in self.browser.list_events(date_from, date_to, package, channels):
items.append(item)
- items.sort(key=lambda o:o.start_date)
+ items.sort(key=lambda o: o.start_date)
return items
def get_event(self, _id, event=None):
diff --git a/modules/senscritique/pages.py b/modules/senscritique/pages.py
index e14d125c..7936607e 100644
--- a/modules/senscritique/pages.py
+++ b/modules/senscritique/pages.py
@@ -17,14 +17,13 @@
# You should have received a copy of the GNU Affero General Public License
# along with weboob. If not, see .
-from weboob.tools.html import html2text
from .calendar import SensCritiquenCalendarEvent
-from datetime import date, datetime, time, timedelta
+from datetime import date, datetime, timedelta
from weboob.browser.pages import HTMLPage, JsonPage
from weboob.browser.elements import ItemElement, ListElement, method
-from weboob.browser.filters.standard import Filter, CleanText, Regexp, Join, Format
+from weboob.browser.filters.standard import Filter, CleanText, Regexp, Join, Format, BrowserURL, Env
from weboob.browser.filters.html import Link, Attr
@@ -131,10 +130,6 @@ class AjaxPage(HTMLPage):
return False
- class CombineDate(Filter):
- def filter(self, _date):
- return datetime.combine(_date, time.max)
-
class Summary(Filter):
def filter(self, el):
title = Regexp(Attr('div/img', 'alt'), '^Affiche(.*)')(el[0])
@@ -146,7 +141,6 @@ class AjaxPage(HTMLPage):
FormatDate("%Y%m%d%H%M", Date('div/div[@class="elgr-data-diffusion"]')),
CleanText(Channel('.'), replace=[(' ', '-')]))
obj_start_date = Date('div/div[@class="elgr-data-diffusion"]')
- obj_end_date = CombineDate(obj_start_date)
obj_summary = CleanText(Summary('.'))
@@ -161,30 +155,13 @@ class Description(Filter):
Join(u'- %s\n', "%s/ul/li" % section))(el[0])
-class Resume(Filter):
- def filter(self, el):
- _resume = el[0].xpath("p[@data-rel='full-resume']")
- if not _resume:
- _resume = el[0].xpath("p[@data-rel='small-resume']")
- if _resume:
- resume = html2text(CleanText(_resume[0])(self))[6:]
- return resume
-
-
class EventPage(HTMLPage):
@method
class get_event(ItemElement):
klass = SensCritiquenCalendarEvent
- def parse(self, el):
- event = self.obj
- event.url = self.page.url
- resume = Resume('//section[@class="pvi-productDetails"]')(self)
- if not resume:
- resume = self.obj._resume
- description = Description('.')(self)
- event.description = u'%s%s' % (description, resume)
- return event
+ obj_url = BrowserURL('event_page', _id=Env('_id'))
+ obj_description = Description('.')
class JsonResumePage(JsonPage):
diff --git a/modules/senscritique/test.py b/modules/senscritique/test.py
index 19b4aa4e..7d374264 100644
--- a/modules/senscritique/test.py
+++ b/modules/senscritique/test.py
@@ -18,7 +18,7 @@
# along with weboob. If not, see .
-from weboob.tools.test import BackendTest, SkipTest
+from weboob.tools.test import BackendTest
from datetime import datetime
@@ -26,10 +26,7 @@ class SenscritiqueTest(BackendTest):
MODULE = 'senscritique'
def test_senscritique(self):
- try:
- l = list(self.backend.list_events(datetime.now()))
- assert len(l)
- event = self.backend.get_event(l[0].id)
- self.assertTrue(event.url, 'URL for event "%s" not found: %s' % (event.id, event.url))
- except StopIteration:
- raise SkipTest("Max iteration reach")
+ l = list(self.backend.list_events(datetime.now()))
+ assert len(l)
+ event = self.backend.get_event(l[0].id)
+ self.assertTrue(event.url, 'URL for event "%s" not found: %s' % (event.id, event.url))