From 5578618b062607cbf798b4f109ba94111c1db785 Mon Sep 17 00:00:00 2001 From: Laurent Bachelier Date: Sat, 10 Mar 2012 23:40:16 +0100 Subject: [PATCH] Friendlier paths in canalplus Lowercase, replace some separators. This shows the point of having a path and a title! Also try to fix the title if it is all uppercase. --- modules/canalplus/pages.py | 16 ++++++++++++---- modules/canalplus/test.py | 4 ++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/canalplus/pages.py b/modules/canalplus/pages.py index 633abb0c..dfe32236 100644 --- a/modules/canalplus/pages.py +++ b/modules/canalplus/pages.py @@ -18,6 +18,7 @@ # along with weboob. If not, see . from datetime import datetime +import re from weboob.tools.browser import BasePage from weboob.capabilities.collection import Collection @@ -38,16 +39,23 @@ class ChannelsPage(BasePage): for elem in self.document[2].getchildren(): for e in elem.getchildren(): if e.tag == "NOM": - name = unicode(e.text.strip()) - channels.append(Collection([name])) + fid, name = self._clean_name(e.text) + channels.append(Collection([fid], name)) elif e.tag == "SELECTIONS": for select in e: - subname = unicode(select[1].text.strip()) - sub = Collection([name, subname]) + sub_fid, subname = self._clean_name(select[1].text) + sub = Collection([fid, sub_fid], subname) sub._link_id = select[0].text channels.append(sub) return channels + def _clean_name(self, name): + name = unicode(name.strip()) + if name == name.upper(): + name = name.capitalize() + friendly_id = re.sub(ur"['/_ \(\)\-\+]+", u'-', name).strip(u'-').lower() + return friendly_id, name + class VideoPage(BasePage): def parse_video(self, el, video=None, quality=None): diff --git a/modules/canalplus/test.py b/modules/canalplus/test.py index 69b80356..d438eb47 100644 --- a/modules/canalplus/test.py +++ b/modules/canalplus/test.py @@ -25,7 +25,7 @@ class CanalPlusTest(BackendTest): BACKEND = 'canalplus' def test_canalplus(self): - l = list(self.backend.search_videos('guignol')) + l = list(self.backend.search_videos(u'guignol')) self.assertTrue(len(l) > 0) v = l[0] self.backend.fillobj(v, ('url',)) @@ -35,5 +35,5 @@ class CanalPlusTest(BackendTest): l = list(self.backend.iter_resources((BaseVideo, ), [])) self.assertTrue(len(l) > 0) - l = list(self.backend.iter_resources((BaseVideo, ), ['SPORT'])) + l = list(self.backend.iter_resources((BaseVideo, ), [u'sport'])) self.assertTrue(len(l) > 0)