From 6d6542f474e669718debf6c6cbbafa1e3ed3a217 Mon Sep 17 00:00:00 2001 From: Romain Bignon Date: Sun, 1 May 2011 21:07:17 +0200 Subject: [PATCH] remove downparadise --- weboob/backends/downparadise/__init__.py | 22 ----- weboob/backends/downparadise/backend.py | 96 ------------------- weboob/backends/downparadise/browser.py | 64 ------------- .../backends/downparadise/pages/__init__.py | 23 ----- weboob/backends/downparadise/pages/base.py | 33 ------- weboob/backends/downparadise/pages/index.py | 59 ------------ weboob/backends/downparadise/pages/ucp.py | 27 ------ .../backends/downparadise/pages/viewforum.py | 45 --------- 8 files changed, 369 deletions(-) delete mode 100644 weboob/backends/downparadise/__init__.py delete mode 100644 weboob/backends/downparadise/backend.py delete mode 100644 weboob/backends/downparadise/browser.py delete mode 100644 weboob/backends/downparadise/pages/__init__.py delete mode 100644 weboob/backends/downparadise/pages/base.py delete mode 100644 weboob/backends/downparadise/pages/index.py delete mode 100644 weboob/backends/downparadise/pages/ucp.py delete mode 100644 weboob/backends/downparadise/pages/viewforum.py diff --git a/weboob/backends/downparadise/__init__.py b/weboob/backends/downparadise/__init__.py deleted file mode 100644 index c2e6b97d..00000000 --- a/weboob/backends/downparadise/__init__.py +++ /dev/null @@ -1,22 +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 .backend import DownparadiseBackend - -__all__ = ['DownparadiseBackend'] diff --git a/weboob/backends/downparadise/backend.py b/weboob/backends/downparadise/backend.py deleted file mode 100644 index 9c3f863f..00000000 --- a/weboob/backends/downparadise/backend.py +++ /dev/null @@ -1,96 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Nicolas Duhamel -# -# 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.backend import BaseBackend -from weboob.tools.value import Value, ValueBool, ValuesDict - -from weboob.capabilities.messages import ICapMessages, ICapMessagesPost, Message, Thread, CantSendMessage -from weboob.capabilities.collection import ICapCollection - -from .browser import Downparadise - -class DownparadiseBackend(BaseBackend, ICapCollection, ICapMessages, ICapMessagesPost): - NAME = 'downparadise' - MAINTAINER = 'Nicolas Duhamel' - EMAIL = 'nicolas@jombi.fr' - VERSION = '0.8' - LICENSE = 'AGPLv3+' - DESCRIPTION = "Downparadise message board" - - CONFIG = ValuesDict(Value('username', label='Username', regexp='.+'), - Value('password', label='Password', regexp='.+', masked=True)) - - BROWSER = Downparadise - - def create_default_browser(self): - return self.create_browser(self.config['username'], self.config['password']) - - ############################# - ## Collection - - def iter_resources(self, splited_path): - return self.browser.iter_forums(splited_path) - - ############################# - ## Messages - - def iter_threads(self): - """ - Iterates on threads, from newers to olders. - - @return [iter] Thread objects - """ - raise NotImplementedError() - - def get_thread(self, id): - """ - Get a specific thread. - - @return [Thread] the Thread object - """ - raise NotImplementedError() - - def iter_unread_messages(self, thread=None): - """ - Iterates on messages which hasn't been marked as read. - - @param thread thread name (optional) - @return [iter] Message objects - """ - raise NotImplementedError() - - def set_message_read(self, message): - """ - Set a message as read. - - @param [message] message read (or ID) - """ - raise NotImplementedError() - - ############################# - ## Message Post - - def post_message(self, message): - """ - Post a message. - - @param message Message object - @return - """ - raise NotImplementedError() diff --git a/weboob/backends/downparadise/browser.py b/weboob/backends/downparadise/browser.py deleted file mode 100644 index b26c6428..00000000 --- a/weboob/backends/downparadise/browser.py +++ /dev/null @@ -1,64 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Nicolas Duhamel -# -# 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 . -import urllib - -from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword -from weboob.capabilities.collection import Collection, CollectionNotFound - -from .pages import IndexPage, UcpPage, ViewforumPage - - -class Downparadise(BaseBrowser): - DOMAIN = 'forum.downparadise.ws' - PROTOCOL = 'http' - PAGES = {'http://forum.downparadise.ws/index.php' : IndexPage, - 'http://forum.downparadise.ws/ucp.php.*' : UcpPage, - 'http://forum.downparadise.ws/viewforum.php.*' : ViewforumPage, - } - - def home(self): - return self.location('http://forum.downparadise.ws/index.php') - - def login(self): - data = {'login': 'Connexion', - 'password': self.password, - 'username': self.username} - self.location('http://forum.downparadise.ws/ucp.php?mode=login', urllib.urlencode(data) , no_login=True) - if not self.is_logged(): - raise BrowserIncorrectPassword() - - def is_logged(self): - return (self.page and self.page.is_logged()) - - def iter_forums(self, splited_path): - if not self.is_on_page(IndexPage): - self.home() - - collections = self.page.get_collections() - - def walk_res(path, collections): - if len(path) == 0 or not isinstance(collections, (list, Collection)): - return collections - i = path[0] - if i not in [collection.title for collection in collections]: - raise CollectionNotFound() - - return walk_res(path[1:], [collection.children for collection in collections if collection.title == i][0]) - - return walk_res(splited_path, collections) diff --git a/weboob/backends/downparadise/pages/__init__.py b/weboob/backends/downparadise/pages/__init__.py deleted file mode 100644 index 977e6255..00000000 --- a/weboob/backends/downparadise/pages/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Nicolas Duhamel -# -# 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 .index import IndexPage -from .ucp import UcpPage -from .viewforum import ViewforumPage - -__all__ = ['IndexPage', 'UcpPage', 'ViewforumPage'] diff --git a/weboob/backends/downparadise/pages/base.py b/weboob/backends/downparadise/pages/base.py deleted file mode 100644 index c11cef56..00000000 --- a/weboob/backends/downparadise/pages/base.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Nicolas Duhamel -# -# 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 . -import re - -from weboob.tools.browser import BasePage - -__all__ = ['DownparadisePage'] - -class DownparadisePage(BasePage): - def is_logged(self): - - for form in self.document.getiterator('form'): - act = form.attrib.get('action', None) - if './ucp.php?mode=login' in act: - return False - - return True diff --git a/weboob/backends/downparadise/pages/index.py b/weboob/backends/downparadise/pages/index.py deleted file mode 100644 index 8235a38a..00000000 --- a/weboob/backends/downparadise/pages/index.py +++ /dev/null @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Nicolas Duhamel -# -# 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 -from .base import DownparadisePage - -from weboob.capabilities.collection import Collection - -__all__ = ['IndexPage'] - -class IndexPage(DownparadisePage): - - def on_loaded(self): - self.collections = [] - self.parse_forums() - - def parse_forums(self): - """ Parse all forums """ - - def do(id): - self.browser.location(id) - return self.browser.page.iter_threads() - - maintable = self.document.xpath("//div[@id='wrapheader']/table")[3] - - for line in maintable.xpath("./tr"): - forums = line.xpath(".//a[@class='forumlink']") - for fo in forums: - coll = Collection() - coll.title = fo.text.strip().encode('latin-1') - coll.id = fo.get("href") - for link in line.getiterator('a'): - if "subforum" in link.attrib.get('class', ""): - sub = Collection(title=link.text.strip().encode('latin-1')) - sub.id = link.get("href") - sub.children = do - coll.appendchild(sub) - if not coll.children: - coll.children = do - self.collections.append(coll) - - def get_collections(self): - return self.collections diff --git a/weboob/backends/downparadise/pages/ucp.py b/weboob/backends/downparadise/pages/ucp.py deleted file mode 100644 index ac404a84..00000000 --- a/weboob/backends/downparadise/pages/ucp.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Nicolas Duhamel -# -# 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 -from .base import DownparadisePage -__all__ = ['UcpPage'] - -class UcpPage(DownparadisePage): - - def on_loaded(self): - pass diff --git a/weboob/backends/downparadise/pages/viewforum.py b/weboob/backends/downparadise/pages/viewforum.py deleted file mode 100644 index f02fd7bf..00000000 --- a/weboob/backends/downparadise/pages/viewforum.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright(C) 2010-2011 Nicolas Duhamel -# -# 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 . -import re - -from weboob.tools.browser import BasePage -from .base import DownparadisePage - -from weboob.capabilities.collection import Collection - -from weboob.capabilities.messages import Thread - -__all__ = ['ViewforumPage'] - -def remove_html_tags(data): - p = re.compile(r'<.*?>') - return p.sub('', data) - -class ViewforumPage(DownparadisePage): - - def on_loaded(self): - pass - - def iter_threads(self): - maintable = self.document.xpath("//div[@id='pagecontent']/table")[1] - iter_lignes = maintable.xpath(".//a[@class='topictitle']") - for i in iter_lignes: - thread = Thread(i.get("href")) - thread.title = remove_html_tags(self.parser.tostring(i)).strip().encode('raw_unicode_escape').decode('utf-8') - yield thread