[weboob] [PATCH 2/2] ajout du backend lemouv

Johann Broudin johann.broudin at 6-8.fr
Sun Apr 3 21:55:32 CEST 2011


---
 weboob/backends/lemouv/__init__.py |   22 ++++++++++
 weboob/backends/lemouv/backend.py  |   77 ++++++++++++++++++++++++++++++++++++
 weboob/backends/lemouv/browser.py  |   35 ++++++++++++++++
 weboob/backends/lemouv/pages.py    |   36 +++++++++++++++++
 4 files changed, 170 insertions(+), 0 deletions(-)
 create mode 100644 weboob/backends/lemouv/__init__.py
 create mode 100644 weboob/backends/lemouv/backend.py
 create mode 100644 weboob/backends/lemouv/browser.py
 create mode 100644 weboob/backends/lemouv/pages.py

diff --git a/weboob/backends/lemouv/__init__.py b/weboob/backends/lemouv/__init__.py
new file mode 100644
index 0000000..7435acd
--- /dev/null
+++ b/weboob/backends/lemouv/__init__.py
@@ -0,0 +1,22 @@
+# * -*- coding: utf-8 -*-
+
+# Copyright(C) 2011  Johann Broudin
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, version 3 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+from .backend import lemouvBackend
+
+
+__all__ = ['lemouvBackend']
diff --git a/weboob/backends/lemouv/backend.py b/weboob/backends/lemouv/backend.py
new file mode 100644
index 0000000..41a5829
--- /dev/null
+++ b/weboob/backends/lemouv/backend.py
@@ -0,0 +1,77 @@
+# * -*- coding: utf-8 -*-
+
+# Copyright(C) 2011  Johann Broudin
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, version 3 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+from weboob.capabilities.radio import ICapRadio, Radio, Stream, Emission
+from weboob.tools.backend import BaseBackend
+from .browser import lemouvBrowser
+
+
+__all__ = ['lemouvBackend']
+
+
+class lemouvBackend(BaseBackend, ICapRadio):
+    NAME = 'lemouv'
+    MAINTAINER = 'Johann Broudin'
+    EMAIL = 'johann.broudin at 6-8.fr'
+    VERSION = '1'
+    DESCRIPTION = u'The le mouv\' french radio'
+    LICENCE = 'GPLv3'
+    BROWSER = lemouvBrowser
+
+    _RADIOS = {'le mouv': (u'le mouv\'', u'le mouv', u'http://mp3.live.tv-radio.com/lemouv/all/lemouvhautdebit.mp3')}
+
+    def iter_radios(self):
+        for id in self._RADIOS.iterkeys():
+            yield self.get_radio(id)
+
+    def iter_radios_search(self, pattern):
+        for radio in self.iter_radios():
+            if pattern in radio.title or pattern in radio.description:
+                yield radio
+
+    def get_radio(self, radio):
+        if not isinstance(radio, Radio):
+            radio = Radio(radio)
+
+        if not radio.id in self._RADIOS:
+            return none
+
+        title, description, url = self._RADIOS[radio.id]
+        radio.title = title
+        radio.description = description
+
+        artist, title = self.browser.get_current(radio.id)
+        current = Emission(0)
+        current.artist = artist
+        current.title = title
+        radio.current = current
+
+        stream = Stream(0)
+        stream.title = u'128kbits/s'
+        stream.url = url
+        radio.streams = [stream]
+        return radio
+
+    def fill_radio(self, radio, fields):
+        if 'current' in fields:
+            if not radio.current:
+                radio.current = Emission(0)
+            radio.current.artist, radio.current.title = self.browser.get_current(radio.id)
+        return radio
+
+    OBJECTS = {Radio: fill_radio}
diff --git a/weboob/backends/lemouv/browser.py b/weboob/backends/lemouv/browser.py
new file mode 100644
index 0000000..483d390
--- /dev/null
+++ b/weboob/backends/lemouv/browser.py
@@ -0,0 +1,35 @@
+# * -*- coding: utf-8 -*-
+
+# Copyright(C) 2011  Johann Broudin
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, version 3 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+from weboob.tools.browser import BaseBrowser
+
+from .pages import XMLinfos
+
+
+__all__ = ['lemouvBrowser']
+
+
+class lemouvBrowser(BaseBrowser):
+    DOMAIN = u'statique.lemouv.fr'
+    PAGES  = {r'.*/files/rfPlayer/mouvRSS\.xml': XMLinfos}
+
+    def get_current(self, radio):
+        self.location('/files/rfPlayer/mouvRSS.xml')
+        assert self.is_on_page(XMLinfos)
+
+        return self.page.get_current()
diff --git a/weboob/backends/lemouv/pages.py b/weboob/backends/lemouv/pages.py
new file mode 100644
index 0000000..e3de544
--- /dev/null
+++ b/weboob/backends/lemouv/pages.py
@@ -0,0 +1,36 @@
+# * -*- coding: utf-8 -*-
+
+# Copyright(C) 2011  Johann Broudin
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, version 3 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+from weboob.tools.browser import BasePage
+from weboob.tools.parsers.lxmlparser import select
+
+
+__all__ = ['XMLinfos']
+
+
+class XMLinfos(BasePage):
+    def get_current(self):
+        try:
+            for channel in select(self.document.getroot(), 'channel'):
+                title = channel.find('item/song_title').text
+                artist = channel.find('item/artist_name').text
+        except AttributeError:
+            title = "Not defined"
+            artist = "Not defined"
+
+        return unicode(artist).strip(), unicode(title).strip()
-- 
1.7.2.5



More information about the weboob mailing list