From eca20b701c411046e7ededb0462b310124ce3c18 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@users.noreply.github.com>
Date: Mon, 13 Apr 2015 10:21:32 +0200
Subject: Cleanup + fixup + new lib

---
 module/plugins/hooks/AlldebridComHook.py     |  27 --
 module/plugins/hooks/DebridItaliaComHook.py  |  26 --
 module/plugins/hooks/EasybytezComHook.py     |  30 --
 module/plugins/hooks/FastixRuHook.py         |  29 --
 module/plugins/hooks/FreeWayMeHook.py        |  32 --
 module/plugins/hooks/LinkdecrypterComHook.py |  26 --
 module/plugins/hooks/LinksnappyComHook.py    |  27 --
 module/plugins/hooks/MegaDebridEuHook.py     |  33 --
 module/plugins/hooks/MegaRapidoNetHook.py    |  81 -----
 module/plugins/hooks/MultihostersComHook.py  |  18 -
 module/plugins/hooks/MultishareCzHook.py     |  29 --
 module/plugins/hooks/MyfastfileComHook.py    |  28 --
 module/plugins/hooks/NoPremiumPlHook.py      |  29 --
 module/plugins/hooks/OverLoadMeHook.py       |  29 --
 module/plugins/hooks/PremiumToHook.py        |  27 --
 module/plugins/hooks/PremiumizeMeHook.py     |  38 --
 module/plugins/hooks/PutdriveComHook.py      |  18 -
 module/plugins/hooks/RPNetBizHook.py         |  36 --
 module/plugins/hooks/RapideoPlHook.py        |  29 --
 module/plugins/hooks/RealdebridComHook.py    |  27 --
 module/plugins/hooks/RehostToHook.py         |  27 --
 module/plugins/hooks/SimplyPremiumComHook.py |  29 --
 module/plugins/hooks/SimplydebridComHook.py  |  24 --
 module/plugins/hooks/SmoozedComHook.py       |  24 --
 module/plugins/hooks/UnrestrictLiHook.py     |  28 --
 module/plugins/hooks/UserAgentSwitcher.py    |  47 ---
 module/plugins/hooks/ZeveraComHook.py        |  25 --
 module/plugins/hoster/LolabitsEs.py          |  48 ---
 module/plugins/hoster/SolidfilesCom.py       |  33 --
 module/plugins/hoster/YadiSk.py              |  84 -----
 module/plugins/internal/CaptchaService.py    | 517 ---------------------------
 31 files changed, 1505 deletions(-)
 delete mode 100644 module/plugins/hooks/AlldebridComHook.py
 delete mode 100644 module/plugins/hooks/DebridItaliaComHook.py
 delete mode 100644 module/plugins/hooks/EasybytezComHook.py
 delete mode 100644 module/plugins/hooks/FastixRuHook.py
 delete mode 100644 module/plugins/hooks/FreeWayMeHook.py
 delete mode 100644 module/plugins/hooks/LinkdecrypterComHook.py
 delete mode 100644 module/plugins/hooks/LinksnappyComHook.py
 delete mode 100644 module/plugins/hooks/MegaDebridEuHook.py
 delete mode 100644 module/plugins/hooks/MegaRapidoNetHook.py
 delete mode 100644 module/plugins/hooks/MultihostersComHook.py
 delete mode 100644 module/plugins/hooks/MultishareCzHook.py
 delete mode 100644 module/plugins/hooks/MyfastfileComHook.py
 delete mode 100644 module/plugins/hooks/NoPremiumPlHook.py
 delete mode 100644 module/plugins/hooks/OverLoadMeHook.py
 delete mode 100644 module/plugins/hooks/PremiumToHook.py
 delete mode 100644 module/plugins/hooks/PremiumizeMeHook.py
 delete mode 100644 module/plugins/hooks/PutdriveComHook.py
 delete mode 100644 module/plugins/hooks/RPNetBizHook.py
 delete mode 100644 module/plugins/hooks/RapideoPlHook.py
 delete mode 100644 module/plugins/hooks/RealdebridComHook.py
 delete mode 100644 module/plugins/hooks/RehostToHook.py
 delete mode 100644 module/plugins/hooks/SimplyPremiumComHook.py
 delete mode 100644 module/plugins/hooks/SimplydebridComHook.py
 delete mode 100644 module/plugins/hooks/SmoozedComHook.py
 delete mode 100644 module/plugins/hooks/UnrestrictLiHook.py
 delete mode 100644 module/plugins/hooks/UserAgentSwitcher.py
 delete mode 100644 module/plugins/hooks/ZeveraComHook.py
 delete mode 100644 module/plugins/hoster/LolabitsEs.py
 delete mode 100644 module/plugins/hoster/SolidfilesCom.py
 delete mode 100644 module/plugins/hoster/YadiSk.py
 delete mode 100644 module/plugins/internal/CaptchaService.py

(limited to 'module/plugins')

