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