diff --git a/weboob/backends/franceinter/backend.py b/weboob/backends/franceinter/backend.py index 13d1ed4e..88509237 100644 --- a/weboob/backends/franceinter/backend.py +++ b/weboob/backends/franceinter/backend.py @@ -21,12 +21,30 @@ from weboob.capabilities.radio import ICapRadio, Radio, Stream, Emission from weboob.capabilities.collection import ICapCollection, CollectionNotFound from weboob.tools.backend import BaseBackend -from .browser import FranceInterBrowser +from weboob.tools.browser import BaseBrowser, BasePage __all__ = ['FranceInterBackend'] +class XMLinfos(BasePage): + def get_current(self): + emissions = self.parser.select(self.document.getroot(), 'item') + if len(emissions) == 0: + return 'No emission' + return emissions[0].find('titreemission').text + +class FranceInterBrowser(BaseBrowser): + DOMAIN = u'metadatas.tv-radio.com' + ENCODING = 'iso-8859-1' + PAGES = {r'.*metadatas/franceinterRSS\.xml': XMLinfos} + + def get_current(self, radio): + self.location('/metadatas/franceinterRSS.xml') + assert self.is_on_page(XMLinfos) + + return self.page.get_current() + class FranceInterBackend(BaseBackend, ICapRadio, ICapCollection): NAME = 'franceinter' MAINTAINER = 'Johann Broudin' diff --git a/weboob/backends/franceinter/browser.py b/weboob/backends/franceinter/browser.py deleted file mode 100644 index 4bfd275e..00000000 --- a/weboob/backends/franceinter/browser.py +++ /dev/null @@ -1,38 +0,0 @@ -# * -*- coding: utf-8 -*- - -# Copyright(C) 2011 Johann Broudin -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from weboob.tools.browser import BaseBrowser - -from .pages import XMLinfos - - -__all__ = ['FranceInterBrowser'] - - -class FranceInterBrowser(BaseBrowser): - DOMAIN = u'metadatas.tv-radio.com' - ENCODING = 'iso-8859-1' - PAGES = {r'.*metadatas/franceinterRSS\.xml': XMLinfos} - - def get_current(self, radio): - self.location('/metadatas/franceinterRSS.xml') - assert self.is_on_page(XMLinfos) - - return self.page.get_current() diff --git a/weboob/backends/franceinter/pages.py b/weboob/backends/franceinter/pages.py deleted file mode 100644 index 0f690078..00000000 --- a/weboob/backends/franceinter/pages.py +++ /dev/null @@ -1,33 +0,0 @@ -# * -*- coding: utf-8 -*- - -# Copyright(C) 2011 Johann Broudin -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from weboob.tools.browser import BasePage - - - -__all__ = ['XMLinfos'] - - -class XMLinfos(BasePage): - def get_current(self): - emissions = self.parser.select(self.document.getroot(), 'item') - if len(emissions) == 0: - return 'No emission' - return emissions[0].find('titreemission').text diff --git a/weboob/backends/lemouv/backend.py b/weboob/backends/lemouv/backend.py index 475f8c8a..cf5e712f 100644 --- a/weboob/backends/lemouv/backend.py +++ b/weboob/backends/lemouv/backend.py @@ -21,20 +21,42 @@ from weboob.capabilities.radio import ICapRadio, Radio, Stream, Emission from weboob.capabilities.collection import ICapCollection, CollectionNotFound from weboob.tools.backend import BaseBackend -from .browser import lemouvBrowser +from weboob.tools.browser import BaseBrowser, BasePage -__all__ = ['lemouvBackend'] +__all__ = ['LeMouvBackend'] -class lemouvBackend(BaseBackend, ICapRadio, ICapCollection): +class XMLinfos(BasePage): + def get_current(self): + try: + for channel in self.parser.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() + +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() + +class LeMouvBackend(BaseBackend, ICapRadio, ICapCollection): NAME = 'lemouv' MAINTAINER = 'Johann Broudin' EMAIL = 'johann.broudin@6-8.fr' VERSION = '0.9' DESCRIPTION = u'The le mouv\' french radio' LICENCE = 'AGPLv3+' - BROWSER = lemouvBrowser + BROWSER = LeMouvBrowser _RADIOS = {'lemouv': (u'le mouv\'', u'le mouv', u'http://mp3.live.tv-radio.com/lemouv/all/lemouvhautdebit.mp3')} diff --git a/weboob/backends/lemouv/browser.py b/weboob/backends/lemouv/browser.py deleted file mode 100644 index 7568ba82..00000000 --- a/weboob/backends/lemouv/browser.py +++ /dev/null @@ -1,37 +0,0 @@ -# * -*- coding: utf-8 -*- - -# Copyright(C) 2011 Johann Broudin -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -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 deleted file mode 100644 index 38d303d8..00000000 --- a/weboob/backends/lemouv/pages.py +++ /dev/null @@ -1,38 +0,0 @@ -# * -*- coding: utf-8 -*- - -# Copyright(C) 2011 Johann Broudin -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from weboob.tools.browser import BasePage - - - -__all__ = ['XMLinfos'] - - -class XMLinfos(BasePage): - def get_current(self): - try: - for channel in self.parser.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() diff --git a/weboob/backends/ouifm/backend.py b/weboob/backends/ouifm/backend.py index 2c6f4f69..d6c3b5d3 100644 --- a/weboob/backends/ouifm/backend.py +++ b/weboob/backends/ouifm/backend.py @@ -21,13 +21,33 @@ from weboob.capabilities.radio import ICapRadio, Radio, Stream, Emission from weboob.capabilities.collection import ICapCollection, CollectionNotFound from weboob.tools.backend import BaseBackend - -from .browser import OuiFMBrowser +from weboob.tools.browser import BaseBrowser, BasePage __all__ = ['OuiFMBackend'] +class PlayerPage(BasePage): + def get_current(self): + title = self.parser.select(self.document.getroot(), 'span.titre_en_cours', 1).text + artist = self.parser.select(self.document.getroot(), 'span.artiste_en_cours', 1).text + return unicode(artist).strip(), unicode(title).strip() + +class OuiFMBrowser(BaseBrowser): + DOMAIN = u'www.ouifm.fr' + PAGES = {r'.*ouifm.fr/player/decode_json.*.php': PlayerPage, + } + + def get_current(self, radio): + if radio == 'general': + _radio = '' + else: + _radio = '_%s' % radio + self.location('/player/decode_json%s.php' % _radio) + assert self.is_on_page(PlayerPage) + + return self.page.get_current() + class OuiFMBackend(BaseBackend, ICapRadio, ICapCollection): NAME = 'ouifm' MAINTAINER = 'Romain Bignon' diff --git a/weboob/backends/ouifm/browser.py b/weboob/backends/ouifm/browser.py deleted file mode 100644 index 63ca3a2b..00000000 --- a/weboob/backends/ouifm/browser.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Romain Bignon -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from weboob.tools.browser import BaseBrowser - -from .pages import PlayerPage - - -__all__ = ['OuiFMBrowser'] - - -class OuiFMBrowser(BaseBrowser): - DOMAIN = u'www.ouifm.fr' - PAGES = {r'.*ouifm.fr/player/decode_json.*.php': PlayerPage, - } - - def get_current(self, radio): - if radio == 'general': - _radio = '' - else: - _radio = '_%s' % radio - self.location('/player/decode_json%s.php' % _radio) - assert self.is_on_page(PlayerPage) - - return self.page.get_current() diff --git a/weboob/backends/ouifm/pages.py b/weboob/backends/ouifm/pages.py deleted file mode 100644 index 67baebdc..00000000 --- a/weboob/backends/ouifm/pages.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Romain Bignon -# -# This file is part of weboob. -# -# weboob is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# weboob 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 Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with weboob. If not, see . - - -from weboob.tools.browser import BasePage - - - -__all__ = ['PlayerPage'] - - -class PlayerPage(BasePage): - def get_current(self): - title = self.parser.select(self.document.getroot(), 'span.titre_en_cours', 1).text - artist = self.parser.select(self.document.getroot(), 'span.artiste_en_cours', 1).text - return unicode(artist).strip(), unicode(title).strip()