diff --git a/module/plugins/hooks/AlldebridComHook.py b/module/plugins/hooks/AlldebridComHook.py
deleted file mode 100644
index 367181aa4..000000000
--- a/module/plugins/hooks/AlldebridComHook.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class AlldebridComHook(MultiHook):
-    __name__    = "AlldebridComHook"
-    __type__    = "hook"
-    __version__ = "0.16"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   ),
-                  ("ssl"           , "bool"               , "Use HTTPS"                           , True )]
-
-    __description__ = """Alldebrid.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("Andy Voigt", "spamsales@online.de")]
-
-
-    def getHosters(self):
-        https = "https" if self.getConfig('ssl') else "http"
-        html = self.getURL(https + "://www.alldebrid.com/api.php", get={'action': "get_host"}).replace("\"", "").strip()
-
-        return [x.strip() for x in html.split(",") if x.strip()]
diff --git a/module/plugins/hooks/DebridItaliaComHook.py b/module/plugins/hooks/DebridItaliaComHook.py
deleted file mode 100644
index c1452b520..000000000
--- a/module/plugins/hooks/DebridItaliaComHook.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class DebridItaliaComHook(MultiHook):
-    __name__    = "DebridItaliaComHook"
-    __type__    = "hook"
-    __version__ = "0.12"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Debriditalia.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("stickell"      , "l.stickell@yahoo.it"),
-                       ("Walter Purcaro", "vuolter@gmail.com"  )]
-
-
-    def getHosters(self):
-        return self.getURL("http://debriditalia.com/api.php", get={'hosts': ""}).replace('"', '').split(',')
diff --git a/module/plugins/hooks/EasybytezComHook.py b/module/plugins/hooks/EasybytezComHook.py
deleted file mode 100644
index 2f4ed72a8..000000000
--- a/module/plugins/hooks/EasybytezComHook.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class EasybytezComHook(MultiHook):
-    __name__    = "EasybytezComHook"
-    __type__    = "hook"
-    __version__ = "0.07"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """EasyBytez.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
-
-
-    def getHosters(self):
-        user, data = self.account.selectAccount()
-
-        req  = self.account.getAccountRequest(user)
-        html = req.load("http://www.easybytez.com")
-
-        return re.search(r'</textarea>\s*Supported sites:(.*)', html).group(1).split(',')
diff --git a/module/plugins/hooks/FastixRuHook.py b/module/plugins/hooks/FastixRuHook.py
deleted file mode 100644
index 4e03e887b..000000000
--- a/module/plugins/hooks/FastixRuHook.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.utils import json_loads
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class FastixRuHook(MultiHook):
-    __name__    = "FastixRuHook"
-    __type__    = "hook"
-    __version__ = "0.05"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Fastix.ru hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("Massimo Rosamilia", "max@spiritix.eu")]
-
-
-    def getHosters(self):
-        html = self.getURL("http://fastix.ru/api_v2",
-                      get={'apikey': "5182964c3f8f9a7f0b00000a_kelmFB4n1IrnCDYuIFn2y",
-                           'sub'   : "allowed_sources"})
-        host_list = json_loads(html)
-        host_list = host_list['allow']
-        return host_list
diff --git a/module/plugins/hooks/FreeWayMeHook.py b/module/plugins/hooks/FreeWayMeHook.py
deleted file mode 100644
index c498725f5..000000000
--- a/module/plugins/hooks/FreeWayMeHook.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class FreeWayMeHook(MultiHook):
-    __name__    = "FreeWayMeHook"
-    __type__    = "hook"
-    __version__ = "0.15"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """FreeWay.me hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("Nicolas Giese", "james@free-way.me")]
-
-
-    def getHosters(self):
-        # Get account data
-        if not self.account or not self.account.canUse():
-           hostis = self.getURL("https://www.free-way.me/ajax/jd.php", get={"id": 3}).replace("\"", "").strip()
-        else:
-           self.logDebug("AccountInfo available - Get HosterList with User Pass")
-           (user, data) = self.account.selectAccount()
-           hostis = self.getURL("https://www.free-way.me/ajax/jd.php", get={"id": 3, "user": user, "pass": data['password']}).replace("\"", "").strip()
-
-        self.logDebug("hosters: %s" % hostis)
-        return [x.strip() for x in hostis.split(",") if x.strip()]
diff --git a/module/plugins/hooks/LinkdecrypterComHook.py b/module/plugins/hooks/LinkdecrypterComHook.py
deleted file mode 100644
index d8c0018c9..000000000
--- a/module/plugins/hooks/LinkdecrypterComHook.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class LinkdecrypterComHook(MultiHook):
-    __name__    = "LinkdecrypterComHook"
-    __type__    = "hook"
-    __version__ = "1.04"
-
-    __config__ = [("activated"     , "bool"               , "Activated"                    , True ),
-                  ("pluginmode"    , "all;listed;unlisted", "Use for plugins"              , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)", ""   ),
-                  ("reload"        , "bool"               , "Reload plugin list"           , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"     , 12   )]
-
-    __description__ = """Linkdecrypter.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
-
-
-    def getCrypters(self):
-        return re.search(r'>Supported\(\d+\)</b>: <i>(.[\w.\-, ]+)',
-                         self.getURL("http://linkdecrypter.com/", decode=True).replace("(g)", "")).group(1).split(', ')
diff --git a/module/plugins/hooks/LinksnappyComHook.py b/module/plugins/hooks/LinksnappyComHook.py
deleted file mode 100644
index 22b958b31..000000000
--- a/module/plugins/hooks/LinksnappyComHook.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.utils import json_loads
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class LinksnappyComHook(MultiHook):
-    __name__    = "LinksnappyComHook"
-    __type__    = "hook"
-    __version__ = "0.04"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Linksnappy.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("stickell", "l.stickell@yahoo.it")]
-
-
-    def getHosters(self):
-        json_data = self.getURL("http://gen.linksnappy.com/lseAPI.php", get={'act': "FILEHOSTS"})
-        json_data = json_loads(json_data)
-
-        return json_data['return'].keys()
diff --git a/module/plugins/hooks/MegaDebridEuHook.py b/module/plugins/hooks/MegaDebridEuHook.py
deleted file mode 100644
index 1d086b9d1..000000000
--- a/module/plugins/hooks/MegaDebridEuHook.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.utils import json_loads
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class MegaDebridEuHook(MultiHook):
-    __name__    = "MegaDebridEuHook"
-    __type__    = "hook"
-    __version__ = "0.05"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Mega-debrid.eu hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("D.Ducatel", "dducatel@je-geek.fr")]
-
-
-    def getHosters(self):
-        reponse   = self.getURL("http://www.mega-debrid.eu/api.php", get={'action': "getHosters"})
-        json_data = json_loads(reponse)
-
-        if json_data['response_code'] == "ok":
-            host_list = [element[0] for element in json_data['hosters']]
-        else:
-            self.logError(_("Unable to retrieve hoster list"))
-            host_list = list()
-
-        return host_list
diff --git a/module/plugins/hooks/MegaRapidoNetHook.py b/module/plugins/hooks/MegaRapidoNetHook.py
deleted file mode 100644
index 1fe8d4923..000000000
--- a/module/plugins/hooks/MegaRapidoNetHook.py
+++ /dev/null
@@ -1,81 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class MegaRapidoNetHook(MultiHook):
-    __name__    = "MegaRapidoNetHook"
-    __type__    = "hook"
-    __version__ = "0.02"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"              , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)", ""   ),
-                  ("reload"        , "bool"               , "Reload plugin list"           , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"     , 12   )]
-
-    __description__ = """MegaRapido.net hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("Kagenoshin", "kagenoshin@gmx.ch")]
-
-
-    def getHosters(self):
-        hosters = {'1fichier'    : [],#leave it there are so many possible addresses?
-                   '1st-files'   : ['1st-files.com'],
-                   '2shared'     : ['2shared.com'],
-                   '4shared'     : ['4shared.com', '4shared-china.com'],
-                   'asfile'      : ['http://asfile.com/'],
-                   'bitshare'    : ['bitshare.com'],
-                   'brupload'    : ['brupload.net'],
-                   'crocko'      : ['crocko.com','easy-share.com'],
-                   'dailymotion' : ['dailymotion.com'],
-                   'depfile'     : ['depfile.com'],
-                   'depositfiles': ['depositfiles.com', 'dfiles.eu'],
-                   'dizzcloud'   : ['dizzcloud.com'],
-                   'dl.dropbox'  : [],
-                   'extabit'     : ['extabit.com'],
-                   'extmatrix'   : ['extmatrix.com'],
-                   'facebook'    : [],
-                   'file4go'     : ['file4go.com'],
-                   'filecloud'   : ['filecloud.io','ifile.it','mihd.net'],
-                   'filefactory' : ['filefactory.com'],
-                   'fileom'      : ['fileom.com'],
-                   'fileparadox' : ['fileparadox.in'],
-                   'filepost'    : ['filepost.com', 'fp.io'],
-                   'filerio'     : ['filerio.in','filerio.com','filekeen.com'],
-                   'filesflash'  : ['filesflash.com'],
-                   'firedrive'   : ['firedrive.com', 'putlocker.com'],
-                   'flashx'      : [],
-                   'freakshare'  : ['freakshare.net', 'freakshare.com'],
-                   'gigasize'    : ['gigasize.com'],
-                   'hipfile'     : ['hipfile.com'],
-                   'junocloud'   : ['junocloud.me'],
-                   'letitbit'    : ['letitbit.net','shareflare.net'],
-                   'mediafire'   : ['mediafire.com'],
-                   'mega'        : ['mega.co.nz'],
-                   'megashares'  : ['megashares.com'],
-                   'metacafe'    : ['metacafe.com'],
-                   'netload'     : ['netload.in'],
-                   'oboom'       : ['oboom.com'],
-                   'rapidgator'  : ['rapidgator.net'],
-                   'rapidshare'  : ['rapidshare.com'],
-                   'rarefile'    : ['rarefile.net'],
-                   'ryushare'    : ['ryushare.com'],
-                   'sendspace'   : ['sendspace.com'],
-                   'turbobit'    : ['turbobit.net', 'unextfiles.com'],
-                   'uploadable'  : ['uploadable.ch'],
-                   'uploadbaz'   : ['uploadbaz.com'],
-                   'uploaded'    : ['uploaded.to', 'uploaded.net', 'ul.to'],
-                   'uploadhero'  : ['uploadhero.com'],
-                   'uploading'   : ['uploading.com'],
-                   'uptobox'     : ['uptobox.com'],
-                   'xvideos'     : ['xvideos.com'],
-                   'youtube'     : ['youtube.com']}
-
-        hoster_list = []
-
-        for item in hosters.itervalues():
-            hoster_list.extend(item)
-
-        return hoster_list
diff --git a/module/plugins/hooks/MultihostersComHook.py b/module/plugins/hooks/MultihostersComHook.py
deleted file mode 100644
index 7b92089a1..000000000
--- a/module/plugins/hooks/MultihostersComHook.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.hook.ZeveraCom import ZeveraCom
-
-
-class MultihostersCom(ZeveraCom):
-    __name__    = "MultihostersCom"
-    __type__    = "hook"
-    __version__ = "0.02"
-
-    __config__ = [("mode"        , "all;listed;unlisted", "Use for plugins (if supported)"               , "all"),
-                  ("pluginlist"  , "str"                , "Plugin list (comma separated)"                , ""   ),
-                  ("revertfailed", "bool"               , "Revert to standard download if download fails", False),
-                  ("interval"    , "int"                , "Reload interval in hours (0 to disable)"      , 12   )]
-
-    __description__ = """Multihosters.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("tjeh", "tjeh@gmx.net")]
diff --git a/module/plugins/hooks/MultishareCzHook.py b/module/plugins/hooks/MultishareCzHook.py
deleted file mode 100644
index 70cc8d7a9..000000000
--- a/module/plugins/hooks/MultishareCzHook.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class MultishareCzHook(MultiHook):
-    __name__    = "MultishareCzHook"
-    __type__    = "hook"
-    __version__ = "0.07"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """MultiShare.cz hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
-
-
-    HOSTER_PATTERN = r'<img class="logo-shareserveru"[^>]*?alt="(.+?)"></td>\s*<td class="stav">[^>]*?alt="OK"'
-
-
-    def getHosters(self):
-        html = self.getURL("http://www.multishare.cz/monitoring/")
-        return re.findall(self.HOSTER_PATTERN, html)
diff --git a/module/plugins/hooks/MyfastfileComHook.py b/module/plugins/hooks/MyfastfileComHook.py
deleted file mode 100644
index a9438f400..000000000
--- a/module/plugins/hooks/MyfastfileComHook.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.internal.MultiHook import MultiHook
-from pyload.utils import json_loads
-
-
-class MyfastfileComHook(MultiHook):
-    __name__    = "MyfastfileComHook"
-    __type__    = "hook"
-    __version__ = "0.05"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Myfastfile.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("stickell", "l.stickell@yahoo.it")]
-
-
-    def getHosters(self):
-        json_data = self.getURL("http://myfastfile.com/api.php", get={'hosts': ""}, decode=True)
-        self.logDebug("JSON data", json_data)
-        json_data = json_loads(json_data)
-
-        return json_data['hosts']
diff --git a/module/plugins/hooks/NoPremiumPlHook.py b/module/plugins/hooks/NoPremiumPlHook.py
deleted file mode 100644
index 743f18fc0..000000000
--- a/module/plugins/hooks/NoPremiumPlHook.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.utils import json_loads
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class NoPremiumPlHook(MultiHook):
-    __name__    = "NoPremiumPlHook"
-    __type__    = "hook"
-    __version__ = "0.03"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """NoPremium.pl hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("goddie", "dev@nopremium.pl")]
-
-
-    def getHosters(self):
-        hostings         = json_loads(self.getURL("https://www.nopremium.pl/clipboard.php?json=3").strip())
-        hostings_domains = [domain for row in hostings for domain in row["domains"] if row["sdownload"] == "0"]
-
-        self.logDebug(hostings_domains)
-
-        return hostings_domains
diff --git a/module/plugins/hooks/OverLoadMeHook.py b/module/plugins/hooks/OverLoadMeHook.py
deleted file mode 100644
index 58d419416..000000000
--- a/module/plugins/hooks/OverLoadMeHook.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class OverLoadMeHook(MultiHook):
-    __name__    = "OverLoadMeHook"
-    __type__    = "hook"
-    __version__ = "0.04"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   ),
-                  ("ssl"           , "bool"               , "Use HTTPS"                           , True )]
-
-    __description__ = """Over-Load.me hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("marley", "marley@over-load.me")]
-
-
-    def getHosters(self):
-        https = "https" if self.getConfig('ssl') else "http"
-        html = self.getURL(https + "://api.over-load.me/hoster.php",
-                      get={'auth': "0001-cb1f24dadb3aa487bda5afd3b76298935329be7700cd7-5329be77-00cf-1ca0135f"}).replace("\"", "").strip()
-        self.logDebug("Hosterlist", html)
-
-        return [x.strip() for x in html.split(",") if x.strip()]
diff --git a/module/plugins/hooks/PremiumToHook.py b/module/plugins/hooks/PremiumToHook.py
deleted file mode 100644
index 8cd2ef0e5..000000000
--- a/module/plugins/hooks/PremiumToHook.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class PremiumToHook(MultiHook):
-    __name__    = "PremiumToHook"
-    __type__    = "hook"
-    __version__ = "0.08"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Premium.to hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("RaNaN"   , "RaNaN@pyload.org"   ),
-                       ("zoidberg", "zoidberg@mujmail.cz"),
-                       ("stickell", "l.stickell@yahoo.it")]
-
-
-    def getHosters(self):
-        html = self.getURL("http://premium.to/api/hosters.php",
-                      get={'username': self.account.username, 'password': self.account.password})
-        return [x.strip() for x in html.replace("\"", "").split(";")]
diff --git a/module/plugins/hooks/PremiumizeMeHook.py b/module/plugins/hooks/PremiumizeMeHook.py
deleted file mode 100644
index 1b6444f00..000000000
--- a/module/plugins/hooks/PremiumizeMeHook.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.utils import json_loads
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class PremiumizeMeHook(MultiHook):
-    __name__    = "PremiumizeMeHook"
-    __type__    = "hook"
-    __version__ = "0.17"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Premiumize.me hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("Florian Franzen", "FlorianFranzen@gmail.com")]
-
-
-    def getHosters(self):
-        # Get account data
-        user, data = self.account.selectAccount()
-
-        # Get supported hosters list from premiumize.me using the
-        # json API v1 (see https://secure.premiumize.me/?show=api)
-        answer = self.getURL("https://api.premiumize.me/pm-api/v1.php",
-                        get={'method': "hosterlist", 'params[login]': user, 'params[pass]': data['password']})
-        data = json_loads(answer)
-
-        # If account is not valid thera are no hosters available
-        if data['status'] != 200:
-            return []
-
-        # Extract hosters from json file
-        return data['result']['hosterlist']
diff --git a/module/plugins/hooks/PutdriveComHook.py b/module/plugins/hooks/PutdriveComHook.py
deleted file mode 100644
index 85e2f541d..000000000
--- a/module/plugins/hooks/PutdriveComHook.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.hook.ZeveraCom import ZeveraCom
-
-
-class PutdriveCom(ZeveraCom):
-    __name__    = "PutdriveCom"
-    __type__    = "hook"
-    __version__ = "0.01"
-
-    __config__ = [("mode"        , "all;listed;unlisted", "Use for plugins (if supported)"               , "all"),
-                  ("pluginlist"  , "str"                , "Plugin list (comma separated)"                , ""   ),
-                  ("revertfailed", "bool"               , "Revert to standard download if download fails", False),
-                  ("interval"    , "int"                , "Reload interval in hours (0 to disable)"      , 12   )]
-
-    __description__ = """Putdrive.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
diff --git a/module/plugins/hooks/RPNetBizHook.py b/module/plugins/hooks/RPNetBizHook.py
deleted file mode 100644
index c7893ef46..000000000
--- a/module/plugins/hooks/RPNetBizHook.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.utils import json_loads
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class RPNetBizHook(MultiHook):
-    __name__    = "RPNetBizHook"
-    __type__    = "hook"
-    __version__ = "0.14"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """RPNet.biz hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("Dman", "dmanugm@gmail.com")]
-
-
-    def getHosters(self):
-        # Get account data
-        user, data = self.account.selectAccount()
-
-        res = self.getURL("https://premium.rpnet.biz/client_api.php",
-                     get={'username': user, 'password': data['password'], 'action': "showHosterList"})
-        hoster_list = json_loads(res)
-
-        # If account is not valid thera are no hosters available
-        if 'error' in hoster_list:
-            return []
-
-        # Extract hosters from json file
-        return hoster_list['hosters']
diff --git a/module/plugins/hooks/RapideoPlHook.py b/module/plugins/hooks/RapideoPlHook.py
deleted file mode 100644
index dd68fb244..000000000
--- a/module/plugins/hooks/RapideoPlHook.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.utils import json_loads
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class RapideoPlHook(MultiHook):
-    __name__    = "RapideoPlHook"
-    __type__    = "hook"
-    __version__ = "0.03"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Rapideo.pl hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("goddie", "dev@rapideo.pl")]
-
-
-    def getHosters(self):
-        hostings         = json_loads(self.getURL("https://www.rapideo.pl/clipboard.php?json=3").strip())
-        hostings_domains = [domain for row in hostings for domain in row["domains"] if row["sdownload"] == "0"]
-
-        self.logDebug(hostings_domains)
-
-        return hostings_domains
diff --git a/module/plugins/hooks/RealdebridComHook.py b/module/plugins/hooks/RealdebridComHook.py
deleted file mode 100644
index 6399d6dc2..000000000
--- a/module/plugins/hooks/RealdebridComHook.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class RealdebridComHook(MultiHook):
-    __name__    = "RealdebridComHook"
-    __type__    = "hook"
-    __version__ = "0.46"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   ),
-                  ("ssl"           , "bool"               , "Use HTTPS"                           , True )]
-
-    __description__ = """Real-Debrid.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("Devirex Hazzard", "naibaf_11@yahoo.de")]
-
-
-    def getHosters(self):
-        https = "https" if self.getConfig('ssl') else "http"
-        html = self.getURL(https + "://real-debrid.com/api/hosters.php").replace("\"", "").strip()
-
-        return [x.strip() for x in html.split(",") if x.strip()]
diff --git a/module/plugins/hooks/RehostToHook.py b/module/plugins/hooks/RehostToHook.py
deleted file mode 100644
index b55f4cdb7..000000000
--- a/module/plugins/hooks/RehostToHook.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class RehostToHook(MultiHook):
-    __name__    = "RehostToHook"
-    __type__    = "hook"
-    __version__ = "0.50"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Rehost.to hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("RaNaN", "RaNaN@pyload.org")]
-
-
-    def getHosters(self):
-        user, data = self.account.selectAccount()
-        html = self.getURL("http://rehost.to/api.php",
-                           get={'cmd'     : "get_supported_och_dl",
-                                'long_ses': self.account.getAccountInfo(user)['session']})
-        return [x.strip() for x in html.replace("\"", "").split(",")]
diff --git a/module/plugins/hooks/SimplyPremiumComHook.py b/module/plugins/hooks/SimplyPremiumComHook.py
deleted file mode 100644
index ee125cbf6..000000000
--- a/module/plugins/hooks/SimplyPremiumComHook.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.utils import json_loads
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class SimplyPremiumComHook(MultiHook):
-    __name__    = "SimplyPremiumComHook"
-    __type__    = "hook"
-    __version__ = "0.05"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Simply-Premium.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("EvolutionClip", "evolutionclip@live.de")]
-
-
-    def getHosters(self):
-        json_data = self.getURL("http://www.simply-premium.com/api/hosts.php", get={'format': "json", 'online': 1})
-        json_data = json_loads(json_data)
-
-        host_list = [element['regex'] for element in json_data['result']]
-
-        return host_list
diff --git a/module/plugins/hooks/SimplydebridComHook.py b/module/plugins/hooks/SimplydebridComHook.py
deleted file mode 100644
index 2e9da87bd..000000000
--- a/module/plugins/hooks/SimplydebridComHook.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class SimplydebridComHook(MultiHook):
-    __name__    = "SimplydebridComHook"
-    __type__    = "hook"
-    __version__ = "0.04"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Simply-Debrid.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("Kagenoshin", "kagenoshin@gmx.ch")]
-
-
-    def getHosters(self):
-        html = self.getURL("http://simply-debrid.com/api.php", get={'list': 1})
-        return [x.strip() for x in html.rstrip(';').replace("\"", "").split(";")]
diff --git a/module/plugins/hooks/SmoozedComHook.py b/module/plugins/hooks/SmoozedComHook.py
deleted file mode 100644
index 786f85491..000000000
--- a/module/plugins/hooks/SmoozedComHook.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class SmoozedComHook(MultiHook):
-    __name__    = "SmoozedComHook"
-    __type__    = "hook"
-    __version__ = "0.03"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Smoozed.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("", "")]
-
-
-    def getHosters(self):
-        user, data = self.account.selectAccount()
-        return self.account.getAccountInfo(user)["hosters"]
diff --git a/module/plugins/hooks/UnrestrictLiHook.py b/module/plugins/hooks/UnrestrictLiHook.py
deleted file mode 100644
index 8f9bdaaf5..000000000
--- a/module/plugins/hooks/UnrestrictLiHook.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.utils import json_loads
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class UnrestrictLiHook(MultiHook):
-    __name__    = "UnrestrictLiHook"
-    __type__    = "hook"
-    __version__ = "0.05"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   ),
-                  ("history"       , "bool"               , "Delete History"                      , False)]
-
-    __description__ = """Unrestrict.li hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("stickell", "l.stickell@yahoo.it")]
-
-
-    def getHosters(self):
-        json_data = self.getURL("http://unrestrict.li/api/jdownloader/hosts.php", get={'format': "json"})
-        json_data = json_loads(json_data)
-
-        return [element['host'] for element in json_data['result']]
diff --git a/module/plugins/hooks/UserAgentSwitcher.py b/module/plugins/hooks/UserAgentSwitcher.py
deleted file mode 100644
index 912c2ef09..000000000
--- a/module/plugins/hooks/UserAgentSwitcher.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from __future__ import with_statement
-
-import os
-import pycurl
-import random
-
-from module.plugins.Hook import Hook
-from module.utils import fs_encode
-
-
-class UserAgentSwitcher(Hook):
-    __name__    = "UserAgentSwitcher"
-    __type__    = "hook"
-    __version__ = "0.04"
-
-    __config__ = [("activated", "bool", "Activated"               , True                                                                      ),
-                  ("uaf"      , "file", "Random user-agents file" , ""                                                                        ),
-                  ("uar"      , "bool", "Random user-agent"       , False                                                                     ),
-                  ("uas"      , "str" , "Custom user-agent string", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0")]
-
-    __description__ = """Custom user-agent"""
-    __license__     = "GPLv3"
-    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
-
-
-    interval = 0  #@TODO: Remove in 0.4.10
-
-
-    def setup(self):
-        self.info = {}  #@TODO: Remove in 0.4.10
-
-
-    def downloadPreparing(self, pyfile):
-        uar = self.getConfig('uar')
-        uaf = fs_encode(self.getConfig('uaf'))
-
-        if uar and os.path.isfile(uaf):
-            with open(uaf) as f:
-                uas = random.choice([ua for ua in f.read().splitlines()])
-        else:
-            uas = self.getConfig('uas')
-
-        if uas:
-            self.logDebug("Use custom user-agent string: " + uas)
-            pyfile.plugin.req.http.c.setopt(pycurl.USERAGENT, uas.encode('utf-8'))
diff --git a/module/plugins/hooks/ZeveraComHook.py b/module/plugins/hooks/ZeveraComHook.py
deleted file mode 100644
index 83723351e..000000000
--- a/module/plugins/hooks/ZeveraComHook.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from pyload.plugin.internal.MultiHook import MultiHook
-
-
-class ZeveraComHook(MultiHook):
-    __name__    = "ZeveraComHook"
-    __type__    = "hook"
-    __version__ = "0.05"
-
-    __config__ = [("pluginmode"    , "all;listed;unlisted", "Use for plugins"                     , "all"),
-                  ("pluginlist"    , "str"                , "Plugin list (comma separated)"       , ""   ),
-                  ("revertfailed"  , "bool"               , "Revert to standard download if fails", True ),
-                  ("reload"        , "bool"               , "Reload plugin list"                  , True ),
-                  ("reloadinterval", "int"                , "Reload interval in hours"            , 12   )]
-
-    __description__ = """Zevera.com hook plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("zoidberg"      , "zoidberg@mujmail.cz"),
-                       ("Walter Purcaro", "vuolter@gmail.com"  )]
-
-
-    def getHosters(self):
-        html = self.account.api_response(pyreq.getHTTPRequest(timeout=120), cmd="gethosters")
-        return [x.strip() for x in html.split(",")]
diff --git a/module/plugins/hoster/LolabitsEs.py b/module/plugins/hoster/LolabitsEs.py
deleted file mode 100644
index 61df5f0bb..000000000
--- a/module/plugins/hoster/LolabitsEs.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# -*- coding: utf-8 -*
-
-import HTMLParser
-import re
-
-from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
-
-
-class LolabitsEs(SimpleHoster):
-    __name__    = "LolabitsEs"
-    __type__    = "hoster"
-    __version__ = "0.02"
-
-    __pattern__ = r'https?://(?:www\.)?lolabits\.es/.+'
-
-    __description__ = """Lolabits.es hoster plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("zapp-brannigan", "fuerst.reinje@web.de")]
-
-
-    NAME_PATTERN    = r'Descargar: <b>(?P<N>.+?)<'
-    SIZE_PATTERN    = r'class="fileSize">(?P<S>[\d.,]+) (?P<U>[\w^_]+)'
-    OFFLINE_PATTERN = r'Un usuario con este nombre no existe'
-
-    FILEID_PATTERN = r'name="FileId" value="(\d+)"'
-    TOKEN_PATTERN  = r'name="__RequestVerificationToken" type="hidden" value="(.+?)"'
-    LINK_PATTERN   = r'"redirectUrl":"(.+?)"'
-
-
-    def setup(self):
-        self.chunkLimit = 1
-
-
-    def handleFree(self, pyfile):
-        fileid = re.search(self.FILEID_PATTERN, self.html).group(1)
-        self.logDebug("FileID: " + fileid)
-
-        token = re.search(self.TOKEN_PATTERN, self.html).group(1)
-        self.logDebug("Token: " + token)
-
-        self.html = self.load("http://lolabits.es/action/License/Download",
-                              post={'fileId'                     : fileid,
-                                    '__RequestVerificationToken' : token}).decode('unicode-escape')
-
-        self.link = HTMLParser.HTMLParser().unescape(re.search(self.LINK_PATTERN, self.html).group(1))
-
-
-getInfo = create_getInfo(LolabitsEs)
diff --git a/module/plugins/hoster/SolidfilesCom.py b/module/plugins/hoster/SolidfilesCom.py
deleted file mode 100644
index d359577d6..000000000
--- a/module/plugins/hoster/SolidfilesCom.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Test links:
-# http://www.solidfiles.com/d/609cdb4b1b
-
-from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
-
-
-class SolidfilesCom(SimpleHoster):
-    __name__    = "SolidfilesCom"
-    __type__    = "hoster"
-    __version__ = "0.02"
-
-    __pattern__ = r'http://(?:www\.)?solidfiles\.com\/d/\w+'
-
-    __description__ = """Solidfiles.com hoster plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("sraedler", "simon.raedler@yahoo.de")]
-
-
-    NAME_PATTERN    = r'<h1 title="(?P<N>.+?)"'
-    SIZE_PATTERN    = r'<p class="meta">(?P<S>[\d.,]+) (?P<U>[\w_^]+)'
-    OFFLINE_PATTERN = r'<h1>404'
-
-    LINK_FREE_PATTERN = r'id="ddl-text" href="(.+?)"'
-
-
-    def setup(self):
-        self.multiDL    = True
-        self.chunkLimit = 1
-
-
-getInfo = create_getInfo(SolidfilesCom)
diff --git a/module/plugins/hoster/YadiSk.py b/module/plugins/hoster/YadiSk.py
deleted file mode 100644
index c3749d30d..000000000
--- a/module/plugins/hoster/YadiSk.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-import random
-
-from module.common.json_layer import json_loads
-from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
-
-
-class YadiSk(SimpleHoster):
-    __name__    = "YadiSk"
-    __type__    = "hoster"
-    __version__ = "0.03"
-
-    __pattern__ = r'https?://yadi\.sk/d/\w+'
-
-    __description__ = """Yadi.sk hoster plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("GammaC0de", None)]
-
-
-    OFFLINE_PATTERN = r'Nothing found'
-
-
-    def setup(self):
-        self.resumeDownload = False
-        self.multiDL        = False
-        self.chunkLimit     = 1
-
-
-    def handleFree(self, pyfile):
-        m = re.search(r'<script id="models-client" type="application/json">(.+?)</script>', self.html)
-        if m is None:
-            self.error(_("could not find required json data"))
-
-        res = json_loads(m.group(1))
-
-        yadisk_ver  = None
-        yadisk_sk   = None
-        yadisk_id   = None
-        yadisk_size = None
-        yadisk_name = None
-
-        try:  #@TODO: Copy to apiInfo
-            for sect in res:
-                if 'model' in sect:
-                    if sect['model'] == "config":
-                        yadisk_ver = sect['data']['version']
-                        yadisk_sk  = sect['data']['sk']
-
-                    elif sect['model'] == "resource":
-                        yadisk_id   = sect['data']['id']
-                        yadisk_size = sect['data']['meta']['size']
-                        yadisk_name = sect['data']['name']
-
-        except Exception, e:
-            self.fail(_("Unexpected server response"), e)
-
-        if None in (yadisk_id, yadisk_sk, yadisk_id, yadisk_size, yadisk_name):
-           self.error(_("Missing JSON data"))
-
-        self.pyfile.size = yadisk_size
-        self.pyfile.name = yadisk_name
-
-        yadisk_idclient = ""
-        for _i in range(32):
-            yadisk_idclient += random.choice('0123456abcdef')
-
-        try:
-            self.html = self.load("https://yadi.sk/models/",
-                                  get={'_m': "do-get-resource-url"},
-                                  post={'idClient': yadisk_idclient,
-                                        'version' : yadisk_ver,
-                                        '_model.0': "do-get-resource-url",
-                                        'sk'      : yadisk_sk,
-                                        'id.0'    : yadisk_id})
-
-            self.link = json_loads(self.html)['models'][0]['data']['file']
-
-        except Exception:
-            pass
-
-
-getInfo = create_getInfo(YadiSk)
diff --git a/module/plugins/internal/CaptchaService.py b/module/plugins/internal/CaptchaService.py
deleted file mode 100644
index ec938079a..000000000
--- a/module/plugins/internal/CaptchaService.py
+++ /dev/null
@@ -1,517 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-import time
-
-from base64 import b64encode
-from random import random, randint
-from urlparse import urljoin, urlparse
-
-from module.common.json_layer import json_loads
-from module.plugins.Plugin import Base
-
-
-#@TODO: Extend (new) Plugin class; remove all `html` args
-class CaptchaService(Base):
-    __name__    = "CaptchaService"
-    __type__    = "captcha"
-    __version__ = "0.26"
-
-    __description__ = """Base captcha service plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("pyLoad Team", "admin@pyload.org")]
-
-
-    key = None  #: last key detected
-
-
-    def __init__(self, plugin):
-        self.plugin = plugin
-        super(CaptchaService, self).__init__(plugin.core)
-
-
-    def detect_key(self, html=None):
-        raise NotImplementedError
-
-
-    def challenge(self, key=None, html=None):
-        raise NotImplementedError
-
-
-    def result(self, server, challenge):
-        raise NotImplementedError
-
-
-class ReCaptcha(CaptchaService):
-    __name__    = "ReCaptcha"
-    __type__    = "captcha"
-    __version__ = "0.15"
-
-    __description__ = """ReCaptcha captcha service plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("pyLoad Team", "admin@pyload.org"),
-                       ("Walter Purcaro", "vuolter@gmail.com"),
-                       ("zapp-brannigan", "fuerst.reinje@web.de")]
-
-
-    KEY_V2_PATTERN = r'(?:data-sitekey=["\']|["\']sitekey["\']:\s*["\'])([\w-]+)'
-    KEY_V1_PATTERN = r'(?:recaptcha(?:/api|\.net)/(?:challenge|noscript)\?k=|Recaptcha\.create\s*\(\s*["\'])([\w-]+)'
-
-
-    def detect_key(self, html=None):
-        if not html:
-            if hasattr(self.plugin, "html") and self.plugin.html:
-                html = self.plugin.html
-            else:
-                errmsg = _("ReCaptcha html not found")
-                self.plugin.fail(errmsg)
-                raise TypeError(errmsg)
-
-        m = re.search(self.KEY_V2_PATTERN, html) or re.search(self.KEY_V1_PATTERN, html)
-        if m:
-            self.key = m.group(1).strip()
-            self.logDebug("Key: %s" % self.key)
-            return self.key
-        else:
-            self.logDebug("Key not found")
-            return None
-
-
-    def challenge(self, key=None, html=None, version=None):
-        if not key:
-            if self.detect_key(html):
-                key = self.key
-            else:
-                errmsg = _("ReCaptcha key not found")
-                self.plugin.fail(errmsg)
-                raise TypeError(errmsg)
-
-        if version in (1, 2):
-            return getattr(self, "_challenge_v%s" % version)(key)
-
-        elif not html and hasattr(self.plugin, "html") and self.plugin.html:
-            version = 2 if re.search(self.KEY_V2_PATTERN, self.plugin.html) else 1
-            return self.challenge(key, self.plugin.html, version)
-
-        else:
-            errmsg = _("ReCaptcha html not found")
-            self.plugin.fail(errmsg)
-            raise TypeError(errmsg)
-
-
-    def _challenge_v1(self, key):
-        html = self.plugin.req.load("http://www.google.com/recaptcha/api/challenge",
-                                    get={'k': key})
-        try:
-            challenge = re.search("challenge : '(.+?)',", html).group(1)
-            server    = re.search("server : '(.+?)',", html).group(1)
-
-        except AttributeError:
-            errmsg = _("ReCaptcha challenge pattern not found")
-            self.plugin.fail(errmsg)
-            raise AttributeError(errmsg)
-
-        self.logDebug("Challenge: %s" % challenge)
-
-        return self.result(server, challenge), challenge
-
-
-    def result(self, server, challenge):
-        result = self.plugin.decryptCaptcha("%simage" % server,
-                                            get={'c': challenge},
-                                            cookies=True,
-                                            forceUser=True,
-                                            imgtype="jpg")
-
-        self.logDebug("Result: %s" % result)
-
-        return result
-
-
-    def _collectApiInfo(self):
-        html = self.plugin.req.load("http://www.google.com/recaptcha/api.js")
-        a    = re.search(r'po.src = \'(.*?)\';', html).group(1)
-        vers = a.split("/")[5]
-
-        self.logDebug("API version: %s" %vers)
-
-        language = a.split("__")[1].split(".")[0]
-
-        self.logDebug("API language: %s" % language)
-
-        html = self.plugin.req.load("https://apis.google.com/js/api.js")
-        b    = re.search(r'"h":"(.*?)","', html).group(1)
-        jsh  = b.decode('unicode-escape')
-
-        self.logDebug("API jsh-string: %s" % jsh)
-
-        return vers, language, jsh
-
-
-    def _prepareTimeAndRpc(self):
-        self.plugin.req.load("http://www.google.com/recaptcha/api2/demo")
-
-        millis = int(round(time.time() * 1000))
-
-        self.logDebug("Time: %s" % millis)
-
-        rand = randint(1, 99999999)
-        a    = "0.%s" % str(rand * 2147483647)
-        rpc  = int(100000000 * float(a))
-
-        self.logDebug("Rpc-token: %s" % rpc)
-
-        return millis, rpc
-
-
-    def _challenge_v2(self, key, parent=None):
-        if parent is None:
-            try:
-                parent = urljoin("http://", urlparse(self.plugin.pyfile.url).netloc)
-
-            except Exception:
-                parent = ""
-
-        botguardstring      = "!A"
-        vers, language, jsh = self._collectApiInfo()
-        millis, rpc         = self._prepareTimeAndRpc()
-
-        html = self.plugin.req.load("https://www.google.com/recaptcha/api2/anchor",
-                                    get={'k'       : key,
-                                         'hl'      : language,
-                                         'v'       : vers,
-                                         'usegapi' : "1",
-                                         'jsh'     : "%s#id=IO_%s" % (jsh, millis),
-                                         'parent'  : parent,
-                                         'pfname'  : "",
-                                         'rpctoken': rpc})
-
-        token1 = re.search(r'id="recaptcha-token" value="(.*?)">', html)
-        self.logDebug("Token #1: %s" % token1.group(1))
-
-        html = self.plugin.req.load("https://www.google.com/recaptcha/api2/frame",
-                                    get={'c'      : token1.group(1),
-                                         'hl'     : language,
-                                         'v'      : vers,
-                                         'bg'     : botguardstring,
-                                         'k'      : key,
-                                         'usegapi': "1",
-                                         'jsh'    : jsh}).decode('unicode-escape')
-
-        token2 = re.search(r'"finput","(.*?)",', html)
-        self.logDebug("Token #2: %s" % token2.group(1))
-
-        token3 = re.search(r'"rresp","(.*?)",', html)
-        self.logDebug("Token #3: %s" % token3.group(1))
-
-        millis_captcha_loading = int(round(time.time() * 1000))
-        captcha_response       = self.plugin.decryptCaptcha("https://www.google.com/recaptcha/api2/payload",
-                                                            get={'c':token3.group(1), 'k':key},
-                                                            cookies=True,
-                                                            forceUser=True)
-        response               = b64encode('{"response":"%s"}' % captcha_response)
-
-        self.logDebug("Result: %s" % response)
-
-        timeToSolve     = int(round(time.time() * 1000)) - millis_captcha_loading
-        timeToSolveMore = timeToSolve + int(float("0." + str(randint(1, 99999999))) * 500)
-
-        html = self.plugin.req.load("https://www.google.com/recaptcha/api2/userverify",
-                                    post={'k'       : key,
-                                          'c'       : token3.group(1),
-                                          'response': response,
-                                          't'       : timeToSolve,
-                                          'ct'      : timeToSolveMore,
-                                          'bg'      : botguardstring})
-
-        token4 = re.search(r'"uvresp","(.*?)",', html)
-        self.logDebug("Token #4: %s" % token4.group(1))
-
-        result = token4.group(1)
-
-        return result, None
-
-
-class AdsCaptcha(CaptchaService):
-    __name__    = "AdsCaptcha"
-    __type__    = "captcha"
-    __version__ = "0.08"
-
-    __description__ = """AdsCaptcha captcha service plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("pyLoad Team", "admin@pyload.org")]
-
-
-    CAPTCHAID_PATTERN  = r'api\.adscaptcha\.com/Get\.aspx\?.*?CaptchaId=(\d+)'
-    PUBLICKEY_PATTERN = r'api\.adscaptcha\.com/Get\.aspx\?.*?PublicKey=([\w-]+)'
-
-
-    def detect_key(self, html=None):
-        if not html:
-            if hasattr(self.plugin, "html") and self.plugin.html:
-                html = self.plugin.html
-            else:
-                errmsg = _("AdsCaptcha html not found")
-                self.plugin.fail(errmsg)
-                raise TypeError(errmsg)
-
-        m = re.search(self.PUBLICKEY_PATTERN, html)
-        n = re.search(self.CAPTCHAID_PATTERN, html)
-        if m and n:
-            self.key = (m.group(1).strip(), n.group(1).strip())  #: key is the tuple(PublicKey, CaptchaId)
-            self.logDebug("Key|id: %s | %s" % self.key)
-            return self.key
-        else:
-            self.logDebug("Key or id not found")
-            return None
-
-
-    def challenge(self, key=None, html=None):
-        if not key:
-            if self.detect_key(html):
-                key = self.key
-            else:
-                errmsg = _("AdsCaptcha key not found")
-                self.plugin.fail(errmsg)
-                raise TypeError(errmsg)
-
-        PublicKey, CaptchaId = key
-
-        html = self.plugin.req.load("http://api.adscaptcha.com/Get.aspx",
-                                    get={'CaptchaId': CaptchaId,
-                                         'PublicKey': PublicKey})
-        try:
-            challenge = re.search("challenge: '(.+?)',", html).group(1)
-            server    = re.search("server: '(.+?)',", html).group(1)
-
-        except AttributeError:
-            errmsg = _("AdsCaptcha challenge pattern not found")
-            self.plugin.fail(errmsg)
-            raise AttributeError(errmsg)
-
-        self.logDebug("Challenge: %s" % challenge)
-
-        return self.result(server, challenge), challenge
-
-
-    def result(self, server, challenge):
-        result = self.plugin.decryptCaptcha("%sChallenge.aspx" % server,
-                                            get={'cid': challenge, 'dummy': random()},
-                                            cookies=True,
-                                            imgtype="jpg")
-
-        self.logDebug("Result: %s" % result)
-
-        return result
-
-
-class SolveMedia(CaptchaService):
-    __name__    = "SolveMedia"
-    __type__    = "captcha"
-    __version__ = "0.12"
-
-    __description__ = """SolveMedia captcha service plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("pyLoad Team", "admin@pyload.org")]
-
-
-    KEY_PATTERN = r'api\.solvemedia\.com/papi/challenge\.(?:no)?script\?k=(.+?)["\']'
-
-
-    def detect_key(self, html=None):
-        if not html:
-            if hasattr(self.plugin, "html") and self.plugin.html:
-                html = self.plugin.html
-            else:
-                errmsg = _("SolveMedia html not found")
-                self.plugin.fail(errmsg)
-                raise TypeError(errmsg)
-
-        m = re.search(self.KEY_PATTERN, html)
-        if m:
-            self.key = m.group(1).strip()
-            self.logDebug("Key: %s" % self.key)
-            return self.key
-        else:
-            self.logDebug("Key not found")
-            return None
-
-
-    def challenge(self, key=None, html=None):
-        if not key:
-            if self.detect_key(html):
-                key = self.key
-            else:
-                errmsg = _("SolveMedia key not found")
-                self.plugin.fail(errmsg)
-                raise TypeError(errmsg)
-
-        html = self.plugin.req.load("http://api.solvemedia.com/papi/challenge.noscript",
-                                    get={'k': key})
-        try:
-            challenge = re.search(r'<input type=hidden name="adcopy_challenge" id="adcopy_challenge" value="(.+?)">',
-                                  html).group(1)
-            server    = "http://api.solvemedia.com/papi/media"
-
-        except AttributeError:
-            errmsg = _("SolveMedia challenge pattern not found")
-            self.plugin.fail(errmsg)
-            raise AttributeError(errmsg)
-
-        self.logDebug("Challenge: %s" % challenge)
-
-        result = self.result(server, challenge)
-
-        try:
-            magic = re.search(r'name="magic" value="(.+?)"', html).group(1)
-
-        except AttributeError:
-            self.logDebug("Magic code not found")
-
-        else:
-            if not self._verify(key, magic, result, challenge):
-                self.logDebug("Captcha code was invalid")
-
-        return result, challenge
-
-
-    def _verify(self, key, magic, result, challenge, ref=None):  #@TODO: Clean up
-        if ref is None:
-            try:
-                ref = self.plugin.pyfile.url
-
-            except Exception:
-                ref = ""
-
-        html = self.plugin.req.load("http://api.solvemedia.com/papi/verify.noscript",
-                                    post={'adcopy_response'  : result,
-                                          'k'                : key,
-                                          'l'                : "en",
-                                          't'                : "img",
-                                          's'                : "standard",
-                                          'magic'            : magic,
-                                          'adcopy_challenge' : challenge,
-                                          'ref'              : ref})
-        try:
-            html      = self.plugin.req.load(re.search(r'URL=(.+?)">', html).group(1))
-            gibberish = re.search(r'id=gibberish>(.+?)</textarea>', html).group(1)
-
-        except Exception:
-            return False
-
-        else:
-            return True
-
-
-    def result(self, server, challenge):
-        result = self.plugin.decryptCaptcha(server,
-                                            get={'c': challenge},
-                                            cookies=True,
-                                            imgtype="gif")
-
-        self.logDebug("Result: %s" % result)
-
-        return result
-
-
-class AdYouLike(CaptchaService):
-    __name__    = "AdYouLike"
-    __type__    = "captcha"
-    __version__ = "0.05"
-
-    __description__ = """AdYouLike captcha service plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
-
-
-    AYL_PATTERN      = r'Adyoulike\.create\s*\((.+?)\)'
-    CALLBACK_PATTERN = r'(Adyoulike\.g\._jsonp_\d+)'
-
-
-    def detect_key(self, html=None):
-        if not html:
-            if hasattr(self.plugin, "html") and self.plugin.html:
-                html = self.plugin.html
-            else:
-                errmsg = _("AdYouLike html not found")
-                self.plugin.fail(errmsg)
-                raise TypeError(errmsg)
-
-        m = re.search(self.AYL_PATTERN, html)
-        n = re.search(self.CALLBACK_PATTERN, html)
-        if m and n:
-            self.key = (m.group(1).strip(), n.group(1).strip())
-            self.logDebug("Ayl|callback: %s | %s" % self.key)
-            return self.key   #: key is the tuple(ayl, callback)
-        else:
-            self.logDebug("Ayl or callback not found")
-            return None
-
-
-    def challenge(self, key=None, html=None):
-        if not key:
-            if self.detect_key(html):
-                key = self.key
-            else:
-                errmsg = _("AdYouLike key not found")
-                self.plugin.fail(errmsg)
-                raise TypeError(errmsg)
-
-        ayl, callback = key
-
-        # {"adyoulike":{"key":"P~zQ~O0zV0WTiAzC-iw0navWQpCLoYEP"},
-        # "all":{"element_id":"ayl_private_cap_92300","lang":"fr","env":"prod"}}
-        ayl = json_loads(ayl)
-
-        html = self.plugin.req.load("http://api-ayl.appspot.com/challenge",
-                                    get={'key'     : ayl['adyoulike']['key'],
-                                         'env'     : ayl['all']['env'],
-                                         'callback': callback})
-        try:
-            challenge = json_loads(re.search(callback + r'\s*\((.+?)\)', html).group(1))
-
-        except AttributeError:
-            errmsg = _("AdYouLike challenge pattern not found")
-            self.plugin.fail(errmsg)
-            raise AttributeError(errmsg)
-
-        self.logDebug("Challenge: %s" % challenge)
-
-        return self.result(ayl, challenge), challenge
-
-
-    def result(self, server, challenge):
-        # Adyoulike.g._jsonp_5579316662423138
-        # ({"translations":{"fr":{"instructions_visual":"Recopiez « Soonnight » ci-dessous :"}},
-        # "site_under":true,"clickable":true,"pixels":{"VIDEO_050":[],"DISPLAY":[],"VIDEO_000":[],"VIDEO_100":[],
-        # "VIDEO_025":[],"VIDEO_075":[]},"medium_type":"image/adyoulike",
-        # "iframes":{"big":"<iframe src=\"http://www.soonnight.com/campagn.html\" scrolling=\"no\"
-        # height=\"250\" width=\"300\" frameborder=\"0\"></iframe>"},"shares":{},"id":256,
-        # "token":"e6QuI4aRSnbIZJg02IsV6cp4JQ9~MjA1","formats":{"small":{"y":300,"x":0,"w":300,"h":60},
-        # "big":{"y":0,"x":0,"w":300,"h":250},"hover":{"y":440,"x":0,"w":300,"h":60}},
-        # "tid":"SqwuAdxT1EZoi4B5q0T63LN2AkiCJBg5"})
-
-        if isinstance(server, basestring):
-            server = json_loads(server)
-
-        if isinstance(challenge, basestring):
-            challenge = json_loads(challenge)
-
-        try:
-            instructions_visual = challenge['translations'][server['all']['lang']]['instructions_visual']
-            result = re.search(u'«(.+?)»', instructions_visual).group(1).strip()
-
-        except AttributeError:
-            errmsg = _("AdYouLike result not found")
-            self.plugin.fail(errmsg)
-            raise AttributeError(errmsg)
-
-        result = {'_ayl_captcha_engine' : "adyoulike",
-                  '_ayl_env'            : server['all']['env'],
-                  '_ayl_tid'            : challenge['tid'],
-                  '_ayl_token_challenge': challenge['token'],
-                  '_ayl_response'       : response}
-
-        self.logDebug("Result: %s" % result)
-
-        return result
-- 
cgit v1.2.3