From 821ed8c027a19c4a76d6fb81b161711b50ad773d Mon Sep 17 00:00:00 2001
From: nath_schwarz <nathan.notwhite@gmail.com>
Date: Mon, 30 Jun 2014 13:33:10 +0200
Subject: [ImgurComAlbum] new crypter

---
 module/plugins/crypter/ImgurComAlbum.py | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 module/plugins/crypter/ImgurComAlbum.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
new file mode 100644
index 000000000..f05cf553b
--- /dev/null
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -0,0 +1,21 @@
+import re
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.utils import uniqify
+
+
+class ImgurComAlbum(SimpleCrypter):
+    __name__ = "ImgurComAlbum"
+    __type__ = "crypter"
+    __version__ = "0.3"
+    __description__ = """Imgur.com decrypter plugin"""
+    __pattern__ = r"https?://imgur\.com/(a|gallery|)/?\w{5,7}"
+    __author_name_ = "nath_schwarz"
+    __author_mail_ = "nathan.notwhite@gmail.com"
+
+    TITLE_PATTERN = r'(?P<title>.+) - Imgur'
+    LINK_PATTERN = r'i\.imgur\.com/\w{7}s?\.(?:jpeg|jpg|png|gif|apng)'
+
+    def getLinks(self):
+        f = lambda url: "http://" + re.sub(r'(\w{7})s\.', r'\1.', url)
+        return uniqify(map(f, re.findall(self.LINK_PATTERN, self.html)))
-- 
cgit v1.2.3


From aa3ca942268b88dce3f2ef78a39a969400dfa2c4 Mon Sep 17 00:00:00 2001
From: Stefano <l.stickell@yahoo.it>
Date: Tue, 1 Jul 2014 14:19:38 +0200
Subject: [FilerNetFolder] New crypter See also #660

---
 module/plugins/crypter/FilerNetFolder.py | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100644 module/plugins/crypter/FilerNetFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
new file mode 100644
index 000000000..70c932d00
--- /dev/null
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -0,0 +1,19 @@
+import re
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
+
+
+class FilerNetFolder(SimpleCrypter):
+    __name__ = "FilerNetFolder"
+    __type__ = "crypter"
+    __version__ = "0.3"
+    __description__ = """Filer.net decrypter plugin"""
+    __pattern__ = r"https?://filer\.net/folder/\w{16}"
+    __author_name_ = ("nath_schwarz", "stickell")
+    __author_mail_ = ("nathan.notwhite@gmail.com", "l.stickell@yahoo.it")
+
+    LINK_PATTERN = r'href="(/get/\w{16})">(?!<)'
+    TITLE_PATTERN = r'<h3>(?P<title>.+) - <small'
+
+    def getLinks(self):
+        return ['http://filer.net%s' % link for link in re.findall(self.LINK_PATTERN, self.html)]
-- 
cgit v1.2.3


From 59dbd29405af5847fc69a9801db23a695972cfd6 Mon Sep 17 00:00:00 2001
From: Stefano <l.stickell@yahoo.it>
Date: Wed, 2 Jul 2014 15:24:23 +0200
Subject: [FilefactoryComFolder] Rewritten Fixes #648

---
 module/plugins/crypter/FilefactoryComFolder.py | 47 +++++++-------------------
 1 file changed, 12 insertions(+), 35 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index aece1a01d..2147c48df 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -1,45 +1,22 @@
 # -*- coding: utf-8 -*-
 
-import re
-from module.plugins.Crypter import Crypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
-class FilefactoryComFolder(Crypter):
+class FilefactoryComFolder(SimpleCrypter):
     __name__ = "FilefactoryComFolder"
     __type__ = "crypter"
-    __pattern__ = r'(http://(?:www\.)?filefactory\.com/f/\w+).*'
-    __version__ = "0.1"
+    __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+'
+    __version__ = "0.2"
     __description__ = """Filefactory.com folder decrypter plugin"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __author_name__ = "stickell"
+    __author_mail__ = "l.stickell@yahoo.it"
 
-    FOLDER_PATTERN = r'<table class="items" cellspacing="0" cellpadding="0">(.*?)</table>'
-    LINK_PATTERN = r'<td class="name"><a href="([^"]+)">'
-    PAGINATOR_PATTERN = r'<div class="list">\s*<label>Pages</label>\s*<ul>(.*?)</ul>\s*</div>'
-    NEXT_PAGE_PATTERN = r'<li class="current">.*?</li>\s*<li class=""><a href="([^"]+)">'
+    LINK_PATTERN = r'<td><a href="([^"]+)">'
+    TITLE_PATTERN = r'<h1>Files in <span>(?P<title>.+)</span></h1>'
+    PAGES_PATTERN = r'data-paginator-totalPages="(?P<pages>\d+)"'
 
-    def decrypt(self, pyfile):
-        url_base = re.match(self.__pattern__, pyfile.url).group(1)
-        html = self.load(url_base)
+    SH_COOKIES = [('.filefactory.com', 'locale', 'en_US.utf8')]
 
-        new_links = []
-        for i in xrange(1, 100):
-            self.logInfo("Fetching links from page %i" % i)
-            found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-            if found is None: self.fail("Parse error (FOLDER)")
-
-            new_links.extend(re.findall(self.LINK_PATTERN, found.group(1)))
-
-            try:
-                paginator = re.search(self.PAGINATOR_PATTERN, html, re.DOTALL).group(1)
-                next_page = re.search(self.NEXT_PAGE_PATTERN, paginator).group(1)
-                html = self.load("%s/%s" % (url_base, next_page))
-            except Exception, e:
-                break
-        else:
-            self.logInfo("Limit of 99 pages reached, aborting")
-
-        if new_links:
-            self.core.files.addLinks(new_links, pyfile.package().id)
-        else:
-            self.fail('Could not extract any links')
+    def loadPage(self, page_n):
+        return self.load(self.pyfile.url, get={'page': page_n})
-- 
cgit v1.2.3


From 2a79ebb957adf2ed610e6104fc00f7e51e835edc Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 5 Jul 2014 03:21:06 +0200
Subject: Cleaned ShareLinksBiz pattern + better if-check for RSDF plugin

---
 module/plugins/crypter/ShareLinksBiz.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 816842216..7353f30a7 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -11,7 +11,7 @@ from module.plugins.Crypter import Crypter
 class ShareLinksBiz(Crypter):
     __name__ = "ShareLinksBiz"
     __type__ = "crypter"
-    __pattern__ = r'(?P<base>http://(?:www\.)?(share-links|s2l)\.biz)/(?P<id>_?[0-9a-z]+)(/.*)?'
+    __pattern__ = r'http://(?:www\.)?(share-links|s2l)\.biz/(?P<ID>_?\w+)'
     __version__ = "1.13"
     __description__ = """Share-Links.biz decrypter plugin"""
     __author_name__ = "fragonib"
@@ -64,7 +64,7 @@ class ShareLinksBiz(Crypter):
         if 's2l.biz' in url:
             url = self.load(url, just_header=True)['location']
         self.baseUrl = re.match(self.__pattern__, url).group(1)
-        self.fileId = re.match(self.__pattern__, url).group('id')
+        self.fileId = re.match(self.__pattern__, url).group('ID')
         self.package = pyfile.package()
 
     def isOnline(self):
-- 
cgit v1.2.3


From d016326ea5611c5dd9c0d5fcf2145fc202a45a9a Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 5 Jul 2014 16:33:12 +0200
Subject: New hoster: VimeoCom

---
 module/plugins/crypter/DownloadVimeoCom.py | 30 ------------------------------
 1 file changed, 30 deletions(-)
 delete mode 100644 module/plugins/crypter/DownloadVimeoCom.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DownloadVimeoCom.py b/module/plugins/crypter/DownloadVimeoCom.py
deleted file mode 100644
index 3e137bab1..000000000
--- a/module/plugins/crypter/DownloadVimeoCom.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-import HTMLParser
-from module.plugins.Crypter import Crypter
-
-
-class DownloadVimeoCom(Crypter):
-    __name__ = 'DownloadVimeoCom'
-    __type__ = 'crypter'
-    __pattern__ = r'(?:http://vimeo\.com/\d*|http://smotri\.com/video/view/\?id=.*)'
-    __version__ = '0.1'
-    __description__ = """Vimeo.com decrypter plugin"""
-    __author_name__ = "4Christopher"
-    __author_mail__ = "4Christopher@gmx.de"
-
-    BASE_URL = 'http://downloadvimeo.com'
-
-    def decrypt(self, pyfile):
-        self.package = pyfile.package()
-        html = self.load('%s/generate?url=%s' % (self.BASE_URL, pyfile.url))
-        h = HTMLParser.HTMLParser()
-        try:
-            f = re.search(r'cmd quality="(?P<quality>[^"]+?)">\s*?(?P<URL>[^<]*?)</cmd>', html)
-        except:
-            self.logDebug('Failed to find the URL')
-        else:
-            url = h.unescape(f.group('URL'))
-            self.logDebug('Quality: %s, URL: %s' % (f.group('quality'), url))
-            self.packages.append((self.package.name, [url], self.package.folder))
-- 
cgit v1.2.3


From 15362ebceaee1eb66920d4822d2faa947151e74a Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 5 Jul 2014 16:42:24 +0200
Subject: [SimpleCrypter] Better inline docs + support for offline &
 temp.offline check

---
 module/plugins/crypter/EasybytezComFolder.py | 4 ++--
 module/plugins/crypter/TusfilesNetFolder.py  | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index b4a6284fc..7a8ee5424 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -21,12 +21,12 @@ class EasybytezComFolder(SimpleCrypter):
     __name__ = "EasybytezComFolder"
     __type__ = "crypter"
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
-    __version__ = "0.05"
+    __version__ = "0.06"
     __description__ = """Easybytez.com decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
 
-    FILE_URL_REPLACEMENTS = [(__pattern__, r"http://www.easybytez.com/users/\g<ID>?per_page=10000")]
+    URL_REPLACEMENTS = [(__pattern__, r"http://www.easybytez.com/users/\g<ID>?per_page=10000")]
 
     LINK_PATTERN = r'<td><a href="(http://www\.easybytez\.com/\w+)" target="_blank">.+(?:</a>)?</td>'
     TITLE_PATTERN = r'<Title>Files of \d+: (?P<title>.+) folder</Title>'
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index 0bc770f99..5ee32379d 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -27,7 +27,7 @@ class TusfilesNetFolder(SimpleCrypter):
     __name__ = "TusfilesNetFolder"
     __type__ = "crypter"
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)/?'
-    __version__ = "0.01"
+    __version__ = "0.02"
     __description__ = """Tusfiles.net folder decrypter plugin"""
     __author_name__ = ("Walter Purcaro", "stickell")
     __author_mail__ = ("vuolter@gmail.com", "l.stickell@yahoo.it")
@@ -36,7 +36,7 @@ class TusfilesNetFolder(SimpleCrypter):
     TITLE_PATTERN = r'<Title>.*?\: (?P<title>.+) folder</Title>'
     PAGES_PATTERN = r'>\((?P<pages>\d+) \w+\)<'
 
-    FILE_URL_REPLACEMENTS = [(__pattern__, r'https://www.tusfiles.net/go/\g<ID>/')]
+    URL_REPLACEMENTS = [(__pattern__, r'https://www.tusfiles.net/go/\g<ID>/')]
 
     def loadPage(self, page_n):
         return self.load(urljoin(self.pyfile.url, str(page_n)), decode=True)
-- 
cgit v1.2.3


From 2929fdd73bc247da8c2df7fc33dd2f555848fadb Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 5 Jul 2014 17:56:28 +0200
Subject: [ShareLinksBiz] Fix broken pattern due last update

---
 module/plugins/crypter/ShareLinksBiz.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 7353f30a7..bd23d4751 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -63,7 +63,7 @@ class ShareLinksBiz(Crypter):
         url = pyfile.url
         if 's2l.biz' in url:
             url = self.load(url, just_header=True)['location']
-        self.baseUrl = re.match(self.__pattern__, url).group(1)
+        self.baseUrl = "http://www.%s.biz" % re.match(self.__pattern__, url).group(1)
         self.fileId = re.match(self.__pattern__, url).group('ID')
         self.package = pyfile.package()
 
-- 
cgit v1.2.3


From 1ccc46d6330c72cdfef6a3d13a4fa78cb6301757 Mon Sep 17 00:00:00 2001
From: nathschwarz <nathan.notwhite@gmail.com>
Date: Sat, 5 Jul 2014 20:24:45 +0200
Subject: [ImgurComAlbum] Added www and mobile to pattern

---
 module/plugins/crypter/ImgurComAlbum.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index f05cf553b..267f92e1a 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -7,9 +7,9 @@ from module.utils import uniqify
 class ImgurComAlbum(SimpleCrypter):
     __name__ = "ImgurComAlbum"
     __type__ = "crypter"
-    __version__ = "0.3"
+    __version__ = "0.4"
     __description__ = """Imgur.com decrypter plugin"""
-    __pattern__ = r"https?://imgur\.com/(a|gallery|)/?\w{5,7}"
+    __pattern__ = r"https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}"
     __author_name_ = "nath_schwarz"
     __author_mail_ = "nathan.notwhite@gmail.com"
 
-- 
cgit v1.2.3


From 5108fb5e7cbb51a05ed142ac54d0586d2c9fc305 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 5 Jul 2014 20:39:25 +0200
Subject: [YoutubeBatch] Little pattern fixup

---
 module/plugins/crypter/YoutubeBatch.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index e6976471c..4ba1a3c70 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -30,7 +30,7 @@ API_KEY = "AIzaSyCKnWLNlkX-L4oD1aEzqqhRw1zczeD6_k0"
 class YoutubeBatch(Crypter):
     __name__ = "YoutubeBatch"
     __type__ = "crypter"
-    __pattern__ = r'https?://(?:www\.)?(m\.)?youtube\.com/(?P<TYPE>user|playlist|view_play_list)(/|.*?[?&](?:list|p)=)(?P<ID>[\w-]+)'
+    __pattern__ = r'https?://(?:www\.|m\.)?youtube\.com/(?P<TYPE>user|playlist|view_play_list)(/|.*?[?&](?:list|p)=)(?P<ID>[\w-]+)'
     __version__ = "1.00"
     __description__ = """Youtube.com channel & playlist decrypter plugin"""
     __config__ = [("likes", "bool", "Grab user (channel) liked videos", False),
-- 
cgit v1.2.3


From 1cc7a484cd0ed93bbe54a5d9b47564369967e22b Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 7 Jul 2014 21:08:40 +0200
Subject: New crypter FiredriveComFolder

---
 module/plugins/crypter/FiredriveComFolder.py | 39 ++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100644 module/plugins/crypter/FiredriveComFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py
new file mode 100644
index 000000000..97ba11037
--- /dev/null
+++ b/module/plugins/crypter/FiredriveComFolder.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#  This program 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.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU Affero General Public License for more details.
+#
+#  You should have received a copy of the GNU Affero General Public License
+#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+###############################################################################
+
+import re
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
+
+
+class FiredriveComFolder(SimpleCrypter):
+    __name__ = "FiredriveComFolder"
+    __type__ = "crypter"
+    __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/share/.+'
+    __version__ = "0.01"
+    __description__ = """Firedrive.com folder decrypter plugin"""
+    __author_name__ = "Walter Purcaro"
+    __author_mail__ = "vuolter@gmail.com"
+
+    LINK_PATTERN = r'<div class="pf_item pf_(file|folder).+?public=\'(.+?)\''
+    TITLE_PATTERN = r'>Shared Folder "(?P<title>.+)" | Firedrive<'
+    OFFLINE_PATTERN = r'class="sad_face_image"|>No such page here.<'
+    TEMP_OFFLINE_PATTERN = r'>(File Temporarily Unavailable|Server Error. Try again later)'
+
+    def getLinks(self):
+        return map(lambda x: "http://www.firedrive.com/%s/%s" %
+                   ("share" if x[0] == "folder" else "file", x[1]),
+                   re.findall(self.LINK_PATTERN, self.html))
-- 
cgit v1.2.3


From 2ecd18db134efa59aba6b809a4bf0bb5fa4d3d48 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 8 Jul 2014 02:07:33 +0200
Subject: New crypter FilecloudIoFolder

---
 module/plugins/crypter/FilecloudIoFolder.py | 30 +++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 module/plugins/crypter/FilecloudIoFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
new file mode 100644
index 000000000..bd07b823e
--- /dev/null
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#  This program 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.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU Affero General Public License for more details.
+#
+#  You should have received a copy of the GNU Affero General Public License
+#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+###############################################################################
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
+
+
+class FilecloudIoFolder(SimpleCrypter):
+    __name__ = "FilecloudIoFolder"
+    __type__ = "crypter"
+    __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+'
+    __version__ = "0.01"
+    __description__ = """Filecloud.io folder decrypter plugin"""
+    __author_name__ = "Walter Purcaro"
+    __author_mail__ = "vuolter@gmail.com"
+
+    LINK_PATTERN = r'href="(http://filecloud.io/\w+)" title'
+    TITLE_PATTERN = r'>(?P<title>.+?) - filecloud.io<'
-- 
cgit v1.2.3


From 04038a2cf0c4c2d9cc9a0c8e8bf9beb6426afae8 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Thu, 10 Jul 2014 03:02:26 +0200
Subject: Use parseError instead PluginParseError + unified all download
 pattern attributes as LINK_PATTERN + removed some old patterns (not used
 anymore) + other code cosmetics

---
 module/plugins/crypter/DdlstorageComFolder.py |  2 +-
 module/plugins/crypter/DlProtectCom.py        |  2 +-
 module/plugins/crypter/DontKnowMe.py          |  2 +-
 module/plugins/crypter/FilestubeCom.py        |  4 ++--
 module/plugins/crypter/FiletramCom.py         |  4 ++--
 module/plugins/crypter/GooGl.py               |  2 +-
 module/plugins/crypter/LinkSaveIn.py          |  4 ++--
 module/plugins/crypter/LixIn.py               |  2 +-
 module/plugins/crypter/MediafireComFolder.py  |  3 ++-
 module/plugins/crypter/NosvideoCom.py         |  2 +-
 module/plugins/crypter/RelinkUs.py            | 25 +++++++++++++------------
 module/plugins/crypter/YoutubeBatch.py        |  2 +-
 12 files changed, 28 insertions(+), 26 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DdlstorageComFolder.py b/module/plugins/crypter/DdlstorageComFolder.py
index 6501de822..ef43edc5b 100644
--- a/module/plugins/crypter/DdlstorageComFolder.py
+++ b/module/plugins/crypter/DdlstorageComFolder.py
@@ -26,4 +26,4 @@ class DdlstorageComFolder(SimpleCrypter):
     __author_name__ = ("godofdream", "stickell")
     __author_mail__ = ("soilfiction@gmail.com", "l.stickell@yahoo.it")
 
-    LINK_PATTERN = '<a class="sub_title" style="text-decoration:none;" href="(http://www.ddlstorage.com/.*)">'
+    LINK_PATTERN = r'<a class="sub_title" style="text-decoration:none;" href="(http://www.ddlstorage.com/.*)">'
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index dbe5bf705..780708884 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -32,7 +32,7 @@ class DlProtectCom(SimpleCrypter):
     __author_name__ = "Walter Purcaro"
     __author_mail__ = "vuolter@gmail.com"
 
-    OFFLINE_PATTERN = ">Unfortunately, the link you are looking for is not found"
+    OFFLINE_PATTERN = r'>Unfortunately, the link you are looking for is not found'
 
     def getLinks(self):
         # Direct link with redirect
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index 42a38e98f..092834325 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -15,7 +15,7 @@ class DontKnowMe(Crypter):
     __author_name__ = "selaux"
     __author_mail__ = ""
 
-    LINK_PATTERN = r"http://dontknow.me/at/\?(.+)$"
+    LINK_PATTERN = r'http://dontknow.me/at/\?(.+)$'
 
     def decrypt(self, pyfile):
         link = re.findall(self.LINK_PATTERN, pyfile.url)[0]
diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py
index f4f09e878..ac67c33c9 100644
--- a/module/plugins/crypter/FilestubeCom.py
+++ b/module/plugins/crypter/FilestubeCom.py
@@ -26,5 +26,5 @@ class FilestubeCom(SimpleCrypter):
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
 
-    LINK_PATTERN = r"<a class=\"file-link-main(?: noref)?\" [^>]* href=\"(http://[^\"]+)"
-    TITLE_PATTERN = r"<h1\s*> (?P<title>.+)  download\s*</h1>"
+    LINK_PATTERN = r'<a class=\"file-link-main(?: noref)?\" [^>]* href=\"(http://[^\"]+)'
+    TITLE_PATTERN = r'<h1\s*> (?P<title>.+)  download\s*</h1>'
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index 8cdf32ad5..5a587eda2 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -26,5 +26,5 @@ class FiletramCom(SimpleCrypter):
     __author_name__ = ("igel", "stickell")
     __author_mail__ = ("igelkun@myopera.com", "l.stickell@yahoo.it")
 
-    LINK_PATTERN = r"\s+(http://.+)"
-    TITLE_PATTERN = r"<title>(?P<title>[^<]+) - Free Download[^<]*</title>"
+    LINK_PATTERN = r'\s+(http://.+)'
+    TITLE_PATTERN = r'<title>(?P<title>[^<]+) - Free Download[^<]*</title>'
diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py
index 15f0a9a8c..343bce5fd 100644
--- a/module/plugins/crypter/GooGl.py
+++ b/module/plugins/crypter/GooGl.py
@@ -27,7 +27,7 @@ class GooGl(Crypter):
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
 
-    API_URL = 'https://www.googleapis.com/urlshortener/v1/url'
+    API_URL = "https://www.googleapis.com/urlshortener/v1/url"
 
     def decrypt(self, pyfile):
         rep = self.load(self.API_URL, get={'shortUrl': pyfile.url})
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 85dde6c87..13277e3f3 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -27,7 +27,7 @@ class LinkSaveIn(Crypter):
     # Constants
     _JK_KEY_ = "jk"
     _CRYPTED_KEY_ = "crypted"
-    HOSTER_DOMAIN = "linksave.in"
+    HOSTER_NAME = "linksave.in"
 
     def setup(self):
         self.html = None
@@ -41,7 +41,7 @@ class LinkSaveIn(Crypter):
         # Init
         self.package = pyfile.package()
         self.fileid = re.match(self.__pattern__, pyfile.url).group('id')
-        self.req.cj.setCookie(self.HOSTER_DOMAIN, "Linksave_Language", "english")
+        self.req.cj.setCookie(self.HOSTER_NAME, "Linksave_Language", "english")
 
         # Request package
         self.html = self.load(pyfile.url)
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index 619a474f2..8fca7dc02 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -14,7 +14,7 @@ class LixIn(Crypter):
     __author_name__ = "spoob"
     __author_mail__ = "spoob@pyload.org"
 
-    CAPTCHA_PATTERN = '<img src="(?P<image>captcha_img.php\?.*?)"'
+    CAPTCHA_PATTERN = r'<img src="(?P<image>captcha_img.php\?.*?)"'
     SUBMIT_PATTERN = r"value='continue.*?'"
     LINK_PATTERN = r'name="ifram" src="(?P<link>.*?)"'
 
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index 46856229c..1ab16f31f 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -16,7 +16,8 @@ class MediafireComFolder(Crypter):
     __author_mail__ = "zoidberg@mujmail.cz"
 
     FOLDER_KEY_PATTERN = r"var afI= '(\w+)';"
-    FILE_URL_PATTERN = '<meta property="og:url" content="http://www.mediafire.com/\?(\w+)"/>'
+    FILE_URL_PATTERN = r'<meta property="og:url" content="http://www.mediafire.com/\?(\w+)"/>'
+
 
     def decrypt(self, pyfile):
         new_links = []
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index 63e199a7a..20097c7bf 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -13,4 +13,4 @@ class NosvideoCom(SimpleCrypter):
     __author_mail__ = "igelkun@myopera.com"
 
     LINK_PATTERN = r'href="(http://(?:w{3}\.)?nosupload.com/\?d=\w+)"'
-    TITLE_PATTERN = r"<[tT]itle>Watch (?P<title>.+)</[tT]itle>"
+    TITLE_PATTERN = r'<[tT]itle>Watch (?P<title>.+)</[tT]itle>'
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index aad55c867..f6503374f 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -21,27 +21,28 @@ class RelinkUs(Crypter):
     # Constants
     PREFERRED_LINK_SOURCES = ['cnl2', 'dlc', 'web']
 
-    OFFLINE_TOKEN = "<title>Tattooside"
-    PASSWORD_TOKEN = "container_password.php"
-    PASSWORD_ERROR_ROKEN = "You have entered an incorrect password"
-    PASSWORD_SUBMIT_URL = "http://www.relink.us/container_password.php"
-    CAPTCHA_TOKEN = "container_captcha.php"
-    CAPTCHA_ERROR_ROKEN = "You have solved the captcha wrong"
-    CAPTCHA_IMG_URL = "http://www.relink.us/core/captcha/circlecaptcha.php"
-    CAPTCHA_SUBMIT_URL = "http://www.relink.us/container_captcha.php"
-    FILE_TITLE_REGEX = r"<th>Title</th><td><i>(.*)</i></td></tr>"
-    FILE_NOTITLE = 'No title'
+    OFFLINE_TOKEN = r'<title>Tattooside'
+    PASSWORD_TOKEN = r'container_password\.php'
+    PASSWORD_ERROR_ROKEN = r'You have entered an incorrect password'
+    PASSWORD_SUBMIT_URL = r'http://www\.relink\.us/container_password\.php'
+    CAPTCHA_TOKEN = r'container_captcha\.php'
+    CAPTCHA_ERROR_ROKEN = r'You have solved the captcha wrong'
+    CAPTCHA_IMG_URL = r'http://www\.relink\.us/core/captcha/circlecaptcha\.php'
+    CAPTCHA_SUBMIT_URL = r'http://www\.relink\.us/container_captcha\.php'
+    FILE_TITLE_REGEX = r'<th>Title</th><td><i>(.*)</i></td></tr>'
+    FILE_NOTITLE = r'No title'
 
     CNL2_FORM_REGEX = r'<form id="cnl_form-(.*?)</form>'
     CNL2_FORMINPUT_REGEX = r'<input.*?name="%s".*?value="(.*?)"'
     CNL2_JK_KEY = "jk"
     CNL2_CRYPTED_KEY = "crypted"
     DLC_LINK_REGEX = r'<a href=".*?" class="dlc_button" target="_blank">'
-    DLC_DOWNLOAD_URL = "http://www.relink.us/download.php"
+    DLC_DOWNLOAD_URL = r'http://www\.relink\.us/download\.php'
     WEB_FORWARD_REGEX = r"getFile\('(?P<link>.+)'\)"
-    WEB_FORWARD_URL = "http://www.relink.us/frame.php"
+    WEB_FORWARD_URL = r'http://www\.relink\.us/frame\.php'
     WEB_LINK_REGEX = r'<iframe name="Container" height="100%" frameborder="no" width="100%" src="(?P<link>.+)"></iframe>'
 
+
     def setup(self):
         self.fileid = None
         self.package = None
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index 4ba1a3c70..ade31df21 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -24,7 +24,7 @@ from module.common.json_layer import json_loads
 from module.plugins.Crypter import Crypter
 from module.utils import save_join
 
-API_KEY = "AIzaSyCKnWLNlkX-L4oD1aEzqqhRw1zczeD6_k0"
+API_URL = "AIzaSyCKnWLNlkX-L4oD1aEzqqhRw1zczeD6_k0"
 
 
 class YoutubeBatch(Crypter):
-- 
cgit v1.2.3


From 48c0c42fd6faffc56432d5f037cd575979f180cc Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 14 Jul 2014 02:23:37 +0200
Subject: Removed all @author flags + key attributes cleanup for internal &
 hooks plugins

---
 module/plugins/crypter/DailymotionBatch.py  | 2 --
 module/plugins/crypter/DlProtectCom.py      | 2 --
 module/plugins/crypter/DontKnowMe.py        | 2 +-
 module/plugins/crypter/ILoadTo.py           | 2 +-
 module/plugins/crypter/LinkdecrypterCom.py  | 2 --
 module/plugins/crypter/MultiUpOrg.py        | 2 --
 module/plugins/crypter/RSLayerCom.py        | 2 +-
 module/plugins/crypter/TnyCz.py             | 2 --
 module/plugins/crypter/TusfilesNetFolder.py | 2 --
 module/plugins/crypter/WiiReloadedOrg.py    | 2 +-
 module/plugins/crypter/YoutubeBatch.py      | 2 --
 11 files changed, 4 insertions(+), 18 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py
index 5c0dd9cec..e13f267f4 100644
--- a/module/plugins/crypter/DailymotionBatch.py
+++ b/module/plugins/crypter/DailymotionBatch.py
@@ -13,8 +13,6 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, see <http://www.gnu.org/licenses/>.
-
-    @author: Walter Purcaro
 """
 
 from urlparse import urljoin
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index 780708884..f9214f0c8 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -12,8 +12,6 @@
 #
 #  You should have received a copy of the GNU Affero General Public License
 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-#  @author: Walter Purcaro
 ###############################################################################
 
 import re
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index 092834325..4a4b6f292 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -13,7 +13,7 @@ class DontKnowMe(Crypter):
     __version__ = "0.1"
     __description__ = """DontKnow.me decrypter plugin"""
     __author_name__ = "selaux"
-    __author_mail__ = ""
+    __author_mail__ = None
 
     LINK_PATTERN = r'http://dontknow.me/at/\?(.+)$'
 
diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py
index 3a388d41f..a9547c2b2 100644
--- a/module/plugins/crypter/ILoadTo.py
+++ b/module/plugins/crypter/ILoadTo.py
@@ -10,4 +10,4 @@ class ILoadTo(DeadCrypter):
     __version__ = "0.11"
     __description__ = """Iload.to decrypter plugin"""
     __author_name__ = "hzpz"
-    __author_mail__ = ""
+    __author_mail__ = None
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index a6e6faa40..1ec396962 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -13,8 +13,6 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, see <http://www.gnu.org/licenses/>.
-
-    @author: zoidberg
 """
 
 import re
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index 997d60862..a565b3888 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -13,8 +13,6 @@
 #
 #  You should have received a copy of the GNU Affero General Public License
 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-#  @author: Walter Purcaro
 ###############################################################################
 
 import re
diff --git a/module/plugins/crypter/RSLayerCom.py b/module/plugins/crypter/RSLayerCom.py
index 9f1a9a394..13f4ed4bd 100644
--- a/module/plugins/crypter/RSLayerCom.py
+++ b/module/plugins/crypter/RSLayerCom.py
@@ -10,4 +10,4 @@ class RSLayerCom(DeadCrypter):
     __version__ = "0.21"
     __description__ = """RS-Layer.com decrypter plugin"""
     __author_name__ = "hzpz"
-    __author_mail__ = ""
+    __author_mail__ = None
diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py
index 6c56f7639..aed7c3cf9 100644
--- a/module/plugins/crypter/TnyCz.py
+++ b/module/plugins/crypter/TnyCz.py
@@ -13,8 +13,6 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, see <http://www.gnu.org/licenses/>.
-
-    @author: Walter Purcaro
 """
 
 from module.plugins.internal.SimpleCrypter import SimpleCrypter
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index 5ee32379d..59aef3372 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -12,8 +12,6 @@
 #
 #  You should have received a copy of the GNU Affero General Public License
 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-#  @author: Walter Purcaro
 ###############################################################################
 
 import math
diff --git a/module/plugins/crypter/WiiReloadedOrg.py b/module/plugins/crypter/WiiReloadedOrg.py
index 0b983c705..7274b4a84 100644
--- a/module/plugins/crypter/WiiReloadedOrg.py
+++ b/module/plugins/crypter/WiiReloadedOrg.py
@@ -10,4 +10,4 @@ class WiiReloadedOrg(DeadCrypter):
     __version__ = "0.11"
     __description__ = """Wii-Reloaded.org decrypter plugin"""
     __author_name__ = "hzpz"
-    __author_mail__ = ""
+    __author_mail__ = None
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index ade31df21..1af9475eb 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -13,8 +13,6 @@
 
     You should have received a copy of the GNU General Public License
     along with this program; if not, see <http://www.gnu.org/licenses/>.
-
-    @author: Walter Purcaro
 """
 
 from urlparse import urljoin
-- 
cgit v1.2.3


From 5060e4c6374a5116d0d8b02528f910f8c5f8bcf9 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 15 Jul 2014 16:25:41 +0200
Subject: Fix code indentation, some bad whitespaces and missing authors + use
 'not' instead 'is None' + replace __pattern__'s r" with r' + other minor
 cosmetics

---
 module/plugins/crypter/CzshareComFolder.py   |  3 ++-
 module/plugins/crypter/DuckCryptInfo.py      |  1 -
 module/plugins/crypter/FilerNetFolder.py     |  2 +-
 module/plugins/crypter/FileserveComFolder.py |  3 ++-
 module/plugins/crypter/ImgurComAlbum.py      |  2 +-
 module/plugins/crypter/LetitbitNetFolder.py  |  2 +-
 module/plugins/crypter/LinkSaveIn.py         |  9 +++------
 module/plugins/crypter/MultiUpOrg.py         |  2 +-
 module/plugins/crypter/NCryptIn.py           | 12 ++++--------
 module/plugins/crypter/NetfolderIn.py        |  3 +--
 module/plugins/crypter/QuickshareCzFolder.py |  2 +-
 module/plugins/crypter/RelinkUs.py           |  3 ---
 module/plugins/crypter/SafelinkingNet.py     |  6 +++---
 module/plugins/crypter/ShareLinksBiz.py      |  5 +----
 module/plugins/crypter/UlozToFolder.py       |  2 +-
 15 files changed, 22 insertions(+), 35 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index d1ba8335c..c3606fdab 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -22,7 +22,8 @@ class CzshareComFolder(Crypter):
 
         new_links = []
         found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-        if found is None: self.fail("Parse error (FOLDER)")
+        if not found:
+            self.fail("Parse error (FOLDER)")
         new_links.extend(re.findall(self.LINK_PATTERN, found.group(1)))
 
         if new_links:
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index f44bac2e9..4cd3ec197 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -32,7 +32,6 @@ class DuckCryptInfo(Crypter):
         else:
             self.handleFolder(found)
 
-
     def handleFolder(self, found):
         src = self.load("http://duckcrypt.info/ajax/auth.php?hash=" + str(found.group(2)))
         found = re.match(self.__pattern__, src)
diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
index 70c932d00..c4cf658bd 100644
--- a/module/plugins/crypter/FilerNetFolder.py
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -8,7 +8,7 @@ class FilerNetFolder(SimpleCrypter):
     __type__ = "crypter"
     __version__ = "0.3"
     __description__ = """Filer.net decrypter plugin"""
-    __pattern__ = r"https?://filer\.net/folder/\w{16}"
+    __pattern__ = r'https?://filer\.net/folder/\w{16}'
     __author_name_ = ("nath_schwarz", "stickell")
     __author_mail_ = ("nathan.notwhite@gmail.com", "l.stickell@yahoo.it")
 
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index c3c8b58fe..74d7806e6 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -23,7 +23,8 @@ class FileserveComFolder(Crypter):
         new_links = []
 
         folder = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-        if folder is None: self.fail("Parse error (FOLDER)")
+        if not folder:
+            self.fail("Parse error (FOLDER)")
 
         new_links.extend(re.findall(self.LINK_PATTERN, folder.group(1)))
 
diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index 267f92e1a..79306fc6c 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -9,7 +9,7 @@ class ImgurComAlbum(SimpleCrypter):
     __type__ = "crypter"
     __version__ = "0.4"
     __description__ = """Imgur.com decrypter plugin"""
-    __pattern__ = r"https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}"
+    __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}'
     __author_name_ = "nath_schwarz"
     __author_mail_ = "nathan.notwhite@gmail.com"
 
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index 8e994984b..8ae2ad118 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -22,7 +22,7 @@ class LetitbitNetFolder(Crypter):
         new_links = []
 
         folder = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-        if folder is None:
+        if not folder:
             self.fail("Parse error (FOLDER)")
 
         new_links.extend(re.findall(self.LINK_PATTERN, folder.group(0)))
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 13277e3f3..e4497eb09 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -37,7 +37,6 @@ class LinkSaveIn(Crypter):
         self.preferred_sources = ['cnl2', 'rsdf', 'ccf', 'dlc', 'web']
 
     def decrypt(self, pyfile):
-
         # Init
         self.package = pyfile.package()
         self.fileid = re.match(self.__pattern__, pyfile.url).group('id')
@@ -124,11 +123,11 @@ class LinkSaveIn(Crypter):
                 self.correctCaptcha()
 
     def handleLinkSource(self, type_):
-        if type_ == 'cnl2':
+        if type_ == "cnl2":
             return self.handleCNL2()
-        elif type_ in ('rsdf', 'ccf', 'dlc'):
+        elif type_ in ("rsdf", "ccf", "dlc"):
             return self.handleContainer(type_)
-        elif type_ == 'web':
+        elif type_ == "web":
             return self.handleWebLinks()
         else:
             self.fail('unknown source type "%s" (this is probably a bug)' % type_)
@@ -189,7 +188,6 @@ class LinkSaveIn(Crypter):
         return package_links
 
     def _getCipherParams(self):
-
         # Get jk
         jk_re = r'<INPUT.*?NAME="%s".*?VALUE="(.*?)"' % LinkSaveIn._JK_KEY_
         vjk = re.findall(jk_re, self.html)
@@ -203,7 +201,6 @@ class LinkSaveIn(Crypter):
         return vcrypted, vjk
 
     def _getLinks(self, crypted, jk):
-
         # Get key
         jreturn = self.js.eval("%s f()" % jk)
         self.logDebug("JsEngine returns value [%s]" % jreturn)
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index a565b3888..d08daaf75 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -24,7 +24,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class MultiUpOrg(SimpleCrypter):
     __name__ = "MultiUpOrg"
     __type__ = "crypter"
-    __pattern__ = r"http://(?:www\.)?multiup\.org/(en|fr)/(?P<TYPE>project|download|miror)/\w+(/\w+)?"
+    __pattern__ = r'http://(?:www\.)?multiup\.org/(en|fr)/(?P<TYPE>project|download|miror)/\w+(/\w+)?'
     __version__ = "0.01"
     __description__ = """MultiUp.org crypter plugin"""
     __author_name__ = "Walter Purcaro"
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index eacd4aa8d..cadf2760f 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -32,7 +32,6 @@ class NCryptIn(Crypter):
         self.protection_type = None
 
     def decrypt(self, pyfile):
-
         # Init
         self.package = pyfile.package()
         package_links = []
@@ -75,7 +74,7 @@ class NCryptIn(Crypter):
 
     def isSingleLink(self):
         link_type = re.match(self.__pattern__, self.pyfile.url).group('type')
-        return link_type in ('link', 'frame')
+        return link_type in ("link", "frame")
 
     def requestFolderHome(self):
         return self.load(self.pyfile.url, decode=True)
@@ -163,7 +162,6 @@ class NCryptIn(Crypter):
         return self.load(self.pyfile.url, post=postData, decode=True)
 
     def handleErrors(self):
-
         if self.protection_type == "password":
             if "This password is invalid!" in self.cleanedHtml:
                 self.logDebug("Incorrect password, please set right password on 'Edit package' form and retry")
@@ -178,9 +176,8 @@ class NCryptIn(Crypter):
                 self.correctCaptcha()
 
     def handleLinkSource(self, link_source_type):
-
         # Check for JS engine
-        require_js_engine = link_source_type in ('cnl2', 'rsdf', 'ccf', 'dlc')
+        require_js_engine = link_source_type in ("cnl2", "rsdf", "ccf", "dlc")
         if require_js_engine and not self.js:
             self.logDebug("No JS engine available, skip %s links" % link_source_type)
             return []
@@ -190,9 +187,9 @@ class NCryptIn(Crypter):
             return self.handleSingleLink()
         if link_source_type == 'cnl2':
             return self.handleCNL2()
-        elif link_source_type in ('rsdf', 'ccf', 'dlc'):
+        elif link_source_type in ("rsdf", "ccf", "dlc"):
             return self.handleContainer(link_source_type)
-        elif link_source_type == 'web':
+        elif link_source_type == "web":
             return self.handleWebLinks()
         else:
             self.fail('unknown source type "%s" (this is probably a bug)' % link_source_type)
@@ -279,7 +276,6 @@ class NCryptIn(Crypter):
         return vcrypted, vjk
 
     def _getLinks(self, crypted, jk):
-
         # Get key
         jreturn = self.js.eval("%s f()" % jk)
         self.logDebug("JsEngine returns value [%s]" % jreturn)
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 28ee3a9dd..286b9366b 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -23,7 +23,7 @@ class NetfolderIn(SimpleCrypter):
         # Check for password protection    
         if self.isPasswordProtected():
             self.html = self.submitPassword()
-            if self.html is None:
+            if not self.html:
                 self.fail("Incorrect password, please set right password on Add package form and retry")
 
         # Get package name and folder
@@ -36,7 +36,6 @@ class NetfolderIn(SimpleCrypter):
         self.packages = [(package_name, package_links, folder_name)]
 
     def isPasswordProtected(self):
-
         if '<input type="password" name="password"' in self.html:
             self.logDebug("Links are password protected")
             return True
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index 13d7671bf..a412a5d18 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -21,7 +21,7 @@ class QuickshareCzFolder(Crypter):
 
         new_links = []
         found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-        if found is None:
+        if not found:
             self.fail("Parse error (FOLDER)")
         new_links.extend(re.findall(self.LINK_PATTERN, found.group(1)))
 
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index f6503374f..f5c158d2e 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -51,7 +51,6 @@ class RelinkUs(Crypter):
         self.captcha = False
 
     def decrypt(self, pyfile):
-
         # Init
         self.initPackage(pyfile)
 
@@ -226,7 +225,6 @@ class RelinkUs(Crypter):
         return package_links
 
     def _getCipherParams(self, cnl2_form):
-
         # Get jk
         jk_re = self.CNL2_FORMINPUT_REGEX % self.CNL2_JK_KEY
         vjk = re.findall(jk_re, cnl2_form, re.IGNORECASE)
@@ -240,7 +238,6 @@ class RelinkUs(Crypter):
         return vcrypted, vjk
 
     def _getLinks(self, crypted, jk):
-
         # Get key
         jreturn = self.js.eval("%s f()" % jk)
         self.logDebug("JsEngine returns value [%s]" % jreturn)
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index 4a907c28d..cb2617168 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -10,10 +10,10 @@ from module.lib.BeautifulSoup import BeautifulSoup
 
 
 class SafelinkingNet(Crypter):
-    __name__ = 'SafelinkingNet'
-    __type__ = 'crypter'
+    __name__ = "SafelinkingNet"
+    __type__ = "crypter"
     __pattern__ = r'https?://(?:www\.)?safelinking.net/([pd])/\w+'
-    __version__ = '0.1'
+    __version__ = "0.1"
     __description__ = """Safelinking.net decrypter plugin"""
     __author_name__ = "quareevo"
     __author_mail__ = "quareevo@arcor.de"
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index bd23d4751..4ea5955db 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -25,7 +25,6 @@ class ShareLinksBiz(Crypter):
         self.captcha = False
 
     def decrypt(self, pyfile):
-
         # Init
         self.initFile(pyfile)
 
@@ -111,7 +110,7 @@ class ShareLinksBiz(Crypter):
 
         # Resolve captcha
         href = self._resolveCoords(coords, captchaMap)
-        if href is None:
+        if not href:
             self.logDebug("Invalid captcha resolving, retrying")
             self.invalidCaptcha()
             self.setWait(5, False)
@@ -223,7 +222,6 @@ class ShareLinksBiz(Crypter):
         return package_links
 
     def _getCipherParams(self):
-
         # Request CNL2
         code = re.search(r'ClicknLoad.swf\?code=(.*?)"', self.html).group(1)
         url = "%s/get/cnl2/%s" % (self.baseUrl, code)
@@ -244,7 +242,6 @@ class ShareLinksBiz(Crypter):
         return crypted, jk
 
     def _getLinks(self, crypted, jk):
-
         # Get key
         jreturn = self.js.eval("%s f()" % jk)
         self.logDebug("JsEngine returns value [%s]" % jreturn)
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index eebb14497..6c7729fee 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -24,7 +24,7 @@ class UlozToFolder(Crypter):
         for i in xrange(1, 100):
             self.logInfo("Fetching links from page %i" % i)
             found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-            if found is None:
+            if not found:
                 self.fail("Parse error (FOLDER)")
 
             new_links.extend(re.findall(self.LINK_PATTERN, found.group(1)))
-- 
cgit v1.2.3


From 7b8c458cca7d21a029620f98e453f746fce69cd1 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 14 Jul 2014 16:10:01 +0200
Subject: Prefer single quote for dict key name

---
 module/plugins/crypter/DailymotionBatch.py  | 16 ++++-----
 module/plugins/crypter/DlProtectCom.py      |  4 +--
 module/plugins/crypter/DuckCryptInfo.py     |  2 +-
 module/plugins/crypter/HoerbuchIn.py        |  2 +-
 module/plugins/crypter/LinkSaveIn.py        |  2 +-
 module/plugins/crypter/NCryptIn.py          |  2 +-
 module/plugins/crypter/RelinkUs.py          |  4 +--
 module/plugins/crypter/SafelinkingNet.py    | 12 +++----
 module/plugins/crypter/SerienjunkiesOrg.py  | 50 ++++++++++++++---------------
 module/plugins/crypter/TurbobitNetFolder.py |  6 ++--
 module/plugins/crypter/YoutubeBatch.py      | 50 ++++++++++++++---------------
 11 files changed, 75 insertions(+), 75 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py
index e13f267f4..d9309af90 100644
--- a/module/plugins/crypter/DailymotionBatch.py
+++ b/module/plugins/crypter/DailymotionBatch.py
@@ -45,8 +45,8 @@ class DailymotionBatch(Crypter):
         if "error" in playlist:
             return
 
-        name = playlist["name"]
-        owner = playlist["owner.screenname"]
+        name = playlist['name']
+        owner = playlist['owner.screenname']
         return name, owner
 
     def _getPlaylists(self, user_id, page=1):
@@ -57,10 +57,10 @@ class DailymotionBatch(Crypter):
         if "error" in user:
             return
 
-        for playlist in user["list"]:
-            yield playlist["id"]
+        for playlist in user['list']:
+            yield playlist['id']
 
-        if user["has_more"]:
+        if user['has_more']:
             for item in self._getPlaylists(user_id, page + 1):
                 yield item
 
@@ -75,10 +75,10 @@ class DailymotionBatch(Crypter):
         if "error" in playlist:
             return
 
-        for video in playlist["list"]:
-            yield video["url"]
+        for video in playlist['list']:
+            yield video['url']
 
-        if playlist["has_more"]:
+        if playlist['has_more']:
             for item in self._getVideos(id, page + 1):
                 yield item
 
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index f9214f0c8..5ef8eab21 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -53,14 +53,14 @@ class DlProtectCom(SimpleCrypter):
             post_req.update({"i": b64time, "submitform": "Decrypt+link"})
 
             if ">Password :" in self.html:
-                post_req["pwd"] = self.getPassword()
+                post_req['pwd'] = self.getPassword()
 
             if ">Security Code" in self.html:
                 captcha_id = re.search(r'/captcha\.php\?uid=(.+?)"', self.html).group(1)
                 captcha_url = "http://www.dl-protect.com/captcha.php?uid=" + captcha_id
                 captcha_code = self.decryptCaptcha(captcha_url, imgtype="gif")
 
-                post_req["secure"] = captcha_code
+                post_req['secure'] = captcha_code
 
         self.html = self.load(self.pyfile.url, post=post_req)
 
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 4cd3ec197..bbf6e6b0d 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -49,7 +49,7 @@ class DuckCryptInfo(Crypter):
     def handleLink(self, url):
         src = self.load(url)
         soup = BeautifulSoup(src)
-        link = soup.find("iframe")["src"]
+        link = soup.find("iframe")['src']
         if not link:
             self.logDebug('no links found - (Plugin out of date?)')
         else:
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index c6773b3f0..06a15fc65 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -28,7 +28,7 @@ class HoerbuchIn(Crypter):
             abookname = soup.find("a", attrs={"rel": "bookmark"}).text
             for a in soup.findAll("a", attrs={"href": self.protection}):
                 package = "%s (%s)" % (abookname, a.previousSibling.previousSibling.text[:-1])
-                links = self.decryptFolder(a["href"])
+                links = self.decryptFolder(a['href'])
 
                 self.packages.append((package, links, pyfile.package().folder))
         else:
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index e4497eb09..5fde4e958 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -34,7 +34,7 @@ class LinkSaveIn(Crypter):
         self.fileid = None
         self.captcha = False
         self.package = None
-        self.preferred_sources = ['cnl2', 'rsdf', 'ccf', 'dlc', 'web']
+        self.preferred_sources = ["cnl2", "rsdf", "ccf", "dlc", "web"]
 
     def decrypt(self, pyfile):
         # Init
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index cadf2760f..ec6533ffc 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -28,7 +28,7 @@ class NCryptIn(Crypter):
         self.package = None
         self.html = None
         self.cleanedHtml = None
-        self.links_source_order = ['cnl2', 'rsdf', 'ccf', 'dlc', 'web']
+        self.links_source_order = ["cnl2", "rsdf", "ccf", "dlc", "web"]
         self.protection_type = None
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index f5c158d2e..1187692a0 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -19,7 +19,7 @@ class RelinkUs(Crypter):
     __author_mail__ = "fragonib[AT]yahoo[DOT]es"
 
     # Constants
-    PREFERRED_LINK_SOURCES = ['cnl2', 'dlc', 'web']
+    PREFERRED_LINK_SOURCES = ["cnl2", "dlc", "web"]
 
     OFFLINE_TOKEN = r'<title>Tattooside'
     PASSWORD_TOKEN = r'container_password\.php'
@@ -197,7 +197,7 @@ class RelinkUs(Crypter):
             try:
                 dlc = self.load(container_url)
                 dlc_filename = self.fileid + ".dlc"
-                dlc_filepath = os.path.join(self.config["general"]["download_folder"], dlc_filename)
+                dlc_filepath = os.path.join(self.config['general']['download_folder'], dlc_filename)
                 f = open(dlc_filepath, "wb")
                 f.write(dlc)
                 f.close()
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index cb2617168..022f3e5ff 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -40,7 +40,7 @@ class SafelinkingNet(Crypter):
 
             if "link-password" in self.html:
                 password = pyfile.package().password
-                postData["link-password"] = password
+                postData['link-password'] = password
 
             if "altcaptcha" in self.html:
                 for _ in xrange(5):
@@ -53,8 +53,8 @@ class SafelinkingNet(Crypter):
                         self.fail("Error parsing captcha")
 
                     challenge, response = captcha.challenge(captchaKey)
-                    postData["adcopy_challenge"] = challenge
-                    postData["adcopy_response"] = response
+                    postData['adcopy_challenge'] = challenge
+                    postData['adcopy_response'] = response
 
                     self.html = self.load(url, post=postData)
                     if "The password you entered was incorrect" in self.html:
@@ -72,9 +72,9 @@ class SafelinkingNet(Crypter):
             if m:
                 linkDict = json_loads(m.group(1))
                 for link in linkDict:
-                    if not "http://" in link["full"]:
-                        packageLinks.append("https://safelinking.net/d/" + link["full"])
+                    if not "http://" in link['full']:
+                        packageLinks.append("https://safelinking.net/d/" + link['full'])
                     else:
-                        packageLinks.append(link["full"])
+                        packageLinks.append(link['full'])
 
             self.core.files.addLinks(packageLinks, pyfile.package().id)
diff --git a/module/plugins/crypter/SerienjunkiesOrg.py b/module/plugins/crypter/SerienjunkiesOrg.py
index 6fbbfedb3..ecca56209 100644
--- a/module/plugins/crypter/SerienjunkiesOrg.py
+++ b/module/plugins/crypter/SerienjunkiesOrg.py
@@ -51,9 +51,9 @@ class SerienjunkiesOrg(Crypter):
         package_links = []
         for a in nav.findAll("a"):
             if self.getConfig("changeNameSJ") == "Show":
-                package_links.append(a["href"])
+                package_links.append(a['href'])
             else:
-                package_links.append(a["href"] + "#hasName")
+                package_links.append(a['href'] + "#hasName")
         if self.getConfig("changeNameSJ") == "Show":
             self.packages.append((packageName, package_links, packageName))
         else:
@@ -85,32 +85,32 @@ class SerienjunkiesOrg(Crypter):
                     opts[n.strip()] = val.strip()
                 gid += 1
                 groups[gid] = {}
-                groups[gid]["ep"] = {}
-                groups[gid]["opts"] = opts
+                groups[gid]['ep'] = {}
+                groups[gid]['opts'] = opts
             elif re.search("<strong>Download:", str(p)):
                 parts = str(p).split("<br />")
                 if re.search("<strong>", parts[0]):
                     ename = re.search('<strong>(.*?)</strong>', parts[0]).group(1).strip().decode("utf-8").replace(
                         "&#8211;", "-")
-                    groups[gid]["ep"][ename] = {}
+                    groups[gid]['ep'][ename] = {}
                     parts.remove(parts[0])
                     for part in parts:
                         hostername = re.search(r" \| ([-a-zA-Z0-9]+\.\w+)", part)
                         if hostername:
                             hostername = hostername.group(1)
-                            groups[gid]["ep"][ename][hostername] = []
+                            groups[gid]['ep'][ename][hostername] = []
                             links = re.findall('href="(.*?)"', part)
                             for link in links:
-                                groups[gid]["ep"][ename][hostername].append(link + "#hasName")
+                                groups[gid]['ep'][ename][hostername].append(link + "#hasName")
 
         links = []
         for g in groups.values():
-            for ename in g["ep"]:
-                links.extend(self.getpreferred(g["ep"][ename]))
+            for ename in g['ep']:
+                links.extend(self.getpreferred(g['ep'][ename]))
                 if self.getConfig("changeNameSJ") == "Episode":
                     self.packages.append((ename, links, ename))
                     links = []
-            package = "%s (%s, %s)" % (seasonName, g["opts"]["Format"], g["opts"]["Sprache"])
+            package = "%s (%s, %s)" % (seasonName, g['opts']['Format'], g['opts']['Sprache'])
             if self.getConfig("changeNameSJ") == "Format":
                 self.packages.append((package, links, package))
                 links = []
@@ -135,12 +135,12 @@ class SerienjunkiesOrg(Crypter):
                     sleep(5)
                     self.retry()
 
-                captchaUrl = "http://download.serienjunkies.org" + captchaTag["src"]
+                captchaUrl = "http://download.serienjunkies.org" + captchaTag['src']
                 result = self.decryptCaptcha(str(captchaUrl), imgtype="png")
                 sinp = form.find(attrs={"name": "s"})
 
                 self.req.lastURL = str(url)
-                sj = self.load(str(url), post={'s': sinp["value"], 'c': result, 'action': "Download"})
+                sj = self.load(str(url), post={'s': sinp['value'], 'c': result, 'action': "Download"})
 
                 soup = BeautifulSoup(sj)
             rawLinks = soup.findAll(attrs={"action": re.compile("^http://download.serienjunkies.org/")})
@@ -154,7 +154,7 @@ class SerienjunkiesOrg(Crypter):
 
             links = []
             for link in rawLinks:
-                frameUrl = link["action"].replace("/go-", "/frame/go-")
+                frameUrl = link['action'].replace("/go-", "/frame/go-")
                 links.append(self.handleFrame(frameUrl))
             if re.search("#hasName", url) or ((self.getConfig("changeNameSJ") == "Packagename") and
                                               (self.getConfig("changeNameDJ") == "Packagename")):
@@ -171,12 +171,12 @@ class SerienjunkiesOrg(Crypter):
         soup = BeautifulSoup(sj)
         form = soup.find("form", attrs={"action": re.compile("^http://serienjunkies.org")})
         captchaTag = form.find(attrs={"src": re.compile("^/safe/secure/")})
-        captchaUrl = "http://serienjunkies.org" + captchaTag["src"]
+        captchaUrl = "http://serienjunkies.org" + captchaTag['src']
         result = self.decryptCaptcha(str(captchaUrl))
-        url = form["action"]
+        url = form['action']
         sinp = form.find(attrs={"name": "s"})
 
-        self.req.load(str(url), post={'s': sinp["value"], 'c': result, 'dl.start': "Download"}, cookies=False,
+        self.req.load(str(url), post={'s': sinp['value'], 'c': result, 'dl.start': "Download"}, cookies=False,
                       just_header=True)
         decrypted = self.req.lastEffectiveURL
         if decrypted == str(url):
@@ -215,32 +215,32 @@ class SerienjunkiesOrg(Crypter):
                     opts[n.strip()] = val.strip()
                 gid += 1
                 groups[gid] = {}
-                groups[gid]["ep"] = {}
-                groups[gid]["opts"] = opts
+                groups[gid]['ep'] = {}
+                groups[gid]['opts'] = opts
             elif re.search("<strong>Download:", str(p)):
                 parts = str(p).split("<br />")
                 if re.search("<strong>", parts[0]):
                     ename = re.search('<strong>(.*?)</strong>', parts[0]).group(1).strip().decode("utf-8").replace(
                         "&#8211;", "-")
-                    groups[gid]["ep"][ename] = {}
+                    groups[gid]['ep'][ename] = {}
                     parts.remove(parts[0])
                     for part in parts:
                         hostername = re.search(r" \| ([-a-zA-Z0-9]+\.\w+)", part)
                         if hostername:
                             hostername = hostername.group(1)
-                            groups[gid]["ep"][ename][hostername] = []
+                            groups[gid]['ep'][ename][hostername] = []
                             links = re.findall('href="(.*?)"', part)
                             for link in links:
-                                groups[gid]["ep"][ename][hostername].append(link + "#hasName")
+                                groups[gid]['ep'][ename][hostername].append(link + "#hasName")
 
         links = []
         for g in groups.values():
-            for ename in g["ep"]:
-                links.extend(self.getpreferred(g["ep"][ename]))
+            for ename in g['ep']:
+                links.extend(self.getpreferred(g['ep'][ename]))
                 if self.getConfig("changeNameDJ") == "Episode":
                     self.packages.append((ename, links, ename))
                     links = []
-            package = "%s (%s, %s)" % (seasonName, g["opts"]["Format"], g["opts"]["Sprache"])
+            package = "%s (%s, %s)" % (seasonName, g['opts']['Format'], g['opts']['Sprache'])
             if self.getConfig("changeNameDJ") == "Format":
                 self.packages.append((package, links, package))
                 links = []
@@ -255,7 +255,7 @@ class SerienjunkiesOrg(Crypter):
         soup = BeautifulSoup(src)
         content = soup.find("div", attrs={"id": "content"})
         for a in content.findAll("a", attrs={"rel": "bookmark"}):
-            package_links.append(a["href"])
+            package_links.append(a['href'])
         self.core.files.addLinks(package_links, self.pyfile.package().id)
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index d9e63b4ce..2dcd65757 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -36,9 +36,9 @@ class TurbobitNetFolder(SimpleCrypter):
                              get={"rootId": id, "rows": 200, "page": page}, decode=True)
         grid = json_loads(gridFile)
 
-        if grid["rows"]:
-            for i in grid["rows"]:
-                yield i["id"]
+        if grid['rows']:
+            for i in grid['rows']:
+                yield i['id']
             for id in self._getLinks(id, page + 1):
                 yield id
         else:
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index 1af9475eb..dd5d937d5 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -45,21 +45,21 @@ class YoutubeBatch(Crypter):
 
     def getChannel(self, user):
         channels = self.api_response("channels", {"part": "id,snippet,contentDetails", "forUsername": user, "maxResults": "50"})
-        if channels["items"]:
-            channel = channels["items"][0]
-            return {"id": channel["id"],
-                    "title": channel["snippet"]["title"],
-                    "relatedPlaylists": channel["contentDetails"]["relatedPlaylists"],
+        if channels['items']:
+            channel = channels['items'][0]
+            return {"id": channel['id'],
+                    "title": channel['snippet']['title'],
+                    "relatedPlaylists": channel['contentDetails']['relatedPlaylists'],
                     "user": user}  # One lone channel for user?
 
     def getPlaylist(self, p_id):
         playlists = self.api_response("playlists", {"part": "snippet", "id": p_id})
-        if playlists["items"]:
-            playlist = playlists["items"][0]
+        if playlists['items']:
+            playlist = playlists['items'][0]
             return {"id": p_id,
-                    "title": playlist["snippet"]["title"],
-                    "channelId": playlist["snippet"]["channelId"],
-                    "channelTitle": playlist["snippet"]["channelTitle"]}
+                    "title": playlist['snippet']['title'],
+                    "channelId": playlist['snippet']['channelId'],
+                    "channelTitle": playlist['snippet']['channelTitle']}
 
     def _getPlaylists(self, id, token=None):
         req = {"part": "id", "maxResults": "50", "channelId": id}
@@ -68,11 +68,11 @@ class YoutubeBatch(Crypter):
 
         playlists = self.api_response("playlists", req)
 
-        for playlist in playlists["items"]:
-            yield playlist["id"]
+        for playlist in playlists['items']:
+            yield playlist['id']
 
         if "nextPageToken" in playlists:
-            for item in self._getPlaylists(id, playlists["nextPageToken"]):
+            for item in self._getPlaylists(id, playlists['nextPageToken']):
                 yield item
 
     def getPlaylists(self, ch_id):
@@ -85,11 +85,11 @@ class YoutubeBatch(Crypter):
 
         playlist = self.api_response("playlistItems", req)
 
-        for item in playlist["items"]:
-            yield item["contentDetails"]["videoId"]
+        for item in playlist['items']:
+            yield item['contentDetails']['videoId']
 
         if "nextPageToken" in playlist:
-            for item in self._getVideosId(id, playlist["nextPageToken"]):
+            for item in self._getVideosId(id, playlist['nextPageToken']):
                 yield item
 
     def getVideosId(self, p_id):
@@ -106,18 +106,18 @@ class YoutubeBatch(Crypter):
             channel = self.getChannel(user)
 
             if channel:
-                playlists = self.getPlaylists(channel["id"])
-                self.logDebug("%s playlist\s found on channel \"%s\"" % (len(playlists), channel["title"]))
+                playlists = self.getPlaylists(channel['id'])
+                self.logDebug("%s playlist\s found on channel \"%s\"" % (len(playlists), channel['title']))
 
-                relatedplaylist = {p_name: self.getPlaylist(p_id) for p_name, p_id in channel["relatedPlaylists"].iteritems()}
+                relatedplaylist = {p_name: self.getPlaylist(p_id) for p_name, p_id in channel['relatedPlaylists'].iteritems()}
                 self.logDebug("Channel's related playlists found = %s" % relatedplaylist.keys())
 
-                relatedplaylist["uploads"]["title"] = "Unplaylisted videos"
-                relatedplaylist["uploads"]["checkDups"] = True  #: checkDups flag
+                relatedplaylist['uploads']['title'] = "Unplaylisted videos"
+                relatedplaylist['uploads']['checkDups'] = True  #: checkDups flag
 
                 for p_name, p_data in relatedplaylist.iteritems():
                     if self.getConfig(p_name):
-                        p_data["title"] += " of " + user
+                        p_data['title'] += " of " + user
                         playlists.append(p_data)
             else:
                 playlists = []
@@ -131,9 +131,9 @@ class YoutubeBatch(Crypter):
         addedvideos = []
         urlize = lambda x: "https://www.youtube.com/watch?v=" + x
         for p in playlists:
-            p_name = p["title"]
-            p_videos = self.getVideosId(p["id"])
-            p_folder = save_join(self.config['general']['download_folder'], p["channelTitle"], p_name)
+            p_name = p['title']
+            p_videos = self.getVideosId(p['id'])
+            p_folder = save_join(self.config['general']['download_folder'], p['channelTitle'], p_name)
             self.logDebug("%s video\s found on playlist \"%s\"" % (len(p_videos), p_name))
 
             if not p_videos:
-- 
cgit v1.2.3


From 8e47b0de30a25d0fd5dfb518bfe4e1e7beff93fd Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 15 Jul 2014 16:27:44 +0200
Subject: Key attributes cleanup for account, container and crypter plugins

---
 module/plugins/crypter/BitshareComFolder.py     |  4 +++-
 module/plugins/crypter/C1neonCom.py             |  4 +++-
 module/plugins/crypter/ChipDe.py                |  5 ++++-
 module/plugins/crypter/CrockoComFolder.py       |  4 +++-
 module/plugins/crypter/CryptItCom.py            |  4 +++-
 module/plugins/crypter/CzshareComFolder.py      |  5 ++++-
 module/plugins/crypter/DDLMusicOrg.py           |  6 +++++-
 module/plugins/crypter/DailymotionBatch.py      |  5 ++++-
 module/plugins/crypter/DataHuFolder.py          |  5 ++++-
 module/plugins/crypter/DdlstorageComFolder.py   |  4 +++-
 module/plugins/crypter/DepositfilesComFolder.py |  4 +++-
 module/plugins/crypter/Dereferer.py             |  5 ++++-
 module/plugins/crypter/DlProtectCom.py          |  6 +++++-
 module/plugins/crypter/DontKnowMe.py            |  5 ++++-
 module/plugins/crypter/DuckCryptInfo.py         |  5 ++++-
 module/plugins/crypter/DuploadOrgFolder.py      |  4 +++-
 module/plugins/crypter/EasybytezComFolder.py    |  4 +++-
 module/plugins/crypter/EmbeduploadCom.py        |  7 +++++--
 module/plugins/crypter/FilebeerInfoFolder.py    |  4 +++-
 module/plugins/crypter/FilecloudIoFolder.py     |  4 +++-
 module/plugins/crypter/FilefactoryComFolder.py  |  5 ++++-
 module/plugins/crypter/FilerNetFolder.py        |  7 +++++--
 module/plugins/crypter/FileserveComFolder.py    |  5 ++++-
 module/plugins/crypter/FilestubeCom.py          |  4 +++-
 module/plugins/crypter/FiletramCom.py           |  4 +++-
 module/plugins/crypter/FiredriveComFolder.py    |  5 ++++-
 module/plugins/crypter/FourChanOrg.py           | 11 ++++++++---
 module/plugins/crypter/FreakhareComFolder.py    |  5 ++++-
 module/plugins/crypter/FreetexthostCom.py       |  5 ++++-
 module/plugins/crypter/FshareVnFolder.py        |  4 +++-
 module/plugins/crypter/GooGl.py                 |  5 ++++-
 module/plugins/crypter/HoerbuchIn.py            |  5 ++++-
 module/plugins/crypter/HotfileFolderCom.py      |  5 ++++-
 module/plugins/crypter/ILoadTo.py               |  4 +++-
 module/plugins/crypter/ImgurComAlbum.py         |  7 +++++--
 module/plugins/crypter/LetitbitNetFolder.py     |  5 ++++-
 module/plugins/crypter/LinkSaveIn.py            |  5 ++++-
 module/plugins/crypter/LinkdecrypterCom.py      |  6 +++++-
 module/plugins/crypter/LixIn.py                 |  5 ++++-
 module/plugins/crypter/LofCc.py                 |  4 +++-
 module/plugins/crypter/MBLinkInfo.py            |  4 +++-
 module/plugins/crypter/MediafireComFolder.py    |  4 +++-
 module/plugins/crypter/Movie2kTo.py             |  4 +++-
 module/plugins/crypter/MultiUpOrg.py            |  5 ++++-
 module/plugins/crypter/MultiloadCz.py           |  7 +++++--
 module/plugins/crypter/MultiuploadCom.py        |  7 +++++--
 module/plugins/crypter/NCryptIn.py              | 15 +++++++++------
 module/plugins/crypter/NetfolderIn.py           |  5 ++++-
 module/plugins/crypter/NosvideoCom.py           |  4 +++-
 module/plugins/crypter/OneKhDe.py               |  5 ++++-
 module/plugins/crypter/OronComFolder.py         |  4 +++-
 module/plugins/crypter/PastebinCom.py           |  4 +++-
 module/plugins/crypter/QuickshareCzFolder.py    |  5 ++++-
 module/plugins/crypter/RSLayerCom.py            |  4 +++-
 module/plugins/crypter/RelinkUs.py              |  4 +++-
 module/plugins/crypter/SafelinkingNet.py        |  9 ++++++---
 module/plugins/crypter/SecuredIn.py             |  4 +++-
 module/plugins/crypter/SerienjunkiesOrg.py      | 11 ++++++++---
 module/plugins/crypter/ShareLinksBiz.py         |  5 ++++-
 module/plugins/crypter/ShareRapidComFolder.py   |  4 +++-
 module/plugins/crypter/SpeedLoadOrgFolder.py    |  4 +++-
 module/plugins/crypter/StealthTo.py             |  5 ++++-
 module/plugins/crypter/TnyCz.py                 |  5 ++++-
 module/plugins/crypter/TrailerzoneInfo.py       |  4 +++-
 module/plugins/crypter/TurbobitNetFolder.py     |  5 ++++-
 module/plugins/crypter/TusfilesNetFolder.py     |  5 ++++-
 module/plugins/crypter/UlozToFolder.py          |  5 ++++-
 module/plugins/crypter/UploadedToFolder.py      |  5 ++++-
 module/plugins/crypter/WiiReloadedOrg.py        |  4 +++-
 module/plugins/crypter/XupPl.py                 |  5 ++++-
 module/plugins/crypter/YoutubeBatch.py          | 10 +++++++---
 71 files changed, 282 insertions(+), 89 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py
index 7139c26a6..2afe990df 100644
--- a/module/plugins/crypter/BitshareComFolder.py
+++ b/module/plugins/crypter/BitshareComFolder.py
@@ -19,9 +19,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class BitshareComFolder(SimpleCrypter):
     __name__ = "BitshareComFolder"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?bitshare\.com/\?d=\w+'
-    __version__ = "0.01"
+
     __description__ = """Bitshare.com folder decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
diff --git a/module/plugins/crypter/C1neonCom.py b/module/plugins/crypter/C1neonCom.py
index 8923cfc32..fc1188a11 100644
--- a/module/plugins/crypter/C1neonCom.py
+++ b/module/plugins/crypter/C1neonCom.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class C1neonCom(DeadCrypter):
     __name__ = "C1neonCom"
+    __version__ = "0.05"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?c1neon.com/.*?'
-    __version__ = "0.05"
+
     __description__ = """C1neon.com decrypter plugin"""
     __author_name__ = "godofdream"
     __author_mail__ = "soilfiction@gmail.com"
diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index 529ec6918..8e48b1085 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -6,13 +6,16 @@ from module.plugins.Crypter import Crypter
 
 class ChipDe(Crypter):
     __name__ = "ChipDe"
+    __version__ = "0.1"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?chip.de/video/.*\.html'
-    __version__ = "0.1"
+
     __description__ = """Chip.de decrypter plugin"""
     __author_name__ = "4Christopher"
     __author_mail__ = "4Christopher@gmx.de"
 
+
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url)
         try:
diff --git a/module/plugins/crypter/CrockoComFolder.py b/module/plugins/crypter/CrockoComFolder.py
index e64e63534..8215e23c4 100644
--- a/module/plugins/crypter/CrockoComFolder.py
+++ b/module/plugins/crypter/CrockoComFolder.py
@@ -5,9 +5,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class CrockoComFolder(SimpleCrypter):
     __name__ = "CrockoComFolder"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?crocko.com/f/.*'
-    __version__ = "0.01"
+
     __description__ = """Crocko.com folder decrypter plugin"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
diff --git a/module/plugins/crypter/CryptItCom.py b/module/plugins/crypter/CryptItCom.py
index 6f8fbaa1a..331ddd5c8 100644
--- a/module/plugins/crypter/CryptItCom.py
+++ b/module/plugins/crypter/CryptItCom.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class CryptItCom(DeadCrypter):
     __name__ = "CryptItCom"
+    __version__ = "0.11"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?crypt-it\.com/(s|e|d|c)/[\w]+'
-    __version__ = "0.11"
+
     __description__ = """Crypt-it.com decrypter plugin"""
     __author_name__ = "jeix"
     __author_mail__ = "jeix@hasnomail.de"
diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index c3606fdab..c60d5a87d 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -6,9 +6,11 @@ from module.plugins.Crypter import Crypter
 
 class CzshareComFolder(Crypter):
     __name__ = "CzshareComFolder"
+    __version__ = "0.2"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/folders/.*'
-    __version__ = "0.2"
+
     __description__ = """Czshare.com folder decrypter plugin, now Sdilej.cz"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
@@ -17,6 +19,7 @@ class CzshareComFolder(Crypter):
     LINK_PATTERN = r'<td class="col2"><a href="([^"]+)">info</a></td>'
     #NEXT_PAGE_PATTERN = r'<a class="next " href="/([^"]+)">&nbsp;</a>'
 
+
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py
index 27cff3f9d..fcdd507a7 100644
--- a/module/plugins/crypter/DDLMusicOrg.py
+++ b/module/plugins/crypter/DDLMusicOrg.py
@@ -1,6 +1,7 @@
 # -*- coding: utf-8 -*-
 
 import re
+
 from time import sleep
 
 from module.plugins.Crypter import Crypter
@@ -8,13 +9,16 @@ from module.plugins.Crypter import Crypter
 
 class DDLMusicOrg(Crypter):
     __name__ = "DDLMusicOrg"
+    __version__ = "0.3"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?ddl-music\.org/captcha/ddlm_cr\d\.php\?\d+\?\d+'
-    __version__ = "0.3"
+
     __description__ = """Ddl-music.org decrypter plugin"""
     __author_name__ = "mkaay"
     __author_mail__ = "mkaay@mkaay.de"
 
+
     def setup(self):
         self.multiDL = False
 
diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py
index d9309af90..c86c966d8 100644
--- a/module/plugins/crypter/DailymotionBatch.py
+++ b/module/plugins/crypter/DailymotionBatch.py
@@ -25,13 +25,16 @@ from module.utils import save_join
 
 class DailymotionBatch(Crypter):
     __name__ = "DailymotionBatch"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'https?://(?:www\.)?dailymotion\.com/((playlists/)?(?P<TYPE>playlist|user)/)?(?P<ID>[\w^_]+)(?(TYPE)|#)'
-    __version__ = "0.01"
+
     __description__ = """Dailymotion.com channel & playlist decrypter"""
     __author_name__ = "Walter Purcaro"
     __author_mail__ = "vuolter@gmail.com"
 
+
     def api_response(self, ref, req=None):
         url = urljoin("https://api.dailymotion.com/", ref)
         page = self.load(url, get=req)
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 04ef152fc..553936b1a 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -21,9 +21,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class DataHuFolder(SimpleCrypter):
     __name__ = "DataHuFolder"
+    __version__ = "0.03"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?data.hu/dir/\w+'
-    __version__ = "0.03"
+
     __description__ = """Data.hu folder decrypter plugin"""
     __author_name__ = ("crash", "stickell")
     __author_mail__ = "l.stickell@yahoo.it"
@@ -31,6 +33,7 @@ class DataHuFolder(SimpleCrypter):
     LINK_PATTERN = r"<a href='(http://data\.hu/get/.+)' target='_blank'>\1</a>"
     TITLE_PATTERN = ur'<title>(?P<title>.+) Let\xf6lt\xe9se</title>'
 
+
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url, decode=True)
 
diff --git a/module/plugins/crypter/DdlstorageComFolder.py b/module/plugins/crypter/DdlstorageComFolder.py
index ef43edc5b..4c79407e4 100644
--- a/module/plugins/crypter/DdlstorageComFolder.py
+++ b/module/plugins/crypter/DdlstorageComFolder.py
@@ -19,9 +19,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class DdlstorageComFolder(SimpleCrypter):
     __name__ = "DdlstorageComFolder"
+    __version__ = "0.02"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?ddlstorage.com/folder/\w{10}'
-    __version__ = "0.02"
+
     __description__ = """DDLStorage.com folder decrypter plugin"""
     __author_name__ = ("godofdream", "stickell")
     __author_mail__ = ("soilfiction@gmail.com", "l.stickell@yahoo.it")
diff --git a/module/plugins/crypter/DepositfilesComFolder.py b/module/plugins/crypter/DepositfilesComFolder.py
index 74d199e12..bb08b627b 100644
--- a/module/plugins/crypter/DepositfilesComFolder.py
+++ b/module/plugins/crypter/DepositfilesComFolder.py
@@ -5,9 +5,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class DepositfilesComFolder(SimpleCrypter):
     __name__ = "DepositfilesComFolder"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?depositfiles.com/folders/\w+'
-    __version__ = "0.01"
+
     __description__ = """Depositfiles.com folder decrypter plugin"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
diff --git a/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py
index 4b6309c17..6870f2f24 100644
--- a/module/plugins/crypter/Dereferer.py
+++ b/module/plugins/crypter/Dereferer.py
@@ -23,13 +23,16 @@ from module.plugins.Crypter import Crypter
 
 class Dereferer(Crypter):
     __name__ = "Dereferer"
+    __version__ = "0.1"
     __type__ = "crypter"
+
     __pattern__ = r'https?://([^/]+)/.*?(?P<url>(ht|f)tps?(://|%3A%2F%2F).*)'
-    __version__ = "0.1"
+
     __description__ = """Crypter for dereferers"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
 
+
     def decrypt(self, pyfile):
         link = re.match(self.__pattern__, pyfile.url).group('url')
         self.core.files.addLinks([urllib.unquote(link).rstrip('+')], pyfile.package().id)
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index 5ef8eab21..6bd6bc5b5 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -15,6 +15,7 @@
 ###############################################################################
 
 import re
+
 from base64 import urlsafe_b64encode
 from time import time
 
@@ -23,15 +24,18 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class DlProtectCom(SimpleCrypter):
     __name__ = "DlProtectCom"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?dl-protect\.com/((en|fr)/)?(?P<ID>\w+)'
-    __version__ = "0.01"
+
     __description__ = """Dl-protect.com decrypter plugin"""
     __author_name__ = "Walter Purcaro"
     __author_mail__ = "vuolter@gmail.com"
 
     OFFLINE_PATTERN = r'>Unfortunately, the link you are looking for is not found'
 
+
     def getLinks(self):
         # Direct link with redirect
         if not re.match(r"http://(?:www\.)?dl-protect\.com", self.req.http.lastEffectiveURL):
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index 4a4b6f292..d05355c2e 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -8,15 +8,18 @@ from module.plugins.Crypter import Crypter
 
 class DontKnowMe(Crypter):
     __name__ = "DontKnowMe"
+    __version__ = "0.1"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?dontknow.me/at/\?.+$'
-    __version__ = "0.1"
+
     __description__ = """DontKnow.me decrypter plugin"""
     __author_name__ = "selaux"
     __author_mail__ = None
 
     LINK_PATTERN = r'http://dontknow.me/at/\?(.+)$'
 
+
     def decrypt(self, pyfile):
         link = re.findall(self.LINK_PATTERN, pyfile.url)[0]
         self.core.files.addLinks([urllib.unquote(link)], pyfile.package().id)
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index bbf6e6b0d..6f5efdd1b 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -7,15 +7,18 @@ from module.plugins.Crypter import Crypter
 
 class DuckCryptInfo(Crypter):
     __name__ = "DuckCryptInfo"
+    __version__ = "0.02"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?duckcrypt.info/(folder|wait|link)/(\w+)/?(\w*)'
-    __version__ = "0.02"
+
     __description__ = """DuckCrypt.info decrypter plugin"""
     __author_name__ = "godofdream"
     __author_mail__ = "soilfiction@gmail.com"
 
     TIMER_PATTERN = r'<span id="timer">(.*)</span>'
 
+
     def decrypt(self, pyfile):
         url = pyfile.url
         # seems we don't need to wait
diff --git a/module/plugins/crypter/DuploadOrgFolder.py b/module/plugins/crypter/DuploadOrgFolder.py
index 4913bdf2e..f2b8da2bd 100644
--- a/module/plugins/crypter/DuploadOrgFolder.py
+++ b/module/plugins/crypter/DuploadOrgFolder.py
@@ -19,9 +19,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class DuploadOrgFolder(SimpleCrypter):
     __name__ = "DuploadOrgFolder"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?dupload\.org/folder/\d+/'
-    __version__ = "0.01"
+
     __description__ = """Dupload.org folder decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index 7a8ee5424..7c78b7946 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -19,9 +19,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class EasybytezComFolder(SimpleCrypter):
     __name__ = "EasybytezComFolder"
+    __version__ = "0.06"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
-    __version__ = "0.06"
+
     __description__ = """Easybytez.com decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index fbccf71aa..6126527a9 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -7,17 +7,20 @@ from module.network.HTTPRequest import BadHeader
 
 class EmbeduploadCom(Crypter):
     __name__ = "EmbeduploadCom"
+    __version__ = "0.02"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?embedupload.com/\?d=.*'
-    __version__ = "0.02"
-    __description__ = """EmbedUpload.com decrypter plugin"""
     __config__ = [("preferedHoster", "str", "Prefered hoster list (bar-separated) ", "embedupload"),
                   ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
+
+    __description__ = """EmbedUpload.com decrypter plugin"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
 
     LINK_PATTERN = r'<div id="([^"]+)"[^>]*>\s*<a href="([^"]+)" target="_blank" (?:class="DownloadNow"|style="color:red")>'
 
+
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url, decode=True)
         tmp_links = []
diff --git a/module/plugins/crypter/FilebeerInfoFolder.py b/module/plugins/crypter/FilebeerInfoFolder.py
index f5818e072..7a7528066 100644
--- a/module/plugins/crypter/FilebeerInfoFolder.py
+++ b/module/plugins/crypter/FilebeerInfoFolder.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class FilebeerInfoFolder(DeadCrypter):
     __name__ = "FilebeerInfoFolder"
+    __version__ = "0.02"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?filebeer\.info/(\d+~f).*'
-    __version__ = "0.02"
+
     __description__ = """Filebeer.info folder decrypter plugin"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
index bd07b823e..d3df7c469 100644
--- a/module/plugins/crypter/FilecloudIoFolder.py
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -19,9 +19,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FilecloudIoFolder(SimpleCrypter):
     __name__ = "FilecloudIoFolder"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+'
-    __version__ = "0.01"
+
     __description__ = """Filecloud.io folder decrypter plugin"""
     __author_name__ = "Walter Purcaro"
     __author_mail__ = "vuolter@gmail.com"
diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index 2147c48df..ce20ee6eb 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -5,9 +5,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FilefactoryComFolder(SimpleCrypter):
     __name__ = "FilefactoryComFolder"
+    __version__ = "0.2"
     __type__ = "crypter"
+
     __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+'
-    __version__ = "0.2"
+
     __description__ = """Filefactory.com folder decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
@@ -18,5 +20,6 @@ class FilefactoryComFolder(SimpleCrypter):
 
     SH_COOKIES = [('.filefactory.com', 'locale', 'en_US.utf8')]
 
+
     def loadPage(self, page_n):
         return self.load(self.pyfile.url, get={'page': page_n})
diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
index c4cf658bd..77e7409e9 100644
--- a/module/plugins/crypter/FilerNetFolder.py
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -5,15 +5,18 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FilerNetFolder(SimpleCrypter):
     __name__ = "FilerNetFolder"
-    __type__ = "crypter"
     __version__ = "0.3"
-    __description__ = """Filer.net decrypter plugin"""
+    __type__ = "crypter"
+
     __pattern__ = r'https?://filer\.net/folder/\w{16}'
+
+    __description__ = """Filer.net decrypter plugin"""
     __author_name_ = ("nath_schwarz", "stickell")
     __author_mail_ = ("nathan.notwhite@gmail.com", "l.stickell@yahoo.it")
 
     LINK_PATTERN = r'href="(/get/\w{16})">(?!<)'
     TITLE_PATTERN = r'<h3>(?P<title>.+) - <small'
 
+
     def getLinks(self):
         return ['http://filer.net%s' % link for link in re.findall(self.LINK_PATTERN, self.html)]
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index 74d7806e6..30662f02d 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -7,9 +7,11 @@ from module.plugins.Crypter import Crypter
 
 class FileserveComFolder(Crypter):
     __name__ = "FileserveComFolder"
+    __version__ = "0.11"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?fileserve.com/list/\w+'
-    __version__ = "0.11"
+
     __description__ = """FileServe.com folder decrypter plugin"""
     __author_name__ = "fionnc"
     __author_mail__ = "fionnc@gmail.com"
@@ -17,6 +19,7 @@ class FileserveComFolder(Crypter):
     FOLDER_PATTERN = r'<table class="file_list">(.*?)</table>'
     LINK_PATTERN = r'<a href="([^"]+)" class="sheet_icon wbold">'
 
+
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py
index ac67c33c9..7576319e0 100644
--- a/module/plugins/crypter/FilestubeCom.py
+++ b/module/plugins/crypter/FilestubeCom.py
@@ -19,9 +19,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FilestubeCom(SimpleCrypter):
     __name__ = "FilestubeCom"
+    __version__ = "0.03"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?filestube\.(?:com|to)/\w+'
-    __version__ = "0.03"
+
     __description__ = """Filestube.com decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index 5a587eda2..2491c1322 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -19,9 +19,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FiletramCom(SimpleCrypter):
     __name__ = "FiletramCom"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?filetram.com/[^/]+/.+'
-    __version__ = "0.01"
+
     __description__ = """Filetram.com decrypter plugin"""
     __author_name__ = ("igel", "stickell")
     __author_mail__ = ("igelkun@myopera.com", "l.stickell@yahoo.it")
diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py
index 97ba11037..c0db299b0 100644
--- a/module/plugins/crypter/FiredriveComFolder.py
+++ b/module/plugins/crypter/FiredriveComFolder.py
@@ -21,9 +21,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FiredriveComFolder(SimpleCrypter):
     __name__ = "FiredriveComFolder"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/share/.+'
-    __version__ = "0.01"
+
     __description__ = """Firedrive.com folder decrypter plugin"""
     __author_name__ = "Walter Purcaro"
     __author_mail__ = "vuolter@gmail.com"
@@ -33,6 +35,7 @@ class FiredriveComFolder(SimpleCrypter):
     OFFLINE_PATTERN = r'class="sad_face_image"|>No such page here.<'
     TEMP_OFFLINE_PATTERN = r'>(File Temporarily Unavailable|Server Error. Try again later)'
 
+
     def getLinks(self):
         return map(lambda x: "http://www.firedrive.com/%s/%s" %
                    ("share" if x[0] == "folder" else "file", x[1]),
diff --git a/module/plugins/crypter/FourChanOrg.py b/module/plugins/crypter/FourChanOrg.py
index 010451c46..dc0cdcb6c 100644
--- a/module/plugins/crypter/FourChanOrg.py
+++ b/module/plugins/crypter/FourChanOrg.py
@@ -1,4 +1,6 @@
 # -*- coding: utf-8 -*-
+# Based on 4chandl by Roland Beermann
+# https://gist.github.com/enkore/3492599
 
 import re
 
@@ -6,13 +8,16 @@ from module.plugins.Crypter import Crypter
 
 
 class FourChanOrg(Crypter):
-    # Based on 4chandl by Roland Beermann
-    # https://gist.github.com/enkore/3492599
     __name__ = "FourChanOrg"
-    __type__ = "crypter"
     __version__ = "0.3"
+    __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?boards\.4chan.org/\w+/res/(\d+)'
+
     __description__ = """4chan.org folder decrypter plugin"""
+    __author_name__ = None
+    __author_mail__ = None
+
 
     def decrypt(self, pyfile):
         pagehtml = self.load(pyfile.url)
diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py
index c5df7ff17..ddc05199b 100644
--- a/module/plugins/crypter/FreakhareComFolder.py
+++ b/module/plugins/crypter/FreakhareComFolder.py
@@ -21,9 +21,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FreakhareComFolder(SimpleCrypter):
     __name__ = "FreakhareComFolder"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?freakshare\.com/folder/.+'
-    __version__ = "0.01"
+
     __description__ = """Freakhare.com folder decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
@@ -32,6 +34,7 @@ class FreakhareComFolder(SimpleCrypter):
     TITLE_PATTERN = r'Folder:</b> (?P<title>.+)'
     PAGES_PATTERN = r'Pages: +(?P<pages>\d+)'
 
+
     def loadPage(self, page_n):
         if not hasattr(self, 'f_id') and not hasattr(self, 'f_md5'):
             m = re.search(r'http://freakshare.com/\?x=folder&f_id=(\d+)&f_md5=(\w+)', self.html)
diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py
index e5c9c3d21..d03805722 100644
--- a/module/plugins/crypter/FreetexthostCom.py
+++ b/module/plugins/crypter/FreetexthostCom.py
@@ -21,13 +21,16 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FreetexthostCom(SimpleCrypter):
     __name__ = "FreetexthostCom"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?freetexthost\.com/\w+'
-    __version__ = "0.01"
+
     __description__ = """Freetexthost.com decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
 
+
     def getLinks(self):
         m = re.search(r'<div id="contentsinner">\s*(.+)<div class="viewcount">', self.html, re.DOTALL)
         if not m:
diff --git a/module/plugins/crypter/FshareVnFolder.py b/module/plugins/crypter/FshareVnFolder.py
index 6e67905d9..9f5162125 100644
--- a/module/plugins/crypter/FshareVnFolder.py
+++ b/module/plugins/crypter/FshareVnFolder.py
@@ -5,9 +5,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FshareVnFolder(SimpleCrypter):
     __name__ = "FshareVnFolder"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?fshare.vn/folder/.*'
-    __version__ = "0.01"
+
     __description__ = """Fshare.vn folder decrypter plugin"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py
index 343bce5fd..37531c11e 100644
--- a/module/plugins/crypter/GooGl.py
+++ b/module/plugins/crypter/GooGl.py
@@ -20,15 +20,18 @@ from module.common.json_layer import json_loads
 
 class GooGl(Crypter):
     __name__ = "GooGl"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'https?://(?:www\.)?goo\.gl/\w+'
-    __version__ = "0.01"
+
     __description__ = """Goo.gl decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
 
     API_URL = "https://www.googleapis.com/urlshortener/v1/url"
 
+
     def decrypt(self, pyfile):
         rep = self.load(self.API_URL, get={'shortUrl': pyfile.url})
         self.logDebug('JSON data: ' + rep)
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index 06a15fc65..df81cc207 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -8,9 +8,11 @@ from module.lib.BeautifulSoup import BeautifulSoup, BeautifulStoneSoup
 
 class HoerbuchIn(Crypter):
     __name__ = "HoerbuchIn"
+    __version__ = "0.6"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?hoerbuch\.in/(wp/horbucher/\d+/.+/|tp/out.php\?.+|protection/folder_\d+\.html)'
-    __version__ = "0.6"
+
     __description__ = """Hoerbuch.in decrypter plugin"""
     __author_name__ = ("spoob", "mkaay")
     __author_mail__ = ("spoob@pyload.org", "mkaay@mkaay.de")
@@ -18,6 +20,7 @@ class HoerbuchIn(Crypter):
     article = re.compile("http://(?:www\.)?hoerbuch\.in/wp/horbucher/\d+/.+/")
     protection = re.compile("http://(?:www\.)?hoerbuch\.in/protection/folder_\d+.html")
 
+
     def decrypt(self, pyfile):
         self.pyfile = pyfile
 
diff --git a/module/plugins/crypter/HotfileFolderCom.py b/module/plugins/crypter/HotfileFolderCom.py
index 3a4a9d70a..02c937553 100644
--- a/module/plugins/crypter/HotfileFolderCom.py
+++ b/module/plugins/crypter/HotfileFolderCom.py
@@ -7,13 +7,16 @@ from module.plugins.Crypter import Crypter
 
 class HotfileFolderCom(Crypter):
     __name__ = "HotfileFolderCom"
+    __version__ = "0.1"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?hotfile.com/list/\w+/\w+'
-    __version__ = "0.1"
+
     __description__ = """Hotfile.com folder decrypter plugin"""
     __author_name__ = "RaNaN"
     __author_mail__ = "RaNaN@pyload.org"
 
+
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py
index a9547c2b2..e003e07f4 100644
--- a/module/plugins/crypter/ILoadTo.py
+++ b/module/plugins/crypter/ILoadTo.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class ILoadTo(DeadCrypter):
     __name__ = "ILoadTo"
+    __version__ = "0.11"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?iload\.to/go/\d+-[\w\.-]+/'
-    __version__ = "0.11"
+
     __description__ = """Iload.to decrypter plugin"""
     __author_name__ = "hzpz"
     __author_mail__ = None
diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index 79306fc6c..394673586 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -6,16 +6,19 @@ from module.utils import uniqify
 
 class ImgurComAlbum(SimpleCrypter):
     __name__ = "ImgurComAlbum"
-    __type__ = "crypter"
     __version__ = "0.4"
-    __description__ = """Imgur.com decrypter plugin"""
+    __type__ = "crypter"
+
     __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}'
+
+    __description__ = """Imgur.com decrypter plugin"""
     __author_name_ = "nath_schwarz"
     __author_mail_ = "nathan.notwhite@gmail.com"
 
     TITLE_PATTERN = r'(?P<title>.+) - Imgur'
     LINK_PATTERN = r'i\.imgur\.com/\w{7}s?\.(?:jpeg|jpg|png|gif|apng)'
 
+
     def getLinks(self):
         f = lambda url: "http://" + re.sub(r'(\w{7})s\.', r'\1.', url)
         return uniqify(map(f, re.findall(self.LINK_PATTERN, self.html)))
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index 8ae2ad118..6ea27813c 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -6,9 +6,11 @@ from module.plugins.Crypter import Crypter
 
 class LetitbitNetFolder(Crypter):
     __name__ = "LetitbitNetFolder"
+    __version__ = "0.1"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?letitbit.net/folder/\w+'
-    __version__ = "0.1"
+
     __description__ = """Letitbit.net folder decrypter plugin"""
     __author_name__ = ("DHMH", "z00nx")
     __author_mail__ = ("webmaster@pcProfil.de", "z00nx0@gmail.com")
@@ -16,6 +18,7 @@ class LetitbitNetFolder(Crypter):
     FOLDER_PATTERN = r'<table>(.*)</table>'
     LINK_PATTERN = r'<a href="([^"]+)" target="_blank">'
 
+
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 5fde4e958..6e024c766 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -17,9 +17,11 @@ from module.unescape import unescape
 
 class LinkSaveIn(Crypter):
     __name__ = "LinkSaveIn"
+    __version__ = "2.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?linksave.in/(?P<id>\w+)$'
-    __version__ = "2.01"
+
     __description__ = """LinkSave.in decrypter plugin"""
     __author_name__ = "fragonib"
     __author_mail__ = "fragonib[AT]yahoo[DOT]es"
@@ -29,6 +31,7 @@ class LinkSaveIn(Crypter):
     _CRYPTED_KEY_ = "crypted"
     HOSTER_NAME = "linksave.in"
 
+
     def setup(self):
         self.html = None
         self.fileid = None
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 1ec396962..96fe11951 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -21,8 +21,11 @@ from module.plugins.Crypter import Crypter
 
 class LinkdecrypterCom(Crypter):
     __name__ = "LinkdecrypterCom"
-    __type__ = "crypter"
     __version__ = "0.27"
+    __type__ = "crypter"
+
+    __pattern__ = None
+
     __description__ = """Linkdecrypter.com"""
     __author_name__ = ("zoidberg", "flowlee")
     __author_mail__ = ("zoidberg@mujmail.cz", "")
@@ -32,6 +35,7 @@ class LinkdecrypterCom(Crypter):
     CAPTCHA_PATTERN = r'<img class="captcha" src="(.+?)"(.*?)>'
     REDIR_PATTERN = r'<i>(Click <a href="./">here</a> if your browser does not redirect you).</i>'
 
+
     def decrypt(self, pyfile):
 
         self.passwords = self.getPassword().splitlines()
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index 8fca7dc02..d3c41bd4c 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -7,9 +7,11 @@ from module.plugins.Crypter import Crypter
 
 class LixIn(Crypter):
     __name__ = "LixIn"
+    __version__ = "0.22"
     __type__ = "crypter"
+
     __pattern__ = r'http://(www.)?lix.in/(?P<id>.*)'
-    __version__ = "0.22"
+
     __description__ = """Lix.in decrypter plugin"""
     __author_name__ = "spoob"
     __author_mail__ = "spoob@pyload.org"
@@ -18,6 +20,7 @@ class LixIn(Crypter):
     SUBMIT_PATTERN = r"value='continue.*?'"
     LINK_PATTERN = r'name="ifram" src="(?P<link>.*?)"'
 
+
     def decrypt(self, pyfile):
         url = pyfile.url
 
diff --git a/module/plugins/crypter/LofCc.py b/module/plugins/crypter/LofCc.py
index a17d58884..91106dc51 100644
--- a/module/plugins/crypter/LofCc.py
+++ b/module/plugins/crypter/LofCc.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class LofCc(DeadCrypter):
     __name__ = "LofCc"
+    __version__ = "0.21"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?lof.cc/(.*)'
-    __version__ = "0.21"
+
     __description__ = """Lof.cc decrypter plugin"""
     __author_name__ = "mkaay"
     __author_mail__ = "mkaay@mkaay.de"
diff --git a/module/plugins/crypter/MBLinkInfo.py b/module/plugins/crypter/MBLinkInfo.py
index 8aa70e8ff..0162c111d 100644
--- a/module/plugins/crypter/MBLinkInfo.py
+++ b/module/plugins/crypter/MBLinkInfo.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class MBLinkInfo(DeadCrypter):
     __name__ = "MBLinkInfo"
+    __version__ = "0.03"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?mblink\.info/?\?id=(\d+)'
-    __version__ = "0.03"
+
     __description__ = """MBLink.info decrypter plugin"""
     __author_name__ = ("Gummibaer", "stickell")
     __author_mail__ = ("Gummibaer@wiki-bierkiste.de", "l.stickell@yahoo.it")
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index 1ab16f31f..728bd6bbb 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -8,9 +8,11 @@ from module.common.json_layer import json_loads
 
 class MediafireComFolder(Crypter):
     __name__ = "MediafireComFolder"
+    __version__ = "0.14"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?mediafire\.com/(folder/|\?sharekey=|\?\w{13}($|[/#]))'
-    __version__ = "0.14"
+
     __description__ = """Mediafire.com folder decrypter plugin"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
diff --git a/module/plugins/crypter/Movie2kTo.py b/module/plugins/crypter/Movie2kTo.py
index 991e1e1ee..dcebf5e03 100644
--- a/module/plugins/crypter/Movie2kTo.py
+++ b/module/plugins/crypter/Movie2kTo.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class Movie2kTo(DeadCrypter):
     __name__ = "Movie2kTo"
+    __version__ = "0.51"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?movie2k\.to/(.*)\.html'
-    __version__ = "0.51"
+
     __description__ = """Movie2k.to decrypter plugin"""
     __author_name__ = "4Christopher"
     __author_mail__ = "4Christopher@gmx.de"
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index d08daaf75..ab23def8d 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -23,15 +23,18 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class MultiUpOrg(SimpleCrypter):
     __name__ = "MultiUpOrg"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?multiup\.org/(en|fr)/(?P<TYPE>project|download|miror)/\w+(/\w+)?'
-    __version__ = "0.01"
+
     __description__ = """MultiUp.org crypter plugin"""
     __author_name__ = "Walter Purcaro"
     __author_mail__ = "vuolter@gmail.com"
 
     TITLE_PATTERN = r'<title>.*(Project|Projet|ownload|élécharger) (?P<title>.+?) (\(|- )'
 
+
     def getLinks(self):
         m_type = re.match(self.__pattern__, self.pyfile.url).group("TYPE")
 
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index 5e7051bad..e6ffbe9b0 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -6,18 +6,21 @@ from module.plugins.Crypter import Crypter
 
 class MultiloadCz(Crypter):
     __name__ = "MultiloadCz"
+    __version__ = "0.4"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:[^/]*\.)?multiload.cz/(stahnout|slozka)/.*'
-    __version__ = "0.4"
-    __description__ = """Multiload.cz decrypter plugin"""
     __config__ = [("usedHoster", "str", "Prefered hoster list (bar-separated) ", ""),
                   ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
+
+    __description__ = """Multiload.cz decrypter plugin"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
 
     FOLDER_PATTERN = r'<form action="" method="get"><textarea[^>]*>([^>]*)</textarea></form>'
     LINK_PATTERN = r'<p class="manager-server"><strong>([^<]+)</strong></p><p class="manager-linky"><a href="([^"]+)">'
 
+
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url, decode=True)
         new_links = []
diff --git a/module/plugins/crypter/MultiuploadCom.py b/module/plugins/crypter/MultiuploadCom.py
index 677080772..cdc685fab 100644
--- a/module/plugins/crypter/MultiuploadCom.py
+++ b/module/plugins/crypter/MultiuploadCom.py
@@ -9,17 +9,20 @@ from module.common.json_layer import json_loads
 
 class MultiuploadCom(Crypter):
     __name__ = "MultiuploadCom"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?multiupload.com/(\w+)'
-    __version__ = "0.01"
-    __description__ = """MultiUpload.com decrypter plugin"""
     __config__ = [("preferedHoster", "str", "Prefered hoster list (bar-separated) ", "multiupload"),
                   ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
+
+    __description__ = """MultiUpload.com decrypter plugin"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
 
     ML_LINK_PATTERN = r'<div id="downloadbutton_" style=""><a href="([^"]+)"'
 
+
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url)
         found = re.search(self.ML_LINK_PATTERN, self.html)
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index ec6533ffc..dc2f29519 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -5,25 +5,28 @@ import binascii
 import re
 
 from Crypto.Cipher import AES
+
 from module.plugins.Crypter import Crypter
 from module.plugins.internal.CaptchaService import ReCaptcha
 
 
 class NCryptIn(Crypter):
     __name__ = "NCryptIn"
+    __version__ = "1.32"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?ncrypt.in/(?P<type>folder|link|frame)-([^/\?]+)'
-    __version__ = "1.32"
+
     __description__ = """NCrypt.in decrypter plugin"""
     __author_name__ = ("fragonib", "stickell")
     __author_mail__ = ("fragonib[AT]yahoo[DOT]es", "l.stickell@yahoo.it")
 
-    # Constants
-    _JK_KEY_ = "jk"
-    _CRYPTED_KEY_ = "crypted"
+    JK_KEY = "jk"
+    CRYPTED_KEY = "crypted"
 
     NAME_PATTERN = r'<meta name="description" content="(?P<N>[^"]+)"'
 
+
     def setup(self):
         self.package = None
         self.html = None
@@ -264,11 +267,11 @@ class NCryptIn(Crypter):
         pattern = r'<input.*?name="%s".*?value="(.*?)"'
 
         # Get jk
-        jk_re = pattern % NCryptIn._JK_KEY_
+        jk_re = pattern % NCryptIn.JK_KEY
         vjk = re.findall(jk_re, self.html)
 
         # Get crypted
-        crypted_re = pattern % NCryptIn._CRYPTED_KEY_
+        crypted_re = pattern % NCryptIn.CRYPTED_KEY
         vcrypted = re.findall(crypted_re, self.html)
 
         # Log and return
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 286b9366b..4c7660ab5 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -7,15 +7,18 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class NetfolderIn(SimpleCrypter):
     __name__ = "NetfolderIn"
+    __version__ = "0.6"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?netfolder.in/((?P<id1>\w+)/\w+|folder.php\?folder_id=(?P<id2>\w+))'
-    __version__ = "0.6"
+
     __description__ = """NetFolder.in decrypter plugin"""
     __author_name__ = ("RaNaN", "fragonib")
     __author_mail__ = ("RaNaN@pyload.org", "fragonib[AT]yahoo[DOT]es")
 
     TITLE_PATTERN = r'<div class="Text">Inhalt des Ordners <span(.*)>(?P<title>.+)</span></div>'
 
+
     def decrypt(self, pyfile):
         # Request package
         self.html = self.load(pyfile.url)
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index 20097c7bf..2656b9374 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -5,9 +5,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class NosvideoCom(SimpleCrypter):
     __name__ = "NosvideoCom"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?nosvideo\.com/\?v=\w+'
-    __version__ = "0.01"
+
     __description__ = """Nosvideo.com decrypter plugin"""
     __author_name__ = "igel"
     __author_mail__ = "igelkun@myopera.com"
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index 82fad86ce..b370df1f7 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -8,13 +8,16 @@ from module.plugins.Crypter import Crypter
 
 class OneKhDe(Crypter):
     __name__ = "OneKhDe"
+    __version__ = "0.1"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?1kh.de/f/'
-    __version__ = "0.1"
+
     __description__ = """1kh.de decrypter plugin"""
     __author_name__ = "spoob"
     __author_mail__ = "spoob@pyload.org"
 
+
     def __init__(self, parent):
         Crypter.__init__(self, parent)
         self.parent = parent
diff --git a/module/plugins/crypter/OronComFolder.py b/module/plugins/crypter/OronComFolder.py
index f087370ac..988c5c959 100755
--- a/module/plugins/crypter/OronComFolder.py
+++ b/module/plugins/crypter/OronComFolder.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class OronComFolder(DeadCrypter):
     __name__ = "OronComFolder"
+    __version__ = "0.11"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?oron.com/folder/\w+'
-    __version__ = "0.11"
+
     __description__ = """Oron.com folder decrypter plugin"""
     __author_name__ = "DHMH"
     __author_mail__ = "webmaster@pcProfil.de"
diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py
index e74f71a5c..172a4183f 100644
--- a/module/plugins/crypter/PastebinCom.py
+++ b/module/plugins/crypter/PastebinCom.py
@@ -19,9 +19,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class PastebinCom(SimpleCrypter):
     __name__ = "PastebinCom"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?pastebin\.com/\w+'
-    __version__ = "0.01"
+
     __description__ = """Pastebin.com decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index a412a5d18..a8f97cf77 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -6,9 +6,11 @@ from module.plugins.Crypter import Crypter
 
 class QuickshareCzFolder(Crypter):
     __name__ = "QuickshareCzFolder"
+    __version__ = "0.1"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?quickshare.cz/slozka-\d+.*'
-    __version__ = "0.1"
+
     __description__ = """Quickshare.cz folder decrypter plugin"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
@@ -16,6 +18,7 @@ class QuickshareCzFolder(Crypter):
     FOLDER_PATTERN = r'<textarea[^>]*>(.*?)</textarea>'
     LINK_PATTERN = r'(http://www.quickshare.cz/\S+)'
 
+
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
diff --git a/module/plugins/crypter/RSLayerCom.py b/module/plugins/crypter/RSLayerCom.py
index 13f4ed4bd..637caf2ce 100644
--- a/module/plugins/crypter/RSLayerCom.py
+++ b/module/plugins/crypter/RSLayerCom.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class RSLayerCom(DeadCrypter):
     __name__ = "RSLayerCom"
+    __version__ = "0.21"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?rs-layer.com/directory-'
-    __version__ = "0.21"
+
     __description__ = """RS-Layer.com decrypter plugin"""
     __author_name__ = "hzpz"
     __author_mail__ = None
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 1187692a0..5474ef3b6 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -11,9 +11,11 @@ from module.plugins.Crypter import Crypter
 
 class RelinkUs(Crypter):
     __name__ = "RelinkUs"
+    __version__ = "3.0"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?relink.us/(f/|((view|go).php\?id=))(?P<id>.+)'
-    __version__ = "3.0"
+
     __description__ = """Relink.us decrypter plugin"""
     __author_name__ = "fragonib"
     __author_mail__ = "fragonib[AT]yahoo[DOT]es"
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index 022f3e5ff..55f4c0ff6 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -11,14 +11,17 @@ from module.lib.BeautifulSoup import BeautifulSoup
 
 class SafelinkingNet(Crypter):
     __name__ = "SafelinkingNet"
+    __version__ = "0.1"
     __type__ = "crypter"
+
     __pattern__ = r'https?://(?:www\.)?safelinking.net/([pd])/\w+'
-    __version__ = "0.1"
+
     __description__ = """Safelinking.net decrypter plugin"""
     __author_name__ = "quareevo"
     __author_mail__ = "quareevo@arcor.de"
 
-    __Solvemedia_pattern__ = "solvemediaApiKey = '([\w\.\-_]+)';"
+    SOLVEMEDIA_PATTERN = "solvemediaApiKey = '([\w\.\-_]+)';"
+
 
     def decrypt(self, pyfile):
         url = pyfile.url
@@ -44,7 +47,7 @@ class SafelinkingNet(Crypter):
 
             if "altcaptcha" in self.html:
                 for _ in xrange(5):
-                    m = re.search(self.__Solvemedia_pattern__, self.html)
+                    m = re.search(self.SOLVEMEDIA_PATTERN, self.html)
                     if m:
                         captchaKey = m.group(1)
                         captcha = SolveMedia(self)
diff --git a/module/plugins/crypter/SecuredIn.py b/module/plugins/crypter/SecuredIn.py
index 771205ec8..1a6650195 100644
--- a/module/plugins/crypter/SecuredIn.py
+++ b/module/plugins/crypter/SecuredIn.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class SecuredIn(DeadCrypter):
     __name__ = "SecuredIn"
+    __version__ = "0.21"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?secured\.in/download-[\d]+-[\w]{8}\.html'
-    __version__ = "0.21"
+
     __description__ = """Secured.in decrypter plugin"""
     __author_name__ = "mkaay"
     __author_mail__ = "mkaay@mkaay.de"
diff --git a/module/plugins/crypter/SerienjunkiesOrg.py b/module/plugins/crypter/SerienjunkiesOrg.py
index ecca56209..ea76d30d0 100644
--- a/module/plugins/crypter/SerienjunkiesOrg.py
+++ b/module/plugins/crypter/SerienjunkiesOrg.py
@@ -1,18 +1,21 @@
 # -*- coding: utf-8 -*-
 
+import random
 import re
+
 from time import sleep
-import random
-from module.plugins.Crypter import Crypter
+
 from module.lib.BeautifulSoup import BeautifulSoup
+from module.plugins.Crypter import Crypter
 from module.unescape import unescape
 
 
 class SerienjunkiesOrg(Crypter):
     __name__ = "SerienjunkiesOrg"
+    __version__ = "0.39"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?(serienjunkies.org|dokujunkies.org)/.*?'
-    __version__ = "0.39"
     __config__ = [("changeNameSJ", "Packagename;Show;Season;Format;Episode", "Take SJ.org name", "Show"),
                   ("changeNameDJ", "Packagename;Show;Format;Episode", "Take DJ.org name", "Show"),
                   ("randomPreferred", "bool", "Randomize Preferred-List", False),
@@ -21,10 +24,12 @@ class SerienjunkiesOrg(Crypter):
                   ("hosterList", "str", "Preferred Hoster list (comma separated)",
                    "RapidshareCom,UploadedTo,NetloadIn,FilefactoryCom,FreakshareNet,FilebaseTo,HotfileCom,DepositfilesCom,EasyshareCom,KickloadCom"),
                   ("ignoreList", "str", "Ignored Hoster list (comma separated)", "MegauploadCom")]
+
     __description__ = """Serienjunkies.org decrypter plugin"""
     __author_name__ = ("mkaay", "godofdream")
     __author_mail__ = ("mkaay@mkaay.de", "soilfiction@gmail.com")
 
+
     def setup(self):
         self.multiDL = False
 
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 4ea5955db..13327dd2b 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -10,13 +10,16 @@ from module.plugins.Crypter import Crypter
 
 class ShareLinksBiz(Crypter):
     __name__ = "ShareLinksBiz"
+    __version__ = "1.13"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?(share-links|s2l)\.biz/(?P<ID>_?\w+)'
-    __version__ = "1.13"
+
     __description__ = """Share-Links.biz decrypter plugin"""
     __author_name__ = "fragonib"
     __author_mail__ = "fragonib[AT]yahoo[DOT]es"
 
+
     def setup(self):
         self.baseUrl = None
         self.fileId = None
diff --git a/module/plugins/crypter/ShareRapidComFolder.py b/module/plugins/crypter/ShareRapidComFolder.py
index 15c8dccde..e44402a52 100644
--- a/module/plugins/crypter/ShareRapidComFolder.py
+++ b/module/plugins/crypter/ShareRapidComFolder.py
@@ -5,9 +5,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class ShareRapidComFolder(SimpleCrypter):
     __name__ = "ShareRapidComFolder"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?((share(-?rapid\.(biz|com|cz|info|eu|net|org|pl|sk)|-(central|credit|free|net)\.cz|-ms\.net)|(s-?rapid|rapids)\.(cz|sk))|(e-stahuj|mediatack|premium-rapidshare|rapidshare-premium|qiuck)\.cz|kadzet\.com|stahuj-zdarma\.eu|strelci\.net|universal-share\.com)/(slozka/.+)'
-    __version__ = "0.01"
+
     __description__ = """Share-Rapid.com folder decrypter plugin"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
diff --git a/module/plugins/crypter/SpeedLoadOrgFolder.py b/module/plugins/crypter/SpeedLoadOrgFolder.py
index 4bb1562ee..305397d3c 100644
--- a/module/plugins/crypter/SpeedLoadOrgFolder.py
+++ b/module/plugins/crypter/SpeedLoadOrgFolder.py
@@ -19,9 +19,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class SpeedLoadOrgFolder(DeadCrypter):
     __name__ = "SpeedLoadOrgFolder"
+    __version__ = "0.3"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?speedload\.org/(\d+~f$|folder/\d+/)'
-    __version__ = "0.3"
+
     __description__ = """Speedload decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
diff --git a/module/plugins/crypter/StealthTo.py b/module/plugins/crypter/StealthTo.py
index e97a741e0..d0820446e 100644
--- a/module/plugins/crypter/StealthTo.py
+++ b/module/plugins/crypter/StealthTo.py
@@ -7,13 +7,16 @@ from module.plugins.Crypter import Crypter
 
 class StealthTo(Crypter):
     __name__ = "StealthTo"
+    __version__ = "0.1"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?stealth.to/folder/'
-    __version__ = "0.1"
+
     __description__ = """Stealth.to decrypter plugin"""
     __author_name__ = "spoob"
     __author_mail__ = "spoob@pyload.org"
 
+
     def __init__(self, parent):
         Crypter.__init__(self, parent)
         self.parent = parent
diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py
index aed7c3cf9..3ff9aa5dd 100644
--- a/module/plugins/crypter/TnyCz.py
+++ b/module/plugins/crypter/TnyCz.py
@@ -22,15 +22,18 @@ import re
 
 class TnyCz(SimpleCrypter):
     __name__ = "TnyCz"
+    __version__ = "0.01"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?tny\.cz/\w+'
-    __version__ = "0.01"
+
     __description__ = """Tny.cz decrypter plugin"""
     __author_name__ = "Walter Purcaro"
     __author_mail__ = "vuolter@gmail.com"
 
     TITLE_PATTERN = r'<title>(?P<title>.+) - .+</title>'
 
+
     def getLinks(self):
         m = re.search(r'<a id=\'save_paste\' href="(.+save\.php\?hash=.+)">', self.html)
         return re.findall(".+", self.load(m.group(1), decode=True)) if m else None
diff --git a/module/plugins/crypter/TrailerzoneInfo.py b/module/plugins/crypter/TrailerzoneInfo.py
index 84a476a38..2c7bb2c9f 100644
--- a/module/plugins/crypter/TrailerzoneInfo.py
+++ b/module/plugins/crypter/TrailerzoneInfo.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class TrailerzoneInfo(DeadCrypter):
     __name__ = "TrailerzoneInfo"
+    __version__ = "0.03"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?trailerzone.info/.*?'
-    __version__ = "0.03"
+
     __description__ = """TrailerZone.info decrypter plugin"""
     __author_name__ = "godofdream"
     __author_mail__ = "soilfiction@gmail.com"
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index 2dcd65757..26923e8d4 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -22,15 +22,18 @@ from module.common.json_layer import json_loads
 
 class TurbobitNetFolder(SimpleCrypter):
     __name__ = "TurbobitNetFolder"
+    __version__ = "0.03"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?turbobit\.net/download/folder/(?P<ID>\w+)'
-    __version__ = "0.03"
+
     __description__ = """Turbobit.net folder decrypter plugin"""
     __author_name__ = ("stickell", "Walter Purcaro")
     __author_mail__ = ("l.stickell@yahoo.it", "vuolter@gmail.com")
 
     TITLE_PATTERN = r"src='/js/lib/grid/icon/folder.png'> <span>(?P<title>.+?)</span>"
 
+
     def _getLinks(self, id, page=1):
         gridFile = self.load("http://turbobit.net/downloadfolder/gridFile",
                              get={"rootId": id, "rows": 200, "page": page}, decode=True)
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index 59aef3372..70b7bd4b9 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -23,9 +23,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class TusfilesNetFolder(SimpleCrypter):
     __name__ = "TusfilesNetFolder"
+    __version__ = "0.02"
     __type__ = "crypter"
+
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)/?'
-    __version__ = "0.02"
+
     __description__ = """Tusfiles.net folder decrypter plugin"""
     __author_name__ = ("Walter Purcaro", "stickell")
     __author_mail__ = ("vuolter@gmail.com", "l.stickell@yahoo.it")
@@ -36,6 +38,7 @@ class TusfilesNetFolder(SimpleCrypter):
 
     URL_REPLACEMENTS = [(__pattern__, r'https://www.tusfiles.net/go/\g<ID>/')]
 
+
     def loadPage(self, page_n):
         return self.load(urljoin(self.pyfile.url, str(page_n)), decode=True)
 
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index 6c7729fee..6ba4b0819 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -6,9 +6,11 @@ from module.plugins.Crypter import Crypter
 
 class UlozToFolder(Crypter):
     __name__ = "UlozToFolder"
+    __version__ = "0.2"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj.cz|zachowajto.pl)/(m|soubory)/.*'
-    __version__ = "0.2"
+
     __description__ = """Uloz.to folder decrypter plugin"""
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
@@ -17,6 +19,7 @@ class UlozToFolder(Crypter):
     LINK_PATTERN = r'<br /><a href="/([^"]+)">[^<]+</a>'
     NEXT_PAGE_PATTERN = r'<a class="next " href="/([^"]+)">&nbsp;</a>'
 
+
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index 97c77fdce..36dd9714a 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -21,9 +21,11 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class UploadedToFolder(SimpleCrypter):
     __name__ = "UploadedToFolder"
+    __version__ = "0.3"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P<id>\w+)'
-    __version__ = "0.3"
+
     __description__ = """UploadedTo decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
@@ -31,6 +33,7 @@ class UploadedToFolder(SimpleCrypter):
     PLAIN_PATTERN = r'<small class="date"><a href="(?P<plain>[\w/]+)" onclick='
     TITLE_PATTERN = r'<title>(?P<title>[^<]+)</title>'
 
+
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url)
 
diff --git a/module/plugins/crypter/WiiReloadedOrg.py b/module/plugins/crypter/WiiReloadedOrg.py
index 7274b4a84..9cb0751d8 100644
--- a/module/plugins/crypter/WiiReloadedOrg.py
+++ b/module/plugins/crypter/WiiReloadedOrg.py
@@ -5,9 +5,11 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class WiiReloadedOrg(DeadCrypter):
     __name__ = "WiiReloadedOrg"
+    __version__ = "0.11"
     __type__ = "crypter"
+
     __pattern__ = r'http://(?:www\.)?wii-reloaded\.org/protect/get\.php\?i=.+'
-    __version__ = "0.11"
+
     __description__ = """Wii-Reloaded.org decrypter plugin"""
     __author_name__ = "hzpz"
     __author_mail__ = None
diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py
index c04fc69f8..09c3084ea 100644
--- a/module/plugins/crypter/XupPl.py
+++ b/module/plugins/crypter/XupPl.py
@@ -5,13 +5,16 @@ from module.plugins.Crypter import Crypter
 
 class XupPl(Crypter):
     __name__ = "XupPl"
+    __version__ = "0.1"
     __type__ = "crypter"
+
     __pattern__ = r'https?://(?:[^/]*\.)?xup\.pl/.*'
-    __version__ = "0.1"
+
     __description__ = """Xup.pl decrypter plugin"""
     __author_name__ = "z00nx"
     __author_mail__ = "z00nx0@gmail.com"
 
+
     def decrypt(self, pyfile):
         header = self.load(pyfile.url, just_header=True)
         if 'location' in header:
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index dd5d937d5..dfac9140f 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -15,9 +15,10 @@
     along with this program; if not, see <http://www.gnu.org/licenses/>.
 """
 
-from urlparse import urljoin
 import re
 
+from urlparse import urljoin
+
 from module.common.json_layer import json_loads
 from module.plugins.Crypter import Crypter
 from module.utils import save_join
@@ -27,16 +28,19 @@ API_URL = "AIzaSyCKnWLNlkX-L4oD1aEzqqhRw1zczeD6_k0"
 
 class YoutubeBatch(Crypter):
     __name__ = "YoutubeBatch"
+    __version__ = "1.00"
     __type__ = "crypter"
+
     __pattern__ = r'https?://(?:www\.|m\.)?youtube\.com/(?P<TYPE>user|playlist|view_play_list)(/|.*?[?&](?:list|p)=)(?P<ID>[\w-]+)'
-    __version__ = "1.00"
-    __description__ = """Youtube.com channel & playlist decrypter plugin"""
     __config__ = [("likes", "bool", "Grab user (channel) liked videos", False),
                   ("favorites", "bool", "Grab user (channel) favorite videos", False),
                   ("uploads", "bool", "Grab channel unplaylisted videos", True)]
+
+    __description__ = """Youtube.com channel & playlist decrypter plugin"""
     __author_name__ = "Walter Purcaro"
     __author_mail__ = "vuolter@gmail.com"
 
+
     def api_response(self, ref, req):
         req.update({"key": API_KEY})
         url = urljoin("https://www.googleapis.com/youtube/v3/", ref)
-- 
cgit v1.2.3


From 0ecdab0c48c89c065ce41e3427d218f993a655ac Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 15 Jul 2014 23:57:03 +0200
Subject: [StealthTo] Mark dead

---
 module/plugins/crypter/StealthTo.py | 44 ++++---------------------------------
 1 file changed, 4 insertions(+), 40 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/StealthTo.py b/module/plugins/crypter/StealthTo.py
index d0820446e..9cae7ba20 100644
--- a/module/plugins/crypter/StealthTo.py
+++ b/module/plugins/crypter/StealthTo.py
@@ -1,51 +1,15 @@
 # -*- coding: utf-8 -*-
 
-import re
+from module.plugins.internal.DeadCrypter import DeadCrypter
 
-from module.plugins.Crypter import Crypter
 
-
-class StealthTo(Crypter):
+class StealthTo(DeadCrypter):
     __name__ = "StealthTo"
-    __version__ = "0.1"
+    __version__ = "0.2"
     __type__ = "crypter"
 
-    __pattern__ = r'http://(?:www\.)?stealth.to/folder/'
+    __pattern__ = r'http://(?:www\.)?stealth\.to/folder/.+'
 
     __description__ = """Stealth.to decrypter plugin"""
     __author_name__ = "spoob"
     __author_mail__ = "spoob@pyload.org"
-
-
-    def __init__(self, parent):
-        Crypter.__init__(self, parent)
-        self.parent = parent
-        self.html = None
-
-    def file_exists(self):
-        """ returns True or False
-        """
-        return True
-
-    def proceed(self, url, location):
-        url = self.parent.url
-        self.html = self.req.load(url, cookies=True)
-        temp_links = []
-        ids = []
-        ats = []  # authenticity_token
-        inputs = re.findall(r"(<(input|form)[^>]+)", self.html)
-        for input in inputs:
-            if re.search(r"name=\"authenticity_token\"", input[0]):
-                ats.append(re.search(r"value=\"([^\"]+)", input[0]).group(1))
-            if re.search(r"name=\"id\"", input[0]):
-                ids.append(re.search(r"value=\"([^\"]+)", input[0]).group(1))
-
-        for i in xrange(0, len(ids)):
-            self.req.load(url + "/web",
-                          post={"authenticity_token": ats[i], "id": str(ids[i]), "link": ("download_" + str(ids[i]))},
-                          cookies=True)
-            new_html = self.req.load(url + "/web", post={"authenticity_token": ats[i], "id": str(ids[i]), "link": "1"},
-                                     cookies=True)
-            temp_links.append(re.search(r"iframe src=\"(.*)\" frameborder", new_html).group(1))
-
-        self.links = temp_links
-- 
cgit v1.2.3


From a1e78f33dc2b0b6777fdcbc415673f3965b25542 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Wed, 16 Jul 2014 00:46:26 +0200
Subject: Prefer self.urls and self.packages for adding links

---
 module/plugins/crypter/ChipDe.py             |  8 ++++----
 module/plugins/crypter/CzshareComFolder.py   |  8 ++------
 module/plugins/crypter/DDLMusicOrg.py        |  2 +-
 module/plugins/crypter/Dereferer.py          |  2 +-
 module/plugins/crypter/DontKnowMe.py         |  2 +-
 module/plugins/crypter/DuckCryptInfo.py      |  6 ++----
 module/plugins/crypter/EmbeduploadCom.py     | 15 +++++++--------
 module/plugins/crypter/FileserveComFolder.py |  2 +-
 module/plugins/crypter/FourChanOrg.py        |  7 +------
 module/plugins/crypter/GooGl.py              |  2 +-
 module/plugins/crypter/HoerbuchIn.py         |  6 ++----
 module/plugins/crypter/HotfileFolderCom.py   |  2 +-
 module/plugins/crypter/LetitbitNetFolder.py  |  8 ++------
 module/plugins/crypter/LinkdecrypterCom.py   |  6 ++----
 module/plugins/crypter/LixIn.py              |  8 +++-----
 module/plugins/crypter/MediafireComFolder.py | 12 ++++--------
 module/plugins/crypter/MultiloadCz.py        | 13 +++++--------
 module/plugins/crypter/MultiuploadCom.py     | 15 ++++++---------
 module/plugins/crypter/OneKhDe.py            |  4 +---
 module/plugins/crypter/QuickshareCzFolder.py |  7 ++-----
 module/plugins/crypter/RelinkUs.py           |  3 +--
 module/plugins/crypter/SafelinkingNet.py     |  9 +++------
 module/plugins/crypter/UlozToFolder.py       |  2 +-
 module/plugins/crypter/XupPl.py              |  2 +-
 24 files changed, 55 insertions(+), 96 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index 8e48b1085..f59903170 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -19,9 +19,9 @@ class ChipDe(Crypter):
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url)
         try:
-            url = re.search(r'"(http://video.chip.de/\d+?/.*)"', self.html).group(1)
-            self.logDebug('The file URL is %s' % url)
+            f = re.search(r'"(http://video.chip.de/\d+?/.*)"', self.html)
         except:
             self.fail('Failed to find the URL')
-
-        self.packages.append((pyfile.package().name, [url], pyfile.package().folder))
+        else:
+            self.urls = [f.group(1)]
+            self.logDebug('The file URL is %s' % self.urls[0])
diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index c60d5a87d..e0c311ba8 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -17,19 +17,15 @@ class CzshareComFolder(Crypter):
 
     FOLDER_PATTERN = r'<tr class="subdirectory">\s*<td>\s*<table>(.*?)</table>'
     LINK_PATTERN = r'<td class="col2"><a href="([^"]+)">info</a></td>'
-    #NEXT_PAGE_PATTERN = r'<a class="next " href="/([^"]+)">&nbsp;</a>'
 
 
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
-        new_links = []
         found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
         if not found:
             self.fail("Parse error (FOLDER)")
-        new_links.extend(re.findall(self.LINK_PATTERN, found.group(1)))
 
-        if new_links:
-            self.core.files.addLinks(new_links, pyfile.package().id)
-        else:
+        self.urls.extend(re.findall(self.LINK_PATTERN, found.group(1)))
+        if not self.urls:
             self.fail('Could not extract any links')
diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py
index fcdd507a7..c80ec471e 100644
--- a/module/plugins/crypter/DDLMusicOrg.py
+++ b/module/plugins/crypter/DDLMusicOrg.py
@@ -43,6 +43,6 @@ class DDLMusicOrg(Crypter):
                                            "linknr": linknr})
         m = re.search(r"<form id=\"ff\" action=\"(.*?)\" method=\"post\">", htmlwithlink)
         if m:
-            self.packages.append((pyfile.package().name, [m.group(1)], pyfile.package().folder))
+            self.urls = [m.group(1)]
         else:
             self.retry()
diff --git a/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py
index 6870f2f24..405893560 100644
--- a/module/plugins/crypter/Dereferer.py
+++ b/module/plugins/crypter/Dereferer.py
@@ -35,4 +35,4 @@ class Dereferer(Crypter):
 
     def decrypt(self, pyfile):
         link = re.match(self.__pattern__, pyfile.url).group('url')
-        self.core.files.addLinks([urllib.unquote(link).rstrip('+')], pyfile.package().id)
+        self.urls = [urllib.unquote(link).rstrip('+')]
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index d05355c2e..dac385e7c 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -22,4 +22,4 @@ class DontKnowMe(Crypter):
 
     def decrypt(self, pyfile):
         link = re.findall(self.LINK_PATTERN, pyfile.url)[0]
-        self.core.files.addLinks([urllib.unquote(link)], pyfile.package().id)
+        self.urls = [urllib.unquote(link)]
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 6f5efdd1b..aa3a6d2a1 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -52,8 +52,6 @@ class DuckCryptInfo(Crypter):
     def handleLink(self, url):
         src = self.load(url)
         soup = BeautifulSoup(src)
-        link = soup.find("iframe")['src']
-        if not link:
+        self.urls = [soup.find("iframe")["src"]]
+        if not self.urls:
             self.logDebug('no links found - (Plugin out of date?)')
-        else:
-            self.core.files.addLinks([link], self.pyfile.package().id)
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 6126527a9..823e3f25f 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -24,7 +24,6 @@ class EmbeduploadCom(Crypter):
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url, decode=True)
         tmp_links = []
-        new_links = []
 
         found = re.findall(self.LINK_PATTERN, self.html)
         if found:
@@ -32,21 +31,20 @@ class EmbeduploadCom(Crypter):
             prefered_set = map(lambda s: s.lower().split('.')[0], prefered_set)
             print "PF", prefered_set
             tmp_links.extend([x[1] for x in found if x[0] in prefered_set])
-            self.getLocation(tmp_links, new_links)
+            self.urls = self.getLocation(tmp_links)
 
-            if not new_links:
+            if not self.urls:
                 ignored_set = set(self.getConfig("ignoredHoster").split('|'))
                 ignored_set = map(lambda s: s.lower().split('.')[0], ignored_set)
                 print "IG", ignored_set
                 tmp_links.extend([x[1] for x in found if x[0] not in ignored_set])
-                self.getLocation(tmp_links, new_links)
+                self.urls = self.getLocation(tmp_links)
 
-        if new_links:
-            self.core.files.addLinks(new_links, pyfile.package().id)
-        else:
+        if not self.urls:
             self.fail('Could not extract any links')
 
-    def getLocation(self, tmp_links, new_links):
+    def getLocation(self, tmp_links):
+        new_links = []
         for link in tmp_links:
             try:
                 header = self.load(link, just_header=True)
@@ -54,3 +52,4 @@ class EmbeduploadCom(Crypter):
                     new_links.append(header['location'])
             except BadHeader:
                 pass
+        return new_links
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index 30662f02d..28d89c75d 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -32,6 +32,6 @@ class FileserveComFolder(Crypter):
         new_links.extend(re.findall(self.LINK_PATTERN, folder.group(1)))
 
         if new_links:
-            self.core.files.addLinks(map(lambda s: "http://fileserve.com%s" % s, new_links), pyfile.package().id)
+            self.urls = [map(lambda s: "http://fileserve.com%s" % s, new_links)]
         else:
             self.fail('Could not extract any links')
diff --git a/module/plugins/crypter/FourChanOrg.py b/module/plugins/crypter/FourChanOrg.py
index dc0cdcb6c..a911c64d6 100644
--- a/module/plugins/crypter/FourChanOrg.py
+++ b/module/plugins/crypter/FourChanOrg.py
@@ -21,10 +21,5 @@ class FourChanOrg(Crypter):
 
     def decrypt(self, pyfile):
         pagehtml = self.load(pyfile.url)
-
         images = set(re.findall(r'(images\.4chan\.org/[^/]*/src/[^"<]*)', pagehtml))
-        urls = []
-        for image in images:
-            urls.append("http://" + image)
-
-        self.core.files.addLinks(urls, pyfile.package().id)
+        self.urls = ["http://" + image for image in images]
diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py
index 37531c11e..52bf93ed3 100644
--- a/module/plugins/crypter/GooGl.py
+++ b/module/plugins/crypter/GooGl.py
@@ -38,6 +38,6 @@ class GooGl(Crypter):
         rep = json_loads(rep)
 
         if 'longUrl' in rep:
-            self.core.files.addLinks([rep['longUrl']], pyfile.package().id)
+            self.urls = [rep['longUrl']]
         else:
             self.fail('Unable to expand shortened link')
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index df81cc207..b46293bc7 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -33,11 +33,9 @@ class HoerbuchIn(Crypter):
                 package = "%s (%s)" % (abookname, a.previousSibling.previousSibling.text[:-1])
                 links = self.decryptFolder(a['href'])
 
-                self.packages.append((package, links, pyfile.package().folder))
+                self.packages.append((package, links, package))
         else:
-            links = self.decryptFolder(pyfile.url)
-
-            self.packages.append((pyfile.package().name, links, pyfile.package().folder))
+            self.urls = self.decryptFolder(pyfile.url)
 
     def decryptFolder(self, url):
         m = self.protection.search(url)
diff --git a/module/plugins/crypter/HotfileFolderCom.py b/module/plugins/crypter/HotfileFolderCom.py
index 02c937553..433dc9755 100644
--- a/module/plugins/crypter/HotfileFolderCom.py
+++ b/module/plugins/crypter/HotfileFolderCom.py
@@ -27,4 +27,4 @@ class HotfileFolderCom(Crypter):
 
         new_links = [x[0] for x in new_links]
 
-        self.packages.append((name, new_links, name))
+        self.packages = [(name, new_links, name)]
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index 6ea27813c..19e780690 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -22,15 +22,11 @@ class LetitbitNetFolder(Crypter):
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
-        new_links = []
-
         folder = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
         if not folder:
             self.fail("Parse error (FOLDER)")
 
-        new_links.extend(re.findall(self.LINK_PATTERN, folder.group(0)))
+        self.urls.extend(re.findall(self.LINK_PATTERN, folder.group(0)))
 
-        if new_links:
-            self.core.files.addLinks(new_links, pyfile.package().id)
-        else:
+        if not self.urls:
             self.fail('Could not extract any links')
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 96fe11951..31c4d36b7 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -41,10 +41,8 @@ class LinkdecrypterCom(Crypter):
         self.passwords = self.getPassword().splitlines()
 
         # API not working anymore
-        new_links = self.decryptHTML()
-        if new_links:
-            self.core.files.addLinks(new_links, pyfile.package().id)
-        else:
+        self.urls = self.decryptHTML()
+        if not self.urls:
             self.fail('Could not extract any links')
 
     def decryptAPI(self):
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index d3c41bd4c..e609c9da4 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -54,8 +54,6 @@ class LixIn(Crypter):
         matches = re.search(self.LINK_PATTERN, self.html)
         if not matches:
             self.fail("can't find destination url")
-
-        new_link = matches.group("link")
-        self.logDebug("Found link %s, adding to package" % new_link)
-
-        self.packages.append((pyfile.package().name, [new_link], pyfile.package().name))
+        else:
+            self.urls = [matches.group("link")]
+            self.logDebug("Found link %s, adding to package" % self.urls[0])
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index 728bd6bbb..5f1b9ad1b 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -22,8 +22,6 @@ class MediafireComFolder(Crypter):
 
 
     def decrypt(self, pyfile):
-        new_links = []
-
         url, result = checkHTMLHeader(pyfile.url)
         self.logDebug('Location (%d): %s' % (result, url))
 
@@ -33,7 +31,7 @@ class MediafireComFolder(Crypter):
             found = re.search(self.FILE_URL_PATTERN, html)
             if found:
                 # file page
-                new_links.append("http://www.mediafire.com/file/%s" % found.group(1))
+                self.urls.append("http://www.mediafire.com/file/%s" % found.group(1))
             else:
                 # folder page
                 found = re.search(self.FOLDER_KEY_PATTERN, html)
@@ -46,15 +44,13 @@ class MediafireComFolder(Crypter):
                     #self.logInfo(json_resp)
                     if json_resp['response']['result'] == "Success":
                         for link in json_resp['response']['folder_info']['files']:
-                            new_links.append("http://www.mediafire.com/file/%s" % link['quickkey'])
+                            self.urls.append("http://www.mediafire.com/file/%s" % link['quickkey'])
                     else:
                         self.fail(json_resp['response']['message'])
         elif result == 1:
             self.offline()
         else:
-            new_links.append(url)
+            self.urls.append(url)
 
-        if new_links:
-            self.core.files.addLinks(new_links, pyfile.package().id)
-        else:
+        if not self.urls:
             self.fail('Could not extract any links')
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index e6ffbe9b0..0d5fa4c94 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -23,23 +23,20 @@ class MultiloadCz(Crypter):
 
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url, decode=True)
-        new_links = []
 
         if re.match(self.__pattern__, pyfile.url).group(1) == "slozka":
             found = re.search(self.FOLDER_PATTERN, self.html)
             if found is not None:
-                new_links.extend(found.group(1).split())
+                self.urls.extend(found.group(1).split())
         else:
             found = re.findall(self.LINK_PATTERN, self.html)
             if found:
                 prefered_set = set(self.getConfig("usedHoster").split('|'))
-                new_links.extend([x[1] for x in found if x[0] in prefered_set])
+                self.urls.extend([x[1] for x in found if x[0] in prefered_set])
 
-                if not new_links:
+                if not self.urls:
                     ignored_set = set(self.getConfig("ignoredHoster").split('|'))
-                    new_links.extend([x[1] for x in found if x[0] not in ignored_set])
+                    self.urls.extend([x[1] for x in found if x[0] not in ignored_set])
 
-        if new_links:
-            self.core.files.addLinks(new_links, pyfile.package().id)
-        else:
+        if not self.urls:
             self.fail('Could not extract any links')
diff --git a/module/plugins/crypter/MultiuploadCom.py b/module/plugins/crypter/MultiuploadCom.py
index cdc685fab..84d8d0830 100644
--- a/module/plugins/crypter/MultiuploadCom.py
+++ b/module/plugins/crypter/MultiuploadCom.py
@@ -32,34 +32,31 @@ class MultiuploadCom(Crypter):
             "d": re.match(self.__pattern__, pyfile.url).group(1),
             "r": str(int(time() * 1000))
         }))
-        new_links = []
 
         prefered_set = map(lambda s: s.lower().split('.')[0], set(self.getConfig("preferedHoster").split('|')))
 
         if ml_url and 'multiupload' in prefered_set:
-            new_links.append(ml_url)
+            self.urls.append(ml_url)
 
         for link in json_list:
             if link['service'].lower() in prefered_set and int(link['status']) and not int(link['deleted']):
                 url = self.getLocation(link['url'])
                 if url:
-                    new_links.append(url)
+                    self.urls.append(url)
 
-        if not new_links:
+        if not self.urls:
             ignored_set = map(lambda s: s.lower().split('.')[0], set(self.getConfig("ignoredHoster").split('|')))
 
             if 'multiupload' not in ignored_set:
-                new_links.append(ml_url)
+                self.urls.append(ml_url)
 
             for link in json_list:
                 if link['service'].lower() not in ignored_set and int(link['status']) and not int(link['deleted']):
                     url = self.getLocation(link['url'])
                     if url:
-                        new_links.append(url)
+                        self.urls.append(url)
 
-        if new_links:
-            self.core.files.addLinks(new_links, pyfile.package().id)
-        else:
+        if not self.urls:
             self.fail('Could not extract any links')
 
     def getLocation(self, url):
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index b370df1f7..91c591ec1 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -31,10 +31,8 @@ class OneKhDe(Crypter):
     def proceed(self, url, location):
         url = self.parent.url
         self.html = self.req.load(url)
-        temp_links = []
         link_ids = re.findall(r"<a id=\"DownloadLink_(\d*)\" href=\"http://1kh.de/", self.html)
         for id in link_ids:
             new_link = unescape(
                 re.search("width=\"100%\" src=\"(.*)\"></iframe>", self.req.load("http://1kh.de/l/" + id)).group(1))
-            temp_links.append(new_link)
-        self.links = temp_links
+            self.urls.append(new_link)
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index a8f97cf77..b8db5d88c 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -22,13 +22,10 @@ class QuickshareCzFolder(Crypter):
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
-        new_links = []
         found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
         if not found:
             self.fail("Parse error (FOLDER)")
-        new_links.extend(re.findall(self.LINK_PATTERN, found.group(1)))
+        self.urls.extend(re.findall(self.LINK_PATTERN, found.group(1)))
 
-        if new_links:
-            self.core.files.addLinks(new_links, pyfile.package().id)
-        else:
+        if not self.urls:
             self.fail('Could not extract any links')
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 5474ef3b6..160900144 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -94,10 +94,9 @@ class RelinkUs(Crypter):
         self.fileid = re.match(self.__pattern__, pyfile.url).group('id')
         self.package = pyfile.package()
         self.password = self.getPassword()
-        self.url = pyfile.url
 
     def requestPackage(self):
-        self.html = self.load(self.url, decode=True)
+        self.html = self.load(self.pyfile.url, decode=True)
 
     def isOnline(self):
         if self.OFFLINE_TOKEN in self.html:
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index 55f4c0ff6..2687ed2f2 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -30,13 +30,12 @@ class SafelinkingNet(Crypter):
             self.load(url)
             m = re.search("^Location: (.+)$", self.req.http.header, re.MULTILINE)
             if m:
-                self.core.files.addLinks([m.group(1)], pyfile.package().id)
+                self.urls = [m.group(1)]
             else:
                 self.fail("Couldn't find forwarded Link")
 
         else:
             password = ""
-            packageLinks = []
             postData = {"post-protect": "1"}
 
             self.html = self.load(url)
@@ -76,8 +75,6 @@ class SafelinkingNet(Crypter):
                 linkDict = json_loads(m.group(1))
                 for link in linkDict:
                     if not "http://" in link['full']:
-                        packageLinks.append("https://safelinking.net/d/" + link['full'])
+                        self.urls.append("https://safelinking.net/d/" + link['full'])
                     else:
-                        packageLinks.append(link['full'])
-
-            self.core.files.addLinks(packageLinks, pyfile.package().id)
+                        self.urls.append(link['full'])
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index 6ba4b0819..f9ddd3c84 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -40,6 +40,6 @@ class UlozToFolder(Crypter):
             self.logInfo("Limit of 99 pages reached, aborting")
 
         if new_links:
-            self.core.files.addLinks(map(lambda s: "http://ulozto.net/%s" % s, new_links), pyfile.package().id)
+            self.urls = [map(lambda s: "http://ulozto.net/%s" % s, new_links)]
         else:
             self.fail('Could not extract any links')
diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py
index 09c3084ea..e89f4ccb0 100644
--- a/module/plugins/crypter/XupPl.py
+++ b/module/plugins/crypter/XupPl.py
@@ -18,6 +18,6 @@ class XupPl(Crypter):
     def decrypt(self, pyfile):
         header = self.load(pyfile.url, just_header=True)
         if 'location' in header:
-            self.core.files.addLinks([header['location']], pyfile.package().id)
+            self.urls = [header['location']]
         else:
             self.fail('Unable to find link')
-- 
cgit v1.2.3


From 05d258d98dd8c2faf0b769840fa1e3c4acccdce8 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 20 Jul 2014 03:25:14 +0200
Subject: Fix and improve 5060e4c6374a5116d0d8b02528f910f8c5f8bcf9

---
 module/plugins/crypter/CzshareComFolder.py   |  2 +-
 module/plugins/crypter/DuckCryptInfo.py      |  2 +-
 module/plugins/crypter/FileserveComFolder.py |  2 +-
 module/plugins/crypter/FreetexthostCom.py    |  2 +-
 module/plugins/crypter/HoerbuchIn.py         |  2 +-
 module/plugins/crypter/LetitbitNetFolder.py  |  2 +-
 module/plugins/crypter/LixIn.py              | 26 +++++++++++++-------------
 module/plugins/crypter/MultiloadCz.py        |  2 +-
 module/plugins/crypter/NCryptIn.py           | 14 +++++++-------
 module/plugins/crypter/QuickshareCzFolder.py |  2 +-
 module/plugins/crypter/ShareLinksBiz.py      |  2 +-
 module/plugins/crypter/UlozToFolder.py       |  2 +-
 module/plugins/crypter/YoutubeBatch.py       |  6 +++---
 13 files changed, 33 insertions(+), 33 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index e0c311ba8..76762b69b 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -23,7 +23,7 @@ class CzshareComFolder(Crypter):
         html = self.load(pyfile.url)
 
         found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-        if not found:
+        if found is None:
             self.fail("Parse error (FOLDER)")
 
         self.urls.extend(re.findall(self.LINK_PATTERN, found.group(1)))
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index aa3a6d2a1..8203f0978 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -28,7 +28,7 @@ class DuckCryptInfo(Crypter):
         #    self.logDebug("Sleeping for" % found.group(1))
         #    self.setWait(int(found.group(1)) ,False)
         found = re.match(self.__pattern__, url)
-        if not found:
+        if found is None:
             self.fail('Weird error in link')
         if str(found.group(1)) == "link":
             self.handleLink(url)
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index 28d89c75d..4a0d5a416 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -26,7 +26,7 @@ class FileserveComFolder(Crypter):
         new_links = []
 
         folder = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-        if not folder:
+        if folder is None:
             self.fail("Parse error (FOLDER)")
 
         new_links.extend(re.findall(self.LINK_PATTERN, folder.group(1)))
diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py
index d03805722..a6fb78d8e 100644
--- a/module/plugins/crypter/FreetexthostCom.py
+++ b/module/plugins/crypter/FreetexthostCom.py
@@ -33,7 +33,7 @@ class FreetexthostCom(SimpleCrypter):
 
     def getLinks(self):
         m = re.search(r'<div id="contentsinner">\s*(.+)<div class="viewcount">', self.html, re.DOTALL)
-        if not m:
+        if m is None:
             self.fail('Unable to extract links | Plugin may be out-of-date')
         links = m.group(1)
         return links.strip().split("<br />\r\n")
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index b46293bc7..88fc57244 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -39,7 +39,7 @@ class HoerbuchIn(Crypter):
 
     def decryptFolder(self, url):
         m = self.protection.search(url)
-        if not m:
+        if m is None:
             self.fail("Bad URL")
         url = m.group(0)
 
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index 19e780690..adb2918a6 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -23,7 +23,7 @@ class LetitbitNetFolder(Crypter):
         html = self.load(pyfile.url)
 
         folder = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-        if not folder:
+        if folder is None:
             self.fail("Parse error (FOLDER)")
 
         self.urls.extend(re.findall(self.LINK_PATTERN, folder.group(0)))
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index e609c9da4..a39173903 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -24,26 +24,26 @@ class LixIn(Crypter):
     def decrypt(self, pyfile):
         url = pyfile.url
 
-        matches = re.match(self.__pattern__, url)
-        if not matches:
+        m = re.match(self.__pattern__, url)
+        if m is None:
             self.fail("couldn't identify file id")
 
-        id = matches.group("id")
+        id = m.group("id")
         self.logDebug("File id is %s" % id)
 
         self.html = self.req.load(url, decode=True)
 
-        matches = re.search(self.SUBMIT_PATTERN, self.html)
-        if not matches:
+        m = re.search(self.SUBMIT_PATTERN, self.html)
+        if m is None:
             self.fail("link doesn't seem valid")
 
-        matches = re.search(self.CAPTCHA_PATTERN, self.html)
-        if matches:
+        m = re.search(self.CAPTCHA_PATTERN, self.html)
+        if m:
             for _ in xrange(5):
-                matches = re.search(self.CAPTCHA_PATTERN, self.html)
-                if matches:
+                m = re.search(self.CAPTCHA_PATTERN, self.html)
+                if m:
                     self.logDebug("trying captcha")
-                    captcharesult = self.decryptCaptcha("http://lix.in/" + matches.group("image"))
+                    captcharesult = self.decryptCaptcha("http://lix.in/" + m.group("image"))
                 self.html = self.req.load(url, decode=True,
                                           post={"capt": captcharesult, "submit": "submit", "tiny": id})
             else:
@@ -51,9 +51,9 @@ class LixIn(Crypter):
         else:
             self.html = self.req.load(url, decode=True, post={"submit": "submit", "tiny": id})
 
-        matches = re.search(self.LINK_PATTERN, self.html)
-        if not matches:
+        m = re.search(self.LINK_PATTERN, self.html)
+        if m is None:
             self.fail("can't find destination url")
         else:
-            self.urls = [matches.group("link")]
+            self.urls = [m.group("link")]
             self.logDebug("Found link %s, adding to package" % self.urls[0])
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index 0d5fa4c94..f93681be9 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -26,7 +26,7 @@ class MultiloadCz(Crypter):
 
         if re.match(self.__pattern__, pyfile.url).group(1) == "slozka":
             found = re.search(self.FOLDER_PATTERN, self.html)
-            if found is not None:
+            if found:
                 self.urls.extend(found.group(1).split())
         else:
             found = re.findall(self.LINK_PATTERN, self.html)
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index dc2f29519..f9953b994 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -100,20 +100,20 @@ class NCryptIn(Crypter):
         return True
 
     def isProtected(self):
-        form_match = re.search(r'<form.*?name.*?protected.*?>(.*?)</form>', self.cleanedHtml, re.DOTALL)
-        if form_match:
-            form_content = form_match.group(1)
+        form = re.search(r'<form.*?name.*?protected.*?>(.*?)</form>', self.cleanedHtml, re.DOTALL)
+        if form is not None:
+            content = form.group(1)
             for keyword in ("password", "captcha"):
-                if keyword in form_content:
+                if keyword in content:
                     self.protection_type = keyword
                     self.logDebug("Links are %s protected" % self.protection_type)
                     return True
         return False
 
     def getPackageInfo(self):
-        m = re.search(self.NAME_PATTERN, self.html)
-        if m:
-            name = folder = m.group('N').strip()
+        found = re.search(self.NAME_PATTERN, self.html)
+        if found:
+            name = folder = found.group('N').strip()
             self.logDebug("Found name [%s] and folder [%s] in package info" % (name, folder))
         else:
             name = self.package.name
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index b8db5d88c..e138b6f17 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -23,7 +23,7 @@ class QuickshareCzFolder(Crypter):
         html = self.load(pyfile.url)
 
         found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-        if not found:
+        if found is None:
             self.fail("Parse error (FOLDER)")
         self.urls.extend(re.findall(self.LINK_PATTERN, found.group(1)))
 
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 13327dd2b..b56f90e15 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -113,7 +113,7 @@ class ShareLinksBiz(Crypter):
 
         # Resolve captcha
         href = self._resolveCoords(coords, captchaMap)
-        if not href:
+        if href is None:
             self.logDebug("Invalid captcha resolving, retrying")
             self.invalidCaptcha()
             self.setWait(5, False)
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index f9ddd3c84..43dbb4807 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -27,7 +27,7 @@ class UlozToFolder(Crypter):
         for i in xrange(1, 100):
             self.logInfo("Fetching links from page %i" % i)
             found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-            if not found:
+            if found is None:
                 self.fail("Parse error (FOLDER)")
 
             new_links.extend(re.findall(self.LINK_PATTERN, found.group(1)))
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index dfac9140f..216fbb670 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -100,9 +100,9 @@ class YoutubeBatch(Crypter):
         return list(self._getVideosId(p_id))
 
     def decrypt(self, pyfile):
-        match = re.match(self.__pattern__, pyfile.url)
-        m_id = match.group("ID")
-        m_type = match.group("TYPE")
+        m = re.match(self.__pattern__, pyfile.url)
+        m_id = m.group("ID")
+        m_type = m.group("TYPE")
 
         if m_type == "user":
             self.logDebug("Url recognized as Channel")
-- 
cgit v1.2.3


From 9395182da7afed55a29bde1c7cbefe4204e783f0 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 20 Jul 2014 03:02:09 +0200
Subject: Store all re.search/match object as "m" instead "found"

---
 module/plugins/crypter/CzshareComFolder.py   |  6 +++---
 module/plugins/crypter/DuckCryptInfo.py      | 30 ++++++++++++++--------------
 module/plugins/crypter/EmbeduploadCom.py     |  8 ++++----
 module/plugins/crypter/LinkdecrypterCom.py   | 18 ++++++++---------
 module/plugins/crypter/MediafireComFolder.py | 12 +++++------
 module/plugins/crypter/MultiloadCz.py        | 14 ++++++-------
 module/plugins/crypter/MultiuploadCom.py     |  4 ++--
 module/plugins/crypter/NCryptIn.py           | 10 +++++-----
 module/plugins/crypter/QuickshareCzFolder.py |  6 +++---
 module/plugins/crypter/UlozToFolder.py       | 12 +++++------
 10 files changed, 60 insertions(+), 60 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index 76762b69b..b305575a2 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -22,10 +22,10 @@ class CzshareComFolder(Crypter):
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
-        found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-        if found is None:
+        m = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
+        if m is None:
             self.fail("Parse error (FOLDER)")
 
-        self.urls.extend(re.findall(self.LINK_PATTERN, found.group(1)))
+        self.urls.extend(re.findall(self.LINK_PATTERN, m.group(1)))
         if not self.urls:
             self.fail('Could not extract any links')
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 8203f0978..7e13a62f0 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -23,28 +23,28 @@ class DuckCryptInfo(Crypter):
         url = pyfile.url
         # seems we don't need to wait
         #src = self.req.load(str(url))
-        #found = re.search(self.TIMER_PATTERN, src)
-        #if found:
-        #    self.logDebug("Sleeping for" % found.group(1))
-        #    self.setWait(int(found.group(1)) ,False)
-        found = re.match(self.__pattern__, url)
-        if found is None:
+        #m = re.search(self.TIMER_PATTERN, src)
+        #if m:
+        #    self.logDebug("Sleeping for" % m.group(1))
+        #    self.setWait(int(m.group(1)) ,False)
+        m = re.match(self.__pattern__, url)
+        if m is None:
             self.fail('Weird error in link')
-        if str(found.group(1)) == "link":
+        if str(m.group(1)) == "link":
             self.handleLink(url)
         else:
-            self.handleFolder(found)
+            self.handleFolder(m)
 
-    def handleFolder(self, found):
-        src = self.load("http://duckcrypt.info/ajax/auth.php?hash=" + str(found.group(2)))
-        found = re.match(self.__pattern__, src)
-        self.logDebug("Redirectet to " + str(found.group(0)))
-        src = self.load(str(found.group(0)))
+    def handleFolder(self, m):
+        src = self.load("http://duckcrypt.info/ajax/auth.php?hash=" + str(m.group(2)))
+        m = re.match(self.__pattern__, src)
+        self.logDebug("Redirectet to " + str(m.group(0)))
+        src = self.load(str(m.group(0)))
         soup = BeautifulSoup(src)
         cryptlinks = soup.findAll("div", attrs={"class": "folderbox"})
         self.logDebug("Redirectet to " + str(cryptlinks))
         if not cryptlinks:
-            self.fail('no links found - (Plugin out of date?)')
+            self.fail('no links m - (Plugin out of date?)')
         for clink in cryptlinks:
             if clink.find("a"):
                 self.handleLink(clink.find("a")['href'])
@@ -54,4 +54,4 @@ class DuckCryptInfo(Crypter):
         soup = BeautifulSoup(src)
         self.urls = [soup.find("iframe")["src"]]
         if not self.urls:
-            self.logDebug('no links found - (Plugin out of date?)')
+            self.logDebug('no links m - (Plugin out of date?)')
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 823e3f25f..052f5ca84 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -25,19 +25,19 @@ class EmbeduploadCom(Crypter):
         self.html = self.load(pyfile.url, decode=True)
         tmp_links = []
 
-        found = re.findall(self.LINK_PATTERN, self.html)
-        if found:
+        m = re.findall(self.LINK_PATTERN, self.html)
+        if m:
             prefered_set = set(self.getConfig("preferedHoster").split('|'))
             prefered_set = map(lambda s: s.lower().split('.')[0], prefered_set)
             print "PF", prefered_set
-            tmp_links.extend([x[1] for x in found if x[0] in prefered_set])
+            tmp_links.extend([x[1] for x in m if x[0] in prefered_set])
             self.urls = self.getLocation(tmp_links)
 
             if not self.urls:
                 ignored_set = set(self.getConfig("ignoredHoster").split('|'))
                 ignored_set = map(lambda s: s.lower().split('.')[0], ignored_set)
                 print "IG", ignored_set
-                tmp_links.extend([x[1] for x in found if x[0] not in ignored_set])
+                tmp_links.extend([x[1] for x in m if x[0] not in ignored_set])
                 self.urls = self.getLocation(tmp_links)
 
         if not self.urls:
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 31c4d36b7..2671c19c6 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -72,17 +72,17 @@ class LinkdecrypterCom(Crypter):
         self.html = self.load('http://linkdecrypter.com/', post=post_dict, cookies=True, decode=True)
 
         while self.passwords or retries:
-            found = re.search(self.TEXTAREA_PATTERN, self.html, flags=re.DOTALL)
-            if found:
-                return [x for x in found.group(1).splitlines() if '[LINK-ERROR]' not in x]
+            m = re.search(self.TEXTAREA_PATTERN, self.html, flags=re.DOTALL)
+            if m:
+                return [x for x in m.group(1).splitlines() if '[LINK-ERROR]' not in x]
 
-            found = re.search(self.CAPTCHA_PATTERN, self.html)
-            if found:
-                captcha_url = 'http://linkdecrypter.com/' + found.group(1)
-                result_type = "positional" if "getPos" in found.group(2) else "textual"
+            m = re.search(self.CAPTCHA_PATTERN, self.html)
+            if m:
+                captcha_url = 'http://linkdecrypter.com/' + m.group(1)
+                result_type = "positional" if "getPos" in m.group(2) else "textual"
 
-                found = re.search(r"<p><i><b>([^<]+)</b></i></p>", self.html)
-                msg = found.group(1) if found else ""
+                m = re.search(r"<p><i><b>([^<]+)</b></i></p>", self.html)
+                msg = m.group(1) if m else ""
                 self.logInfo("Captcha protected link", result_type, msg)
 
                 captcha = self.decryptCaptcha(captcha_url, result_type=result_type)
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index 5f1b9ad1b..5dd4e555b 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -28,15 +28,15 @@ class MediafireComFolder(Crypter):
         if result == 0:
             # load and parse html            
             html = self.load(pyfile.url)
-            found = re.search(self.FILE_URL_PATTERN, html)
-            if found:
+            m = re.search(self.FILE_URL_PATTERN, html)
+            if m:
                 # file page
-                self.urls.append("http://www.mediafire.com/file/%s" % found.group(1))
+                self.urls.append("http://www.mediafire.com/file/%s" % m.group(1))
             else:
                 # folder page
-                found = re.search(self.FOLDER_KEY_PATTERN, html)
-                if found:
-                    folder_key = found.group(1)
+                m = re.search(self.FOLDER_KEY_PATTERN, html)
+                if m:
+                    folder_key = m.group(1)
                     self.logDebug("FOLDER KEY: %s" % folder_key)
 
                     json_resp = json_loads(self.load(
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index f93681be9..4b39872a7 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -25,18 +25,18 @@ class MultiloadCz(Crypter):
         self.html = self.load(pyfile.url, decode=True)
 
         if re.match(self.__pattern__, pyfile.url).group(1) == "slozka":
-            found = re.search(self.FOLDER_PATTERN, self.html)
-            if found:
-                self.urls.extend(found.group(1).split())
+            m = re.search(self.FOLDER_PATTERN, self.html)
+            if m:
+                self.urls.extend(m.group(1).split())
         else:
-            found = re.findall(self.LINK_PATTERN, self.html)
-            if found:
+            m = re.findall(self.LINK_PATTERN, self.html)
+            if m:
                 prefered_set = set(self.getConfig("usedHoster").split('|'))
-                self.urls.extend([x[1] for x in found if x[0] in prefered_set])
+                self.urls.extend([x[1] for x in m if x[0] in prefered_set])
 
                 if not self.urls:
                     ignored_set = set(self.getConfig("ignoredHoster").split('|'))
-                    self.urls.extend([x[1] for x in found if x[0] not in ignored_set])
+                    self.urls.extend([x[1] for x in m if x[0] not in ignored_set])
 
         if not self.urls:
             self.fail('Could not extract any links')
diff --git a/module/plugins/crypter/MultiuploadCom.py b/module/plugins/crypter/MultiuploadCom.py
index 84d8d0830..f5c0e292b 100644
--- a/module/plugins/crypter/MultiuploadCom.py
+++ b/module/plugins/crypter/MultiuploadCom.py
@@ -25,8 +25,8 @@ class MultiuploadCom(Crypter):
 
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url)
-        found = re.search(self.ML_LINK_PATTERN, self.html)
-        ml_url = found.group(1) if found else None
+        m = re.search(self.ML_LINK_PATTERN, self.html)
+        ml_url = m.group(1) if m else None
 
         json_list = json_loads(self.load("http://multiupload.com/progress/", get={
             "d": re.match(self.__pattern__, pyfile.url).group(1),
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index f9953b994..9a9d76f51 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -95,7 +95,7 @@ class NCryptIn(Crypter):
 
     def isOnline(self):
         if "Your folder does not exist" in self.cleanedHtml:
-            self.logDebug("File not found")
+            self.logDebug("File not m")
             return False
         return True
 
@@ -111,14 +111,14 @@ class NCryptIn(Crypter):
         return False
 
     def getPackageInfo(self):
-        found = re.search(self.NAME_PATTERN, self.html)
-        if found:
-            name = folder = found.group('N').strip()
+        m = re.search(self.NAME_PATTERN, self.html)
+        if m:
+            name = folder = m.group('N').strip()
             self.logDebug("Found name [%s] and folder [%s] in package info" % (name, folder))
         else:
             name = self.package.name
             folder = self.package.folder
-            self.logDebug("Package info not found, defaulting to pyfile name [%s] and folder [%s]" % (name, folder))
+            self.logDebug("Package info not m, defaulting to pyfile name [%s] and folder [%s]" % (name, folder))
         return name, folder
 
     def unlockProtection(self):
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index e138b6f17..1e569a20a 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -22,10 +22,10 @@ class QuickshareCzFolder(Crypter):
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
-        found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-        if found is None:
+        m = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
+        if m is None:
             self.fail("Parse error (FOLDER)")
-        self.urls.extend(re.findall(self.LINK_PATTERN, found.group(1)))
+        self.urls.extend(re.findall(self.LINK_PATTERN, m.group(1)))
 
         if not self.urls:
             self.fail('Could not extract any links')
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index 43dbb4807..dfa1bb8c4 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -26,14 +26,14 @@ class UlozToFolder(Crypter):
         new_links = []
         for i in xrange(1, 100):
             self.logInfo("Fetching links from page %i" % i)
-            found = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
-            if found is None:
+            m = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
+            if m is None:
                 self.fail("Parse error (FOLDER)")
 
-            new_links.extend(re.findall(self.LINK_PATTERN, found.group(1)))
-            found = re.search(self.NEXT_PAGE_PATTERN, html)
-            if found:
-                html = self.load("http://ulozto.net/" + found.group(1))
+            new_links.extend(re.findall(self.LINK_PATTERN, m.group(1)))
+            m = re.search(self.NEXT_PAGE_PATTERN, html)
+            if m:
+                html = self.load("http://ulozto.net/" + m.group(1))
             else:
                 break
         else:
-- 
cgit v1.2.3


From a1495eb2f9502fdf29974458845f928025bedf53 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 26 Jul 2014 02:36:15 +0200
Subject: Prefer single quote for dict key

---
 module/plugins/crypter/DuckCryptInfo.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 7e13a62f0..456c13606 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -52,6 +52,6 @@ class DuckCryptInfo(Crypter):
     def handleLink(self, url):
         src = self.load(url)
         soup = BeautifulSoup(src)
-        self.urls = [soup.find("iframe")["src"]]
+        self.urls = [soup.find("iframe")['src']]
         if not self.urls:
             self.logDebug('no links m - (Plugin out of date?)')
-- 
cgit v1.2.3


From ba916633f2bedb04c7358000b91aed69f52e8e43 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 1 Aug 2014 19:35:59 +0200
Subject: Remove trailing whitespaces + remove license headers + import urllib
 methods directly + sort and fix key attributes + use save_join instead join +
 sort some import declarations + other minor code cosmetics

---
 module/plugins/crypter/BitshareComFolder.py     | 16 +---------------
 module/plugins/crypter/C1neonCom.py             |  2 +-
 module/plugins/crypter/ChipDe.py                |  2 +-
 module/plugins/crypter/CrockoComFolder.py       |  2 +-
 module/plugins/crypter/CryptItCom.py            |  2 +-
 module/plugins/crypter/CzshareComFolder.py      |  2 +-
 module/plugins/crypter/DDLMusicOrg.py           |  2 +-
 module/plugins/crypter/DailymotionBatch.py      | 18 ++----------------
 module/plugins/crypter/DataHuFolder.py          | 16 +---------------
 module/plugins/crypter/DdlstorageComFolder.py   | 16 +---------------
 module/plugins/crypter/DepositfilesComFolder.py |  2 +-
 module/plugins/crypter/Dereferer.py             | 22 ++++------------------
 module/plugins/crypter/DlProtectCom.py          | 16 +---------------
 module/plugins/crypter/DontKnowMe.py            |  7 ++++---
 module/plugins/crypter/DuckCryptInfo.py         |  4 +++-
 module/plugins/crypter/DuploadOrgFolder.py      | 16 +---------------
 module/plugins/crypter/EasybytezComFolder.py    | 16 +---------------
 module/plugins/crypter/EmbeduploadCom.py        |  2 +-
 module/plugins/crypter/FilebeerInfoFolder.py    |  2 +-
 module/plugins/crypter/FilecloudIoFolder.py     | 16 +---------------
 module/plugins/crypter/FilefactoryComFolder.py  |  2 +-
 module/plugins/crypter/FilerNetFolder.py        |  2 +-
 module/plugins/crypter/FileserveComFolder.py    |  2 +-
 module/plugins/crypter/FilestubeCom.py          | 16 +---------------
 module/plugins/crypter/FiletramCom.py           | 16 +---------------
 module/plugins/crypter/FiredriveComFolder.py    | 16 +---------------
 module/plugins/crypter/FourChanOrg.py           |  6 +++---
 module/plugins/crypter/FreakhareComFolder.py    | 16 +---------------
 module/plugins/crypter/FreetexthostCom.py       | 16 +---------------
 module/plugins/crypter/FshareVnFolder.py        |  2 +-
 module/plugins/crypter/GooGl.py                 | 16 +---------------
 module/plugins/crypter/HoerbuchIn.py            |  5 +++--
 module/plugins/crypter/HotfileFolderCom.py      |  2 +-
 module/plugins/crypter/ILoadTo.py               |  2 +-
 module/plugins/crypter/ImgurComAlbum.py         |  2 +-
 module/plugins/crypter/LetitbitNetFolder.py     |  2 +-
 module/plugins/crypter/LinkSaveIn.py            |  5 +----
 module/plugins/crypter/LinkdecrypterCom.py      | 17 +----------------
 module/plugins/crypter/LixIn.py                 |  2 +-
 module/plugins/crypter/LofCc.py                 |  2 +-
 module/plugins/crypter/MBLinkInfo.py            |  2 +-
 module/plugins/crypter/MediafireComFolder.py    |  4 ++--
 module/plugins/crypter/Movie2kTo.py             |  2 +-
 module/plugins/crypter/MultiUpOrg.py            | 17 +----------------
 module/plugins/crypter/MultiloadCz.py           |  2 +-
 module/plugins/crypter/MultiuploadCom.py        |  2 +-
 module/plugins/crypter/NCryptIn.py              |  6 +++---
 module/plugins/crypter/NetfolderIn.py           |  6 +++---
 module/plugins/crypter/NosvideoCom.py           |  2 +-
 module/plugins/crypter/OneKhDe.py               |  2 +-
 module/plugins/crypter/OronComFolder.py         |  2 +-
 module/plugins/crypter/PastebinCom.py           | 16 +---------------
 module/plugins/crypter/QuickshareCzFolder.py    |  2 +-
 module/plugins/crypter/RSLayerCom.py            |  2 +-
 module/plugins/crypter/RelinkUs.py              |  8 ++++----
 module/plugins/crypter/SafelinkingNet.py        |  6 ++++--
 module/plugins/crypter/SecuredIn.py             |  2 +-
 module/plugins/crypter/SerienjunkiesOrg.py      |  3 ++-
 module/plugins/crypter/ShareLinksBiz.py         |  2 +-
 module/plugins/crypter/ShareRapidComFolder.py   |  2 +-
 module/plugins/crypter/SpeedLoadOrgFolder.py    | 16 +---------------
 module/plugins/crypter/StealthTo.py             |  2 +-
 module/plugins/crypter/TnyCz.py                 | 17 +----------------
 module/plugins/crypter/TrailerzoneInfo.py       |  2 +-
 module/plugins/crypter/TurbobitNetFolder.py     | 16 +---------------
 module/plugins/crypter/TusfilesNetFolder.py     | 16 +---------------
 module/plugins/crypter/UlozToFolder.py          |  2 +-
 module/plugins/crypter/UploadedToFolder.py      | 16 +---------------
 module/plugins/crypter/WiiReloadedOrg.py        |  2 +-
 module/plugins/crypter/XupPl.py                 |  2 +-
 module/plugins/crypter/YoutubeBatch.py          | 17 +----------------
 71 files changed, 96 insertions(+), 432 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py
index 2afe990df..219dabce8 100644
--- a/module/plugins/crypter/BitshareComFolder.py
+++ b/module/plugins/crypter/BitshareComFolder.py
@@ -1,26 +1,12 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class BitshareComFolder(SimpleCrypter):
     __name__ = "BitshareComFolder"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?bitshare\.com/\?d=\w+'
 
diff --git a/module/plugins/crypter/C1neonCom.py b/module/plugins/crypter/C1neonCom.py
index fc1188a11..829ed63d6 100644
--- a/module/plugins/crypter/C1neonCom.py
+++ b/module/plugins/crypter/C1neonCom.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class C1neonCom(DeadCrypter):
     __name__ = "C1neonCom"
-    __version__ = "0.05"
     __type__ = "crypter"
+    __version__ = "0.05"
 
     __pattern__ = r'http://(?:www\.)?c1neon.com/.*?'
 
diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index f59903170..a75cc5e0e 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -6,8 +6,8 @@ from module.plugins.Crypter import Crypter
 
 class ChipDe(Crypter):
     __name__ = "ChipDe"
-    __version__ = "0.1"
     __type__ = "crypter"
+    __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?chip.de/video/.*\.html'
 
diff --git a/module/plugins/crypter/CrockoComFolder.py b/module/plugins/crypter/CrockoComFolder.py
index 8215e23c4..56abeac29 100644
--- a/module/plugins/crypter/CrockoComFolder.py
+++ b/module/plugins/crypter/CrockoComFolder.py
@@ -5,8 +5,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class CrockoComFolder(SimpleCrypter):
     __name__ = "CrockoComFolder"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?crocko.com/f/.*'
 
diff --git a/module/plugins/crypter/CryptItCom.py b/module/plugins/crypter/CryptItCom.py
index 331ddd5c8..66c5e7ca7 100644
--- a/module/plugins/crypter/CryptItCom.py
+++ b/module/plugins/crypter/CryptItCom.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class CryptItCom(DeadCrypter):
     __name__ = "CryptItCom"
-    __version__ = "0.11"
     __type__ = "crypter"
+    __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?crypt-it\.com/(s|e|d|c)/[\w]+'
 
diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index b305575a2..64affc867 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -6,8 +6,8 @@ from module.plugins.Crypter import Crypter
 
 class CzshareComFolder(Crypter):
     __name__ = "CzshareComFolder"
-    __version__ = "0.2"
     __type__ = "crypter"
+    __version__ = "0.2"
 
     __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/folders/.*'
 
diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py
index c80ec471e..f5e7203d3 100644
--- a/module/plugins/crypter/DDLMusicOrg.py
+++ b/module/plugins/crypter/DDLMusicOrg.py
@@ -9,8 +9,8 @@ from module.plugins.Crypter import Crypter
 
 class DDLMusicOrg(Crypter):
     __name__ = "DDLMusicOrg"
-    __version__ = "0.3"
     __type__ = "crypter"
+    __version__ = "0.3"
 
     __pattern__ = r'http://(?:www\.)?ddl-music\.org/captcha/ddlm_cr\d\.php\?\d+\?\d+'
 
diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py
index c86c966d8..e43d4e1fd 100644
--- a/module/plugins/crypter/DailymotionBatch.py
+++ b/module/plugins/crypter/DailymotionBatch.py
@@ -1,22 +1,8 @@
 # -*- coding: utf-8 -*-
 
-"""
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3 of the License,
-    or (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-    See the GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, see <http://www.gnu.org/licenses/>.
-"""
+import re
 
 from urlparse import urljoin
-import re
 
 from module.common.json_layer import json_loads
 from module.plugins.Crypter import Crypter
@@ -25,8 +11,8 @@ from module.utils import save_join
 
 class DailymotionBatch(Crypter):
     __name__ = "DailymotionBatch"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'https?://(?:www\.)?dailymotion\.com/((playlists/)?(?P<TYPE>playlist|user)/)?(?P<ID>[\w^_]+)(?(TYPE)|#)'
 
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 553936b1a..4f6116100 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -1,18 +1,4 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 import re
 
@@ -21,8 +7,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class DataHuFolder(SimpleCrypter):
     __name__ = "DataHuFolder"
-    __version__ = "0.03"
     __type__ = "crypter"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?data.hu/dir/\w+'
 
diff --git a/module/plugins/crypter/DdlstorageComFolder.py b/module/plugins/crypter/DdlstorageComFolder.py
index 4c79407e4..70a7312be 100644
--- a/module/plugins/crypter/DdlstorageComFolder.py
+++ b/module/plugins/crypter/DdlstorageComFolder.py
@@ -1,26 +1,12 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class DdlstorageComFolder(SimpleCrypter):
     __name__ = "DdlstorageComFolder"
-    __version__ = "0.02"
     __type__ = "crypter"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?ddlstorage.com/folder/\w{10}'
 
diff --git a/module/plugins/crypter/DepositfilesComFolder.py b/module/plugins/crypter/DepositfilesComFolder.py
index bb08b627b..b7c273f0b 100644
--- a/module/plugins/crypter/DepositfilesComFolder.py
+++ b/module/plugins/crypter/DepositfilesComFolder.py
@@ -5,8 +5,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class DepositfilesComFolder(SimpleCrypter):
     __name__ = "DepositfilesComFolder"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?depositfiles.com/folders/\w+'
 
diff --git a/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py
index 405893560..21529ddfd 100644
--- a/module/plugins/crypter/Dereferer.py
+++ b/module/plugins/crypter/Dereferer.py
@@ -1,30 +1,16 @@
 # -*- coding: utf-8 -*-
 
-"""
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3 of the License,
-    or (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-    See the GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, see <http://www.gnu.org/licenses/>.
-"""
-
 import re
-import urllib
+
+from urllib import unquote
 
 from module.plugins.Crypter import Crypter
 
 
 class Dereferer(Crypter):
     __name__ = "Dereferer"
-    __version__ = "0.1"
     __type__ = "crypter"
+    __version__ = "0.1"
 
     __pattern__ = r'https?://([^/]+)/.*?(?P<url>(ht|f)tps?(://|%3A%2F%2F).*)'
 
@@ -35,4 +21,4 @@ class Dereferer(Crypter):
 
     def decrypt(self, pyfile):
         link = re.match(self.__pattern__, pyfile.url).group('url')
-        self.urls = [urllib.unquote(link).rstrip('+')]
+        self.urls = [unquote(link).rstrip('+')]
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index 6bd6bc5b5..4c958437a 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -1,18 +1,4 @@
 # -*- coding: utf-8 -*-
-###############################################################################
-#  This program 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.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU Affero General Public License for more details.
-#
-#  You should have received a copy of the GNU Affero General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-###############################################################################
 
 import re
 
@@ -24,8 +10,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class DlProtectCom(SimpleCrypter):
     __name__ = "DlProtectCom"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?dl-protect\.com/((en|fr)/)?(?P<ID>\w+)'
 
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index dac385e7c..23fbb8d52 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -1,15 +1,16 @@
 # -*- coding: utf-8 -*-
 
 import re
-import urllib
+
+from urllib import unquote
 
 from module.plugins.Crypter import Crypter
 
 
 class DontKnowMe(Crypter):
     __name__ = "DontKnowMe"
-    __version__ = "0.1"
     __type__ = "crypter"
+    __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?dontknow.me/at/\?.+$'
 
@@ -22,4 +23,4 @@ class DontKnowMe(Crypter):
 
     def decrypt(self, pyfile):
         link = re.findall(self.LINK_PATTERN, pyfile.url)[0]
-        self.urls = [urllib.unquote(link)]
+        self.urls = [unquote(link)]
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 456c13606..e7a5a59e9 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -1,14 +1,16 @@
 # -*- coding: utf-8 -*-
 
 import re
+
 from module.lib.BeautifulSoup import BeautifulSoup
+
 from module.plugins.Crypter import Crypter
 
 
 class DuckCryptInfo(Crypter):
     __name__ = "DuckCryptInfo"
-    __version__ = "0.02"
     __type__ = "crypter"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?duckcrypt.info/(folder|wait|link)/(\w+)/?(\w*)'
 
diff --git a/module/plugins/crypter/DuploadOrgFolder.py b/module/plugins/crypter/DuploadOrgFolder.py
index f2b8da2bd..6f764f687 100644
--- a/module/plugins/crypter/DuploadOrgFolder.py
+++ b/module/plugins/crypter/DuploadOrgFolder.py
@@ -1,26 +1,12 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class DuploadOrgFolder(SimpleCrypter):
     __name__ = "DuploadOrgFolder"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?dupload\.org/folder/\d+/'
 
diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index 7c78b7946..7832bef5f 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -1,26 +1,12 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class EasybytezComFolder(SimpleCrypter):
     __name__ = "EasybytezComFolder"
-    __version__ = "0.06"
     __type__ = "crypter"
+    __version__ = "0.06"
 
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
 
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 052f5ca84..6b876ed7f 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -7,8 +7,8 @@ from module.network.HTTPRequest import BadHeader
 
 class EmbeduploadCom(Crypter):
     __name__ = "EmbeduploadCom"
-    __version__ = "0.02"
     __type__ = "crypter"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?embedupload.com/\?d=.*'
     __config__ = [("preferedHoster", "str", "Prefered hoster list (bar-separated) ", "embedupload"),
diff --git a/module/plugins/crypter/FilebeerInfoFolder.py b/module/plugins/crypter/FilebeerInfoFolder.py
index 7a7528066..0743dcb0f 100644
--- a/module/plugins/crypter/FilebeerInfoFolder.py
+++ b/module/plugins/crypter/FilebeerInfoFolder.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class FilebeerInfoFolder(DeadCrypter):
     __name__ = "FilebeerInfoFolder"
-    __version__ = "0.02"
     __type__ = "crypter"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?filebeer\.info/(\d+~f).*'
 
diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
index d3df7c469..9ec950061 100644
--- a/module/plugins/crypter/FilecloudIoFolder.py
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -1,26 +1,12 @@
 # -*- coding: utf-8 -*-
-###############################################################################
-#  This program 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.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU Affero General Public License for more details.
-#
-#  You should have received a copy of the GNU Affero General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-###############################################################################
 
 from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class FilecloudIoFolder(SimpleCrypter):
     __name__ = "FilecloudIoFolder"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+'
 
diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index ce20ee6eb..562c56732 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -5,8 +5,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FilefactoryComFolder(SimpleCrypter):
     __name__ = "FilefactoryComFolder"
-    __version__ = "0.2"
     __type__ = "crypter"
+    __version__ = "0.2"
 
     __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+'
 
diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
index 77e7409e9..9951661b5 100644
--- a/module/plugins/crypter/FilerNetFolder.py
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -5,8 +5,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FilerNetFolder(SimpleCrypter):
     __name__ = "FilerNetFolder"
-    __version__ = "0.3"
     __type__ = "crypter"
+    __version__ = "0.3"
 
     __pattern__ = r'https?://filer\.net/folder/\w{16}'
 
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index 4a0d5a416..2db6baf0e 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -7,8 +7,8 @@ from module.plugins.Crypter import Crypter
 
 class FileserveComFolder(Crypter):
     __name__ = "FileserveComFolder"
-    __version__ = "0.11"
     __type__ = "crypter"
+    __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?fileserve.com/list/\w+'
 
diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py
index 7576319e0..f0aaaa579 100644
--- a/module/plugins/crypter/FilestubeCom.py
+++ b/module/plugins/crypter/FilestubeCom.py
@@ -1,26 +1,12 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class FilestubeCom(SimpleCrypter):
     __name__ = "FilestubeCom"
-    __version__ = "0.03"
     __type__ = "crypter"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?filestube\.(?:com|to)/\w+'
 
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index 2491c1322..7052955cf 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -1,26 +1,12 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class FiletramCom(SimpleCrypter):
     __name__ = "FiletramCom"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?filetram.com/[^/]+/.+'
 
diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py
index c0db299b0..a94d0847f 100644
--- a/module/plugins/crypter/FiredriveComFolder.py
+++ b/module/plugins/crypter/FiredriveComFolder.py
@@ -1,18 +1,4 @@
 # -*- coding: utf-8 -*-
-###############################################################################
-#  This program 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.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU Affero General Public License for more details.
-#
-#  You should have received a copy of the GNU Affero General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-###############################################################################
 
 import re
 
@@ -21,8 +7,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FiredriveComFolder(SimpleCrypter):
     __name__ = "FiredriveComFolder"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/share/.+'
 
diff --git a/module/plugins/crypter/FourChanOrg.py b/module/plugins/crypter/FourChanOrg.py
index a911c64d6..c497fa799 100644
--- a/module/plugins/crypter/FourChanOrg.py
+++ b/module/plugins/crypter/FourChanOrg.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
-# Based on 4chandl by Roland Beermann
-# https://gist.github.com/enkore/3492599
+#
+# Based on 4chandl by Roland Beermann (https://gist.github.com/enkore/3492599)
 
 import re
 
@@ -9,8 +9,8 @@ from module.plugins.Crypter import Crypter
 
 class FourChanOrg(Crypter):
     __name__ = "FourChanOrg"
-    __version__ = "0.3"
     __type__ = "crypter"
+    __version__ = "0.3"
 
     __pattern__ = r'http://(?:www\.)?boards\.4chan.org/\w+/res/(\d+)'
 
diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py
index ddc05199b..2a6877891 100644
--- a/module/plugins/crypter/FreakhareComFolder.py
+++ b/module/plugins/crypter/FreakhareComFolder.py
@@ -1,18 +1,4 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 import re
 
@@ -21,8 +7,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FreakhareComFolder(SimpleCrypter):
     __name__ = "FreakhareComFolder"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?freakshare\.com/folder/.+'
 
diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py
index a6fb78d8e..bd8a90ce5 100644
--- a/module/plugins/crypter/FreetexthostCom.py
+++ b/module/plugins/crypter/FreetexthostCom.py
@@ -1,18 +1,4 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 import re
 
@@ -21,8 +7,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FreetexthostCom(SimpleCrypter):
     __name__ = "FreetexthostCom"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?freetexthost\.com/\w+'
 
diff --git a/module/plugins/crypter/FshareVnFolder.py b/module/plugins/crypter/FshareVnFolder.py
index 9f5162125..5976ff6d5 100644
--- a/module/plugins/crypter/FshareVnFolder.py
+++ b/module/plugins/crypter/FshareVnFolder.py
@@ -5,8 +5,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class FshareVnFolder(SimpleCrypter):
     __name__ = "FshareVnFolder"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?fshare.vn/folder/.*'
 
diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py
index 52bf93ed3..1d9c2801f 100644
--- a/module/plugins/crypter/GooGl.py
+++ b/module/plugins/crypter/GooGl.py
@@ -1,18 +1,4 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 from module.plugins.Crypter import Crypter
 from module.common.json_layer import json_loads
@@ -20,8 +6,8 @@ from module.common.json_layer import json_loads
 
 class GooGl(Crypter):
     __name__ = "GooGl"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'https?://(?:www\.)?goo\.gl/\w+'
 
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index 88fc57244..924ce5d3a 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -2,14 +2,15 @@
 
 import re
 
-from module.plugins.Crypter import Crypter
 from module.lib.BeautifulSoup import BeautifulSoup, BeautifulStoneSoup
 
+from module.plugins.Crypter import Crypter
+
 
 class HoerbuchIn(Crypter):
     __name__ = "HoerbuchIn"
-    __version__ = "0.6"
     __type__ = "crypter"
+    __version__ = "0.6"
 
     __pattern__ = r'http://(?:www\.)?hoerbuch\.in/(wp/horbucher/\d+/.+/|tp/out.php\?.+|protection/folder_\d+\.html)'
 
diff --git a/module/plugins/crypter/HotfileFolderCom.py b/module/plugins/crypter/HotfileFolderCom.py
index 433dc9755..3efd8fc87 100644
--- a/module/plugins/crypter/HotfileFolderCom.py
+++ b/module/plugins/crypter/HotfileFolderCom.py
@@ -7,8 +7,8 @@ from module.plugins.Crypter import Crypter
 
 class HotfileFolderCom(Crypter):
     __name__ = "HotfileFolderCom"
-    __version__ = "0.1"
     __type__ = "crypter"
+    __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?hotfile.com/list/\w+/\w+'
 
diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py
index e003e07f4..d7818570a 100644
--- a/module/plugins/crypter/ILoadTo.py
+++ b/module/plugins/crypter/ILoadTo.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class ILoadTo(DeadCrypter):
     __name__ = "ILoadTo"
-    __version__ = "0.11"
     __type__ = "crypter"
+    __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?iload\.to/go/\d+-[\w\.-]+/'
 
diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index 394673586..eb1f4441a 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -6,8 +6,8 @@ from module.utils import uniqify
 
 class ImgurComAlbum(SimpleCrypter):
     __name__ = "ImgurComAlbum"
-    __version__ = "0.4"
     __type__ = "crypter"
+    __version__ = "0.4"
 
     __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}'
 
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index adb2918a6..0297d2007 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -6,8 +6,8 @@ from module.plugins.Crypter import Crypter
 
 class LetitbitNetFolder(Crypter):
     __name__ = "LetitbitNetFolder"
-    __version__ = "0.1"
     __type__ = "crypter"
+    __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?letitbit.net/folder/\w+'
 
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 6e024c766..060a434d2 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -1,10 +1,7 @@
 # -*- coding: utf-8 -*-
-
 #
-# v2.01 - hagg
 # * cnl2 and web links are skipped if JS is not available (instead of failing the package)
 # * only best available link source is used (priority: cnl2>rsdf>ccf>dlc>web
-#
 
 import base64
 import binascii
@@ -17,8 +14,8 @@ from module.unescape import unescape
 
 class LinkSaveIn(Crypter):
     __name__ = "LinkSaveIn"
-    __version__ = "2.01"
     __type__ = "crypter"
+    __version__ = "2.01"
 
     __pattern__ = r'http://(?:www\.)?linksave.in/(?P<id>\w+)$'
 
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 2671c19c6..21f05b962 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -1,28 +1,13 @@
 # -*- coding: utf-8 -*-
 
-"""
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3 of the License,
-    or (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-    See the GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, see <http://www.gnu.org/licenses/>.
-"""
-
 import re
 from module.plugins.Crypter import Crypter
 
 
 class LinkdecrypterCom(Crypter):
     __name__ = "LinkdecrypterCom"
-    __version__ = "0.27"
     __type__ = "crypter"
+    __version__ = "0.27"
 
     __pattern__ = None
 
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index a39173903..cdf87eeb2 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -7,8 +7,8 @@ from module.plugins.Crypter import Crypter
 
 class LixIn(Crypter):
     __name__ = "LixIn"
-    __version__ = "0.22"
     __type__ = "crypter"
+    __version__ = "0.22"
 
     __pattern__ = r'http://(www.)?lix.in/(?P<id>.*)'
 
diff --git a/module/plugins/crypter/LofCc.py b/module/plugins/crypter/LofCc.py
index 91106dc51..8a5cd86ee 100644
--- a/module/plugins/crypter/LofCc.py
+++ b/module/plugins/crypter/LofCc.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class LofCc(DeadCrypter):
     __name__ = "LofCc"
-    __version__ = "0.21"
     __type__ = "crypter"
+    __version__ = "0.21"
 
     __pattern__ = r'http://(?:www\.)?lof.cc/(.*)'
 
diff --git a/module/plugins/crypter/MBLinkInfo.py b/module/plugins/crypter/MBLinkInfo.py
index 0162c111d..4fc066e57 100644
--- a/module/plugins/crypter/MBLinkInfo.py
+++ b/module/plugins/crypter/MBLinkInfo.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class MBLinkInfo(DeadCrypter):
     __name__ = "MBLinkInfo"
-    __version__ = "0.03"
     __type__ = "crypter"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?mblink\.info/?\?id=(\d+)'
 
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index 5dd4e555b..bb7c90722 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -8,8 +8,8 @@ from module.common.json_layer import json_loads
 
 class MediafireComFolder(Crypter):
     __name__ = "MediafireComFolder"
-    __version__ = "0.14"
     __type__ = "crypter"
+    __version__ = "0.14"
 
     __pattern__ = r'http://(?:www\.)?mediafire\.com/(folder/|\?sharekey=|\?\w{13}($|[/#]))'
 
@@ -26,7 +26,7 @@ class MediafireComFolder(Crypter):
         self.logDebug('Location (%d): %s' % (result, url))
 
         if result == 0:
-            # load and parse html            
+            # load and parse html
             html = self.load(pyfile.url)
             m = re.search(self.FILE_URL_PATTERN, html)
             if m:
diff --git a/module/plugins/crypter/Movie2kTo.py b/module/plugins/crypter/Movie2kTo.py
index dcebf5e03..ba201621f 100644
--- a/module/plugins/crypter/Movie2kTo.py
+++ b/module/plugins/crypter/Movie2kTo.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class Movie2kTo(DeadCrypter):
     __name__ = "Movie2kTo"
-    __version__ = "0.51"
     __type__ = "crypter"
+    __version__ = "0.51"
 
     __pattern__ = r'http://(?:www\.)?movie2k\.to/(.*)\.html'
 
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index ab23def8d..ffeaa6f04 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -1,20 +1,5 @@
 # -*- coding: utf-8 -*-
 
-###############################################################################
-#  This program 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.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU Affero General Public License for more details.
-#
-#  You should have received a copy of the GNU Affero General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-###############################################################################
-
 import re
 from urlparse import urljoin
 
@@ -23,8 +8,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class MultiUpOrg(SimpleCrypter):
     __name__ = "MultiUpOrg"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?multiup\.org/(en|fr)/(?P<TYPE>project|download|miror)/\w+(/\w+)?'
 
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index 4b39872a7..7d43ec729 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -6,8 +6,8 @@ from module.plugins.Crypter import Crypter
 
 class MultiloadCz(Crypter):
     __name__ = "MultiloadCz"
-    __version__ = "0.4"
     __type__ = "crypter"
+    __version__ = "0.4"
 
     __pattern__ = r'http://(?:[^/]*\.)?multiload.cz/(stahnout|slozka)/.*'
     __config__ = [("usedHoster", "str", "Prefered hoster list (bar-separated) ", ""),
diff --git a/module/plugins/crypter/MultiuploadCom.py b/module/plugins/crypter/MultiuploadCom.py
index f5c0e292b..96cd734e4 100644
--- a/module/plugins/crypter/MultiuploadCom.py
+++ b/module/plugins/crypter/MultiuploadCom.py
@@ -9,8 +9,8 @@ from module.common.json_layer import json_loads
 
 class MultiuploadCom(Crypter):
     __name__ = "MultiuploadCom"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?multiupload.com/(\w+)'
     __config__ = [("preferedHoster", "str", "Prefered hoster list (bar-separated) ", "multiupload"),
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 9a9d76f51..1b7b8b3d4 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -12,8 +12,8 @@ from module.plugins.internal.CaptchaService import ReCaptcha
 
 class NCryptIn(Crypter):
     __name__ = "NCryptIn"
-    __version__ = "1.32"
     __type__ = "crypter"
+    __version__ = "1.32"
 
     __pattern__ = r'http://(?:www\.)?ncrypt.in/(?P<type>folder|link|frame)-([^/\?]+)'
 
@@ -54,7 +54,7 @@ class NCryptIn(Crypter):
             if not self.isOnline():
                 self.offline()
 
-            # Check for folder protection    
+            # Check for folder protection
             if self.isProtected():
                 self.html = self.unlockProtection()
                 self.cleanedHtml = self.removeHtmlCrap(self.html)
@@ -141,7 +141,7 @@ class NCryptIn(Crypter):
             self.logDebug("Captcha resolved [%s]" % captcha)
             postData['captcha'] = captcha
 
-        # Resolve recaptcha           
+        # Resolve recaptcha
         if "recaptcha" in form:
             self.logDebug("ReCaptcha protected")
             captcha_key = re.search(r'\?k=(.*?)"', form).group(1)
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 4c7660ab5..1c337391c 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -7,8 +7,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class NetfolderIn(SimpleCrypter):
     __name__ = "NetfolderIn"
-    __version__ = "0.6"
     __type__ = "crypter"
+    __version__ = "0.6"
 
     __pattern__ = r'http://(?:www\.)?netfolder.in/((?P<id1>\w+)/\w+|folder.php\?folder_id=(?P<id2>\w+))'
 
@@ -23,7 +23,7 @@ class NetfolderIn(SimpleCrypter):
         # Request package
         self.html = self.load(pyfile.url)
 
-        # Check for password protection    
+        # Check for password protection
         if self.isPasswordProtected():
             self.html = self.submitPassword()
             if not self.html:
@@ -55,7 +55,7 @@ class NetfolderIn(SimpleCrypter):
         url = "http://netfolder.in/folder.php?folder_id=" + id
         password = self.getPassword()
 
-        # Submit package password     
+        # Submit package password
         post = {'password': password, 'save': 'Absenden'}
         self.logDebug("Submitting password [%s] for protected links with id [%s]" % (password, id))
         html = self.load(url, {}, post)
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index 2656b9374..a3bb11b16 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -5,8 +5,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class NosvideoCom(SimpleCrypter):
     __name__ = "NosvideoCom"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?nosvideo\.com/\?v=\w+'
 
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index 91c591ec1..ba93278d5 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -8,8 +8,8 @@ from module.plugins.Crypter import Crypter
 
 class OneKhDe(Crypter):
     __name__ = "OneKhDe"
-    __version__ = "0.1"
     __type__ = "crypter"
+    __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?1kh.de/f/'
 
diff --git a/module/plugins/crypter/OronComFolder.py b/module/plugins/crypter/OronComFolder.py
index 988c5c959..f0b2f943c 100755
--- a/module/plugins/crypter/OronComFolder.py
+++ b/module/plugins/crypter/OronComFolder.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class OronComFolder(DeadCrypter):
     __name__ = "OronComFolder"
-    __version__ = "0.11"
     __type__ = "crypter"
+    __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?oron.com/folder/\w+'
 
diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py
index 172a4183f..55aa2ee4a 100644
--- a/module/plugins/crypter/PastebinCom.py
+++ b/module/plugins/crypter/PastebinCom.py
@@ -1,26 +1,12 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class PastebinCom(SimpleCrypter):
     __name__ = "PastebinCom"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?pastebin\.com/\w+'
 
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index 1e569a20a..9840b84df 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -6,8 +6,8 @@ from module.plugins.Crypter import Crypter
 
 class QuickshareCzFolder(Crypter):
     __name__ = "QuickshareCzFolder"
-    __version__ = "0.1"
     __type__ = "crypter"
+    __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?quickshare.cz/slozka-\d+.*'
 
diff --git a/module/plugins/crypter/RSLayerCom.py b/module/plugins/crypter/RSLayerCom.py
index 637caf2ce..7dda0beab 100644
--- a/module/plugins/crypter/RSLayerCom.py
+++ b/module/plugins/crypter/RSLayerCom.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class RSLayerCom(DeadCrypter):
     __name__ = "RSLayerCom"
-    __version__ = "0.21"
     __type__ = "crypter"
+    __version__ = "0.21"
 
     __pattern__ = r'http://(?:www\.)?rs-layer.com/directory-'
 
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 160900144..1b120fc77 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -11,8 +11,8 @@ from module.plugins.Crypter import Crypter
 
 class RelinkUs(Crypter):
     __name__ = "RelinkUs"
-    __version__ = "3.0"
     __type__ = "crypter"
+    __version__ = "3.0"
 
     __pattern__ = r'http://(?:www\.)?relink.us/(f/|((view|go).php\?id=))(?P<id>.+)'
 
@@ -63,7 +63,7 @@ class RelinkUs(Crypter):
         if not self.isOnline():
             self.offline()
 
-        # Check for protection    
+        # Check for protection
         if self.isPasswordProtected():
             self.unlockPasswordProtection()
             self.handleErrors()
@@ -133,7 +133,7 @@ class RelinkUs(Crypter):
     def getPackageInfo(self):
         name = folder = None
 
-        # Try to get info from web        
+        # Try to get info from web
         m = re.search(self.FILE_TITLE_REGEX, self.html)
         if m is not None:
             title = m.group(1).strip()
@@ -147,7 +147,7 @@ class RelinkUs(Crypter):
             folder = self.package.folder
             self.logDebug("Package info not found, defaulting to pyfile name [%s] and folder [%s]" % (name, folder))
 
-        # Return package info 
+        # Return package info
         return name, folder
 
     def handleErrors(self):
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index 2687ed2f2..e0c165705 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -1,18 +1,20 @@
 # -*- coding: utf-8 -*-
 
 import re
+
 from pycurl import FOLLOWLOCATION
 
+from module.lib.BeautifulSoup import BeautifulSoup
+
 from module.common.json_layer import json_loads
 from module.plugins.Crypter import Crypter
 from module.plugins.internal.CaptchaService import SolveMedia
-from module.lib.BeautifulSoup import BeautifulSoup
 
 
 class SafelinkingNet(Crypter):
     __name__ = "SafelinkingNet"
-    __version__ = "0.1"
     __type__ = "crypter"
+    __version__ = "0.1"
 
     __pattern__ = r'https?://(?:www\.)?safelinking.net/([pd])/\w+'
 
diff --git a/module/plugins/crypter/SecuredIn.py b/module/plugins/crypter/SecuredIn.py
index 1a6650195..0b558c688 100644
--- a/module/plugins/crypter/SecuredIn.py
+++ b/module/plugins/crypter/SecuredIn.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class SecuredIn(DeadCrypter):
     __name__ = "SecuredIn"
-    __version__ = "0.21"
     __type__ = "crypter"
+    __version__ = "0.21"
 
     __pattern__ = r'http://(?:www\.)?secured\.in/download-[\d]+-[\w]{8}\.html'
 
diff --git a/module/plugins/crypter/SerienjunkiesOrg.py b/module/plugins/crypter/SerienjunkiesOrg.py
index ea76d30d0..fe4ee4e36 100644
--- a/module/plugins/crypter/SerienjunkiesOrg.py
+++ b/module/plugins/crypter/SerienjunkiesOrg.py
@@ -6,14 +6,15 @@ import re
 from time import sleep
 
 from module.lib.BeautifulSoup import BeautifulSoup
+
 from module.plugins.Crypter import Crypter
 from module.unescape import unescape
 
 
 class SerienjunkiesOrg(Crypter):
     __name__ = "SerienjunkiesOrg"
-    __version__ = "0.39"
     __type__ = "crypter"
+    __version__ = "0.39"
 
     __pattern__ = r'http://(?:www\.)?(serienjunkies.org|dokujunkies.org)/.*?'
     __config__ = [("changeNameSJ", "Packagename;Show;Season;Format;Episode", "Take SJ.org name", "Show"),
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index b56f90e15..87bb16a50 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -10,8 +10,8 @@ from module.plugins.Crypter import Crypter
 
 class ShareLinksBiz(Crypter):
     __name__ = "ShareLinksBiz"
-    __version__ = "1.13"
     __type__ = "crypter"
+    __version__ = "1.13"
 
     __pattern__ = r'http://(?:www\.)?(share-links|s2l)\.biz/(?P<ID>_?\w+)'
 
diff --git a/module/plugins/crypter/ShareRapidComFolder.py b/module/plugins/crypter/ShareRapidComFolder.py
index e44402a52..fd12ff96f 100644
--- a/module/plugins/crypter/ShareRapidComFolder.py
+++ b/module/plugins/crypter/ShareRapidComFolder.py
@@ -5,8 +5,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class ShareRapidComFolder(SimpleCrypter):
     __name__ = "ShareRapidComFolder"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?((share(-?rapid\.(biz|com|cz|info|eu|net|org|pl|sk)|-(central|credit|free|net)\.cz|-ms\.net)|(s-?rapid|rapids)\.(cz|sk))|(e-stahuj|mediatack|premium-rapidshare|rapidshare-premium|qiuck)\.cz|kadzet\.com|stahuj-zdarma\.eu|strelci\.net|universal-share\.com)/(slozka/.+)'
 
diff --git a/module/plugins/crypter/SpeedLoadOrgFolder.py b/module/plugins/crypter/SpeedLoadOrgFolder.py
index 305397d3c..092d3efe4 100644
--- a/module/plugins/crypter/SpeedLoadOrgFolder.py
+++ b/module/plugins/crypter/SpeedLoadOrgFolder.py
@@ -1,26 +1,12 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class SpeedLoadOrgFolder(DeadCrypter):
     __name__ = "SpeedLoadOrgFolder"
-    __version__ = "0.3"
     __type__ = "crypter"
+    __version__ = "0.3"
 
     __pattern__ = r'http://(?:www\.)?speedload\.org/(\d+~f$|folder/\d+/)'
 
diff --git a/module/plugins/crypter/StealthTo.py b/module/plugins/crypter/StealthTo.py
index 9cae7ba20..402724e89 100644
--- a/module/plugins/crypter/StealthTo.py
+++ b/module/plugins/crypter/StealthTo.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class StealthTo(DeadCrypter):
     __name__ = "StealthTo"
-    __version__ = "0.2"
     __type__ = "crypter"
+    __version__ = "0.2"
 
     __pattern__ = r'http://(?:www\.)?stealth\.to/folder/.+'
 
diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py
index 3ff9aa5dd..3ae2c5ed2 100644
--- a/module/plugins/crypter/TnyCz.py
+++ b/module/plugins/crypter/TnyCz.py
@@ -1,20 +1,5 @@
 # -*- coding: utf-8 -*-
 
-"""
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3 of the License,
-    or (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-    See the GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, see <http://www.gnu.org/licenses/>.
-"""
-
 from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 import re
@@ -22,8 +7,8 @@ import re
 
 class TnyCz(SimpleCrypter):
     __name__ = "TnyCz"
-    __version__ = "0.01"
     __type__ = "crypter"
+    __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?tny\.cz/\w+'
 
diff --git a/module/plugins/crypter/TrailerzoneInfo.py b/module/plugins/crypter/TrailerzoneInfo.py
index 2c7bb2c9f..42e45a819 100644
--- a/module/plugins/crypter/TrailerzoneInfo.py
+++ b/module/plugins/crypter/TrailerzoneInfo.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class TrailerzoneInfo(DeadCrypter):
     __name__ = "TrailerzoneInfo"
-    __version__ = "0.03"
     __type__ = "crypter"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?trailerzone.info/.*?'
 
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index 26923e8d4..0810e0ed1 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -1,18 +1,4 @@
 # -*- coding: utf-8 -*-
-###############################################################################
-#  This program 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.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU Affero General Public License for more details.
-#
-#  You should have received a copy of the GNU Affero General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-###############################################################################
 
 import re
 
@@ -22,8 +8,8 @@ from module.common.json_layer import json_loads
 
 class TurbobitNetFolder(SimpleCrypter):
     __name__ = "TurbobitNetFolder"
-    __version__ = "0.03"
     __type__ = "crypter"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?turbobit\.net/download/folder/(?P<ID>\w+)'
 
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index 70b7bd4b9..f51c2b715 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -1,18 +1,4 @@
 # -*- coding: utf-8 -*-
-###############################################################################
-#  This program 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.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU Affero General Public License for more details.
-#
-#  You should have received a copy of the GNU Affero General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-###############################################################################
 
 import math
 import re
@@ -23,8 +9,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class TusfilesNetFolder(SimpleCrypter):
     __name__ = "TusfilesNetFolder"
-    __version__ = "0.02"
     __type__ = "crypter"
+    __version__ = "0.02"
 
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)/?'
 
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index dfa1bb8c4..06d30099c 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -6,8 +6,8 @@ from module.plugins.Crypter import Crypter
 
 class UlozToFolder(Crypter):
     __name__ = "UlozToFolder"
-    __version__ = "0.2"
     __type__ = "crypter"
+    __version__ = "0.2"
 
     __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj.cz|zachowajto.pl)/(m|soubory)/.*'
 
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index 36dd9714a..068412062 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -1,18 +1,4 @@
 # -*- coding: utf-8 -*-
-############################################################################
-# This program 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.                          #
-#                                                                          #
-# This program is distributed in the hope that it will be useful,          #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
-# GNU Affero General Public License for more details.                      #
-#                                                                          #
-# You should have received a copy of the GNU Affero General Public License #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.    #
-############################################################################
 
 import re
 
@@ -21,8 +7,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 class UploadedToFolder(SimpleCrypter):
     __name__ = "UploadedToFolder"
-    __version__ = "0.3"
     __type__ = "crypter"
+    __version__ = "0.3"
 
     __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P<id>\w+)'
 
diff --git a/module/plugins/crypter/WiiReloadedOrg.py b/module/plugins/crypter/WiiReloadedOrg.py
index 9cb0751d8..cb02fbd2d 100644
--- a/module/plugins/crypter/WiiReloadedOrg.py
+++ b/module/plugins/crypter/WiiReloadedOrg.py
@@ -5,8 +5,8 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 class WiiReloadedOrg(DeadCrypter):
     __name__ = "WiiReloadedOrg"
-    __version__ = "0.11"
     __type__ = "crypter"
+    __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?wii-reloaded\.org/protect/get\.php\?i=.+'
 
diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py
index e89f4ccb0..5e5f511a8 100644
--- a/module/plugins/crypter/XupPl.py
+++ b/module/plugins/crypter/XupPl.py
@@ -5,8 +5,8 @@ from module.plugins.Crypter import Crypter
 
 class XupPl(Crypter):
     __name__ = "XupPl"
-    __version__ = "0.1"
     __type__ = "crypter"
+    __version__ = "0.1"
 
     __pattern__ = r'https?://(?:[^/]*\.)?xup\.pl/.*'
 
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index 216fbb670..1caca16bd 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -1,20 +1,5 @@
 # -*- coding: utf-8 -*-
 
-"""
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3 of the License,
-    or (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-    See the GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, see <http://www.gnu.org/licenses/>.
-"""
-
 import re
 
 from urlparse import urljoin
@@ -28,8 +13,8 @@ API_URL = "AIzaSyCKnWLNlkX-L4oD1aEzqqhRw1zczeD6_k0"
 
 class YoutubeBatch(Crypter):
     __name__ = "YoutubeBatch"
-    __version__ = "1.00"
     __type__ = "crypter"
+    __version__ = "1.00"
 
     __pattern__ = r'https?://(?:www\.|m\.)?youtube\.com/(?P<TYPE>user|playlist|view_play_list)(/|.*?[?&](?:list|p)=)(?P<ID>[\w-]+)'
     __config__ = [("likes", "bool", "Grab user (channel) liked videos", False),
-- 
cgit v1.2.3


From f4774041abbd32bca0cdece1c100b7c50c77a68c Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 10 Aug 2014 21:20:35 +0200
Subject: [DdlstorageCom] Mark dead

---
 module/plugins/crypter/DdlstorageComFolder.py | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DdlstorageComFolder.py b/module/plugins/crypter/DdlstorageComFolder.py
index 70a7312be..3b1dc6dd6 100644
--- a/module/plugins/crypter/DdlstorageComFolder.py
+++ b/module/plugins/crypter/DdlstorageComFolder.py
@@ -1,17 +1,18 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
-class DdlstorageComFolder(SimpleCrypter):
+class DdlstorageComFolder(DeadCrypter):
     __name__ = "DdlstorageComFolder"
     __type__ = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
-    __pattern__ = r'http://(?:www\.)?ddlstorage.com/folder/\w{10}'
+    __pattern__ = r'https?://(?:www\.)?ddlstorage\.com/folder/\w+'
 
     __description__ = """DDLStorage.com folder decrypter plugin"""
     __author_name__ = ("godofdream", "stickell")
     __author_mail__ = ("soilfiction@gmail.com", "l.stickell@yahoo.it")
 
-    LINK_PATTERN = r'<a class="sub_title" style="text-decoration:none;" href="(http://www.ddlstorage.com/.*)">'
+
+getInfo = create_getInfo(SpeedLoadOrg)
-- 
cgit v1.2.3


From da05c51747ec742dd019f689cf73be10721b1f8e Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Thu, 4 Sep 2014 22:32:10 +0200
Subject: New crypter UploadableChFolder

---
 module/plugins/crypter/UploadableChFolder.py | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 module/plugins/crypter/UploadableChFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/UploadableChFolder.py b/module/plugins/crypter/UploadableChFolder.py
new file mode 100644
index 000000000..b76076531
--- /dev/null
+++ b/module/plugins/crypter/UploadableChFolder.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
+
+
+class UploadableChFolder(SimpleCrypter):
+    __name__ = "UploadableChFolder"
+    __type__ = "crypter"
+    __version__ = "0.01"
+
+    __pattern__ = r'http://(?:www\.)?uploadable\.ch/list/\w+'
+
+    __description__ = """ Uploadable.ch folder decrypter plugin """
+    __author_name__ = ("guidobelix", "Walter Purcaro")
+    __author_mail__ = ("guidobelix@hotmail.it", "vuolter@gmail.com")
+
+
+    LINK_PATTERN = r'"(.+?)" class="icon_zipfile">'
+    TITLE_PATTERN = r'<div class="folder"><span>&nbsp;</span>(?P<title>.+?)</div>'
+    OFFLINE_PATTERN = r'We are sorry... The URL you entered cannot be found on the server.'
+    TEMP_OFFLINE_PATTERN = r'<div class="icon_err">'
-- 
cgit v1.2.3


From 76c67b22c0b2dbd275fae77e8a3121acb2d4301b Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 26 Sep 2014 15:39:33 +0200
Subject: Fix cookie deletion + Account support for SimpleCrypter

Fix: https://github.com/pyload/pyload/issues/749
---
 module/plugins/crypter/EasybytezComFolder.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index 7832bef5f..500f12278 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class EasybytezComFolder(SimpleCrypter):
     __name__ = "EasybytezComFolder"
     __type__ = "crypter"
-    __version__ = "0.06"
+    __version__ = "0.07"
 
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
 
@@ -14,7 +14,10 @@ class EasybytezComFolder(SimpleCrypter):
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
 
+
     URL_REPLACEMENTS = [(__pattern__, r"http://www.easybytez.com/users/\g<ID>?per_page=10000")]
 
     LINK_PATTERN = r'<td><a href="(http://www\.easybytez\.com/\w+)" target="_blank">.+(?:</a>)?</td>'
     TITLE_PATTERN = r'<Title>Files of \d+: (?P<title>.+) folder</Title>'
+
+    LOGIN_ACCOUNT = True
-- 
cgit v1.2.3


From 4709a41c176dd2947709b7f35ccc84213d574624 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 26 Sep 2014 16:59:26 +0200
Subject: Rename SH flags

---
 module/plugins/crypter/FilefactoryComFolder.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index 562c56732..b565b4d0b 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -18,7 +18,7 @@ class FilefactoryComFolder(SimpleCrypter):
     TITLE_PATTERN = r'<h1>Files in <span>(?P<title>.+)</span></h1>'
     PAGES_PATTERN = r'data-paginator-totalPages="(?P<pages>\d+)"'
 
-    SH_COOKIES = [('.filefactory.com', 'locale', 'en_US.utf8')]
+    COOKIES = [('.filefactory.com', 'locale', 'en_US.utf8')]
 
 
     def loadPage(self, page_n):
-- 
cgit v1.2.3


From cb3b1d5ea03e8d76631b3202bdc00b7b4904d41e Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 26 Sep 2014 22:57:17 +0200
Subject: [MultiuploadCom] Mark dead

---
 module/plugins/crypter/MultiuploadCom.py | 59 +++-----------------------------
 1 file changed, 5 insertions(+), 54 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/MultiuploadCom.py b/module/plugins/crypter/MultiuploadCom.py
index 96cd734e4..398d33b5d 100644
--- a/module/plugins/crypter/MultiuploadCom.py
+++ b/module/plugins/crypter/MultiuploadCom.py
@@ -1,64 +1,15 @@
 # -*- coding: utf-8 -*-
 
-import re
-from time import time
+from module.plugins.internal.DeadCrypter import DeadCrypter
 
-from module.plugins.Crypter import Crypter
-from module.common.json_layer import json_loads
 
-
-class MultiuploadCom(Crypter):
+class MultiuploadCom(DeadCrypter):
     __name__ = "MultiuploadCom"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
-    __pattern__ = r'http://(?:www\.)?multiupload.com/(\w+)'
-    __config__ = [("preferedHoster", "str", "Prefered hoster list (bar-separated) ", "multiupload"),
-                  ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
+    __pattern__ = r'http://(?:www\.)?multiupload\.(com|nl)/\w+'
 
-    __description__ = """MultiUpload.com decrypter plugin"""
+    __description__ = """ MultiUpload.com decrypter plugin """
     __author_name__ = "zoidberg"
     __author_mail__ = "zoidberg@mujmail.cz"
-
-    ML_LINK_PATTERN = r'<div id="downloadbutton_" style=""><a href="([^"]+)"'
-
-
-    def decrypt(self, pyfile):
-        self.html = self.load(pyfile.url)
-        m = re.search(self.ML_LINK_PATTERN, self.html)
-        ml_url = m.group(1) if m else None
-
-        json_list = json_loads(self.load("http://multiupload.com/progress/", get={
-            "d": re.match(self.__pattern__, pyfile.url).group(1),
-            "r": str(int(time() * 1000))
-        }))
-
-        prefered_set = map(lambda s: s.lower().split('.')[0], set(self.getConfig("preferedHoster").split('|')))
-
-        if ml_url and 'multiupload' in prefered_set:
-            self.urls.append(ml_url)
-
-        for link in json_list:
-            if link['service'].lower() in prefered_set and int(link['status']) and not int(link['deleted']):
-                url = self.getLocation(link['url'])
-                if url:
-                    self.urls.append(url)
-
-        if not self.urls:
-            ignored_set = map(lambda s: s.lower().split('.')[0], set(self.getConfig("ignoredHoster").split('|')))
-
-            if 'multiupload' not in ignored_set:
-                self.urls.append(ml_url)
-
-            for link in json_list:
-                if link['service'].lower() not in ignored_set and int(link['status']) and not int(link['deleted']):
-                    url = self.getLocation(link['url'])
-                    if url:
-                        self.urls.append(url)
-
-        if not self.urls:
-            self.fail('Could not extract any links')
-
-    def getLocation(self, url):
-        header = self.load(url, just_header=True)
-        return header['location'] if "location" in header else None
-- 
cgit v1.2.3


From 0d220d634e512d89bda540f91c643b361c82ea8a Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 27 Sep 2014 01:38:32 +0200
Subject: Logging string cosmetics

---
 module/plugins/crypter/ChipDe.py             | 2 +-
 module/plugins/crypter/DataHuFolder.py       | 4 ++--
 module/plugins/crypter/DuckCryptInfo.py      | 2 +-
 module/plugins/crypter/GooGl.py              | 2 +-
 module/plugins/crypter/LinkSaveIn.py         | 6 +++---
 module/plugins/crypter/LinkdecrypterCom.py   | 2 +-
 module/plugins/crypter/LixIn.py              | 4 ++--
 module/plugins/crypter/MediafireComFolder.py | 2 +-
 module/plugins/crypter/NCryptIn.py           | 2 +-
 module/plugins/crypter/RelinkUs.py           | 4 ++--
 module/plugins/crypter/SerienjunkiesOrg.py   | 4 ++--
 module/plugins/crypter/ShareLinksBiz.py      | 2 +-
 module/plugins/crypter/UploadedToFolder.py   | 2 +-
 13 files changed, 19 insertions(+), 19 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index a75cc5e0e..e545efa54 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -24,4 +24,4 @@ class ChipDe(Crypter):
             self.fail('Failed to find the URL')
         else:
             self.urls = [f.group(1)]
-            self.logDebug('The file URL is %s' % self.urls[0])
+            self.logDebug("The file URL is %s" % self.urls[0])
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 4f6116100..a500ac796 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -27,7 +27,7 @@ class DataHuFolder(SimpleCrypter):
             password = self.getPassword()
             if password is '':
                 self.fail("No password specified, please set right password on Add package form and retry")
-            self.logDebug('The folder is password protected', 'Using password: ' + password)
+            self.logDebug("The folder is password protected', 'Using password: " + password)
             self.html = self.load(pyfile.url, post={'mappa_pass': password}, decode=True)
             if u'Hib\xe1s jelsz\xf3' in self.html:  # Wrong password
                 self.fail("Incorrect password, please set right password on Add package form and retry")
@@ -35,7 +35,7 @@ class DataHuFolder(SimpleCrypter):
         package_name, folder_name = self.getPackageNameAndFolder()
 
         package_links = re.findall(self.LINK_PATTERN, self.html)
-        self.logDebug('Package has %d links' % len(package_links))
+        self.logDebug("Package has %d links" % len(package_links))
 
         if package_links:
             self.packages = [(package_name, package_links, folder_name)]
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index e7a5a59e9..26b06c1c7 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -56,4 +56,4 @@ class DuckCryptInfo(Crypter):
         soup = BeautifulSoup(src)
         self.urls = [soup.find("iframe")['src']]
         if not self.urls:
-            self.logDebug('no links m - (Plugin out of date?)')
+            self.logDebug("No link found - (Plugin out of date?)")
diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py
index 1d9c2801f..b4f6c3ea7 100644
--- a/module/plugins/crypter/GooGl.py
+++ b/module/plugins/crypter/GooGl.py
@@ -20,7 +20,7 @@ class GooGl(Crypter):
 
     def decrypt(self, pyfile):
         rep = self.load(self.API_URL, get={'shortUrl': pyfile.url})
-        self.logDebug('JSON data: ' + rep)
+        self.logDebug("JSON data: " + rep)
         rep = json_loads(rep)
 
         if 'longUrl' in rep:
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 060a434d2..e80686c02 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -136,7 +136,7 @@ class LinkSaveIn(Crypter):
         package_links = []
         self.logDebug("Search for Web links")
         if not self.js:
-            self.logDebug("no JS -> skip Web links")
+            self.logDebug("No JS -> skip Web links")
         else:
         #@TODO: Gather paginated web links
             pattern = r'<a href="http://linksave\.in/(\w{43})"'
@@ -162,7 +162,7 @@ class LinkSaveIn(Crypter):
     def handleContainer(self, type_):
         package_links = []
         type_ = type_.lower()
-        self.logDebug('Seach for %s Container links' % type_.upper())
+        self.logDebug("Seach for %s Container links" % type_.upper())
         if not type_.isalnum():  # check to prevent broken re-pattern (cnl2,rsdf,ccf,dlc,web are all alpha-numeric)
             self.fail('unknown container type "%s" (this is probably a bug)' % type_)
         pattern = r"\('%s_link'\).href=unescape\('(.*?\.%s)'\)" % (type_, type_)
@@ -177,7 +177,7 @@ class LinkSaveIn(Crypter):
         package_links = []
         self.logDebug("Search for CNL2 links")
         if not self.js:
-            self.logDebug("no JS -> skip CNL2 links")
+            self.logDebug("No JS -> skip CNL2 links")
         elif 'cnl2_load' in self.html:
             try:
                 (vcrypted, vjk) = self._getCipherParams()
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 21f05b962..f9f29d5f5 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -43,7 +43,7 @@ class LinkdecrypterCom(Crypter):
                 if self.html.startswith('http://'):
                     return self.html.splitlines()
 
-        self.logError('API', self.html)
+        self.logError("API", self.html)
         if self.html == 'INTERRUPTION(PASSWORD)':
             self.fail("No or incorrect password")
 
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index cdf87eeb2..beba5ed04 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -42,12 +42,12 @@ class LixIn(Crypter):
             for _ in xrange(5):
                 m = re.search(self.CAPTCHA_PATTERN, self.html)
                 if m:
-                    self.logDebug("trying captcha")
+                    self.logDebug("Trying captcha")
                     captcharesult = self.decryptCaptcha("http://lix.in/" + m.group("image"))
                 self.html = self.req.load(url, decode=True,
                                           post={"capt": captcharesult, "submit": "submit", "tiny": id})
             else:
-                self.logDebug("no captcha/captcha solved")
+                self.logDebug("No captcha/captcha solved")
         else:
             self.html = self.req.load(url, decode=True, post={"submit": "submit", "tiny": id})
 
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index bb7c90722..45078c4ba 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -23,7 +23,7 @@ class MediafireComFolder(Crypter):
 
     def decrypt(self, pyfile):
         url, result = checkHTMLHeader(pyfile.url)
-        self.logDebug('Location (%d): %s' % (result, url))
+        self.logDebug("Location (%d): %s" % (result, url))
 
         if result == 0:
             # load and parse html
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 1b7b8b3d4..3937299d0 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -156,7 +156,7 @@ class NCryptIn(Crypter):
             self.logDebug("CircleCaptcha protected")
             captcha_img_url = "http://ncrypt.in/classes/captcha/circlecaptcha.php"
             coords = self.decryptCaptcha(captcha_img_url, forceUser=True, imgtype="png", result_type='positional')
-            self.logDebug("Captcha resolved, coords [%s]" % str(coords))
+            self.logDebug("Captcha resolved, coords [%s]" % coords)
             postData['circle.x'] = coords[0]
             postData['circle.y'] = coords[1]
 
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 1b120fc77..1c1afea25 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -125,7 +125,7 @@ class RelinkUs(Crypter):
         self.logDebug("Request user positional captcha resolving")
         captcha_img_url = self.CAPTCHA_IMG_URL + "?id=%s" % self.fileid
         coords = self.decryptCaptcha(captcha_img_url, forceUser=True, imgtype="png", result_type='positional')
-        self.logDebug("Captcha resolved, coords [%s]" % str(coords))
+        self.logDebug("Captcha resolved, coords [%s]" % coords)
         captcha_post_url = self.CAPTCHA_SUBMIT_URL + "?id=%s" % self.fileid
         captcha_post_data = {'button.x': coords[0], 'button.y': coords[1], 'captcha': 'submit'}
         self.html = self.load(captcha_post_url, post=captcha_post_data, decode=True)
@@ -189,7 +189,7 @@ class RelinkUs(Crypter):
         return package_links
 
     def handleDLCLinks(self):
-        self.logDebug('Search for DLC links')
+        self.logDebug("Search for DLC links")
         package_links = []
         m = re.search(self.DLC_LINK_REGEX, self.html)
         if m is not None:
diff --git a/module/plugins/crypter/SerienjunkiesOrg.py b/module/plugins/crypter/SerienjunkiesOrg.py
index fe4ee4e36..1ef5b7617 100644
--- a/module/plugins/crypter/SerienjunkiesOrg.py
+++ b/module/plugins/crypter/SerienjunkiesOrg.py
@@ -304,7 +304,7 @@ class SerienjunkiesOrg(Crypter):
             for Hoster in hosterlist:
                 if preferred == Hoster.lower().replace('.', ''):
                     for Part in hosterlist[Hoster]:
-                        self.logDebug("selected " + Part)
+                        self.logDebug("Selected " + Part)
                         result.append(str(Part))
                         del (hosterlist2[Hoster])
                     if self.getConfig("hosterListMode") in ["OnlyOne", "OnlyPreferred(One)"]:
@@ -316,7 +316,7 @@ class SerienjunkiesOrg(Crypter):
             for Hoster in hosterlist2:
                 if Hoster.strip().lower().replace('.', '') not in ignorelist:
                     for Part in hosterlist2[Hoster]:
-                        self.logDebug("selected2 " + Part)
+                        self.logDebug("Selected2 " + Part)
                         result.append(str(Part))
 
                     if self.getConfig('hosterListMode') == "OnlyOne":
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 87bb16a50..fa9739711 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -109,7 +109,7 @@ class ShareLinksBiz(Crypter):
         captchaUrl = self.baseUrl + '/captcha.gif?d=%s&PHPSESSID=%s' % (m.group(1), m.group(2))
         self.logDebug("Waiting user for correct position")
         coords = self.decryptCaptcha(captchaUrl, forceUser=True, imgtype="gif", result_type='positional')
-        self.logDebug("Captcha resolved, coords [%s]" % str(coords))
+        self.logDebug("Captcha resolved, coords [%s]" % coords)
 
         # Resolve captcha
         href = self._resolveCoords(coords, captchaMap)
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index 068412062..20eb553a9 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -33,6 +33,6 @@ class UploadedToFolder(SimpleCrypter):
 
         self.html = self.load(plain_link)
         package_links = self.html.split('\n')[:-1]
-        self.logDebug('Package has %d links' % len(package_links))
+        self.logDebug("Package has %d links" % len(package_links))
 
         self.packages = [(package_name, package_links, folder_name)]
-- 
cgit v1.2.3


From 92c49bfd7662625852efd0c3599253bdc6f00eda Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 27 Sep 2014 02:52:32 +0200
Subject: Remove old, not working, SerienjunkiesOrg crypter.

Warez plugin are not allowed.
---
 module/plugins/crypter/SerienjunkiesOrg.py | 324 -----------------------------
 1 file changed, 324 deletions(-)
 delete mode 100644 module/plugins/crypter/SerienjunkiesOrg.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/SerienjunkiesOrg.py b/module/plugins/crypter/SerienjunkiesOrg.py
deleted file mode 100644
index 1ef5b7617..000000000
--- a/module/plugins/crypter/SerienjunkiesOrg.py
+++ /dev/null
@@ -1,324 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import random
-import re
-
-from time import sleep
-
-from module.lib.BeautifulSoup import BeautifulSoup
-
-from module.plugins.Crypter import Crypter
-from module.unescape import unescape
-
-
-class SerienjunkiesOrg(Crypter):
-    __name__ = "SerienjunkiesOrg"
-    __type__ = "crypter"
-    __version__ = "0.39"
-
-    __pattern__ = r'http://(?:www\.)?(serienjunkies.org|dokujunkies.org)/.*?'
-    __config__ = [("changeNameSJ", "Packagename;Show;Season;Format;Episode", "Take SJ.org name", "Show"),
-                  ("changeNameDJ", "Packagename;Show;Format;Episode", "Take DJ.org name", "Show"),
-                  ("randomPreferred", "bool", "Randomize Preferred-List", False),
-                  ("hosterListMode", "OnlyOne;OnlyPreferred(One);OnlyPreferred(All);All",
-                   "Use for hosters (if supported)", "All"),
-                  ("hosterList", "str", "Preferred Hoster list (comma separated)",
-                   "RapidshareCom,UploadedTo,NetloadIn,FilefactoryCom,FreakshareNet,FilebaseTo,HotfileCom,DepositfilesCom,EasyshareCom,KickloadCom"),
-                  ("ignoreList", "str", "Ignored Hoster list (comma separated)", "MegauploadCom")]
-
-    __description__ = """Serienjunkies.org decrypter plugin"""
-    __author_name__ = ("mkaay", "godofdream")
-    __author_mail__ = ("mkaay@mkaay.de", "soilfiction@gmail.com")
-
-
-    def setup(self):
-        self.multiDL = False
-
-    def getSJSrc(self, url):
-        src = self.req.load(str(url))
-        if "This website is not available in your country" in src:
-            self.fail("Not available in your country")
-        if not src.find("Enter Serienjunkies") == -1:
-            sleep(1)
-            src = self.req.load(str(url))
-        return src
-
-    def handleShow(self, url):
-        src = self.getSJSrc(url)
-        soup = BeautifulSoup(src)
-        packageName = self.pyfile.package().name
-        if self.getConfig("changeNameSJ") == "Show":
-            found = unescape(soup.find("h2").find("a").string.split(' &#8211;')[0])
-            if found:
-                packageName = found
-
-        nav = soup.find("div", attrs={"id": "scb"})
-
-        package_links = []
-        for a in nav.findAll("a"):
-            if self.getConfig("changeNameSJ") == "Show":
-                package_links.append(a['href'])
-            else:
-                package_links.append(a['href'] + "#hasName")
-        if self.getConfig("changeNameSJ") == "Show":
-            self.packages.append((packageName, package_links, packageName))
-        else:
-            self.core.files.addLinks(package_links, self.pyfile.package().id)
-
-    def handleSeason(self, url):
-        src = self.getSJSrc(url)
-        soup = BeautifulSoup(src)
-        post = soup.find("div", attrs={"class": "post-content"})
-        ps = post.findAll("p")
-
-        seasonName = unescape(soup.find("a", attrs={"rel": "bookmark"}).string).replace("&#8211;", "-")
-        groups = {}
-        gid = -1
-        for p in ps:
-            if re.search("<strong>Sprache|<strong>Format", str(p)):
-                var = p.findAll("strong")
-                opts = {"Sprache": "", "Format": ""}
-                for v in var:
-                    n = unescape(v.string).strip()
-                    n = re.sub(r"^([:]?)(.*?)([:]?)$", r'\2', n)
-                    if n.strip() not in opts:
-                        continue
-                    val = v.nextSibling
-                    if not val:
-                        continue
-                    val = val.replace("|", "").strip()
-                    val = re.sub(r"^([:]?)(.*?)([:]?)$", r'\2', val)
-                    opts[n.strip()] = val.strip()
-                gid += 1
-                groups[gid] = {}
-                groups[gid]['ep'] = {}
-                groups[gid]['opts'] = opts
-            elif re.search("<strong>Download:", str(p)):
-                parts = str(p).split("<br />")
-                if re.search("<strong>", parts[0]):
-                    ename = re.search('<strong>(.*?)</strong>', parts[0]).group(1).strip().decode("utf-8").replace(
-                        "&#8211;", "-")
-                    groups[gid]['ep'][ename] = {}
-                    parts.remove(parts[0])
-                    for part in parts:
-                        hostername = re.search(r" \| ([-a-zA-Z0-9]+\.\w+)", part)
-                        if hostername:
-                            hostername = hostername.group(1)
-                            groups[gid]['ep'][ename][hostername] = []
-                            links = re.findall('href="(.*?)"', part)
-                            for link in links:
-                                groups[gid]['ep'][ename][hostername].append(link + "#hasName")
-
-        links = []
-        for g in groups.values():
-            for ename in g['ep']:
-                links.extend(self.getpreferred(g['ep'][ename]))
-                if self.getConfig("changeNameSJ") == "Episode":
-                    self.packages.append((ename, links, ename))
-                    links = []
-            package = "%s (%s, %s)" % (seasonName, g['opts']['Format'], g['opts']['Sprache'])
-            if self.getConfig("changeNameSJ") == "Format":
-                self.packages.append((package, links, package))
-                links = []
-        if (self.getConfig("changeNameSJ") == "Packagename") or re.search("#hasName", url):
-            self.core.files.addLinks(links, self.pyfile.package().id)
-        elif (self.getConfig("changeNameSJ") == "Season") or not re.search("#hasName", url):
-            self.packages.append((seasonName, links, seasonName))
-
-    def handleEpisode(self, url):
-        src = self.getSJSrc(url)
-        if not src.find(
-                "Du hast das Download-Limit &uuml;berschritten! Bitte versuche es sp&auml;ter nocheinmal.") == -1:
-            self.fail(_("Downloadlimit reached"))
-        else:
-            soup = BeautifulSoup(src)
-            form = soup.find("form")
-            h1 = soup.find("h1")
-
-            if h1.get("class") == "wrap":
-                captchaTag = soup.find(attrs={"src": re.compile("^/secure/")})
-                if not captchaTag:
-                    sleep(5)
-                    self.retry()
-
-                captchaUrl = "http://download.serienjunkies.org" + captchaTag['src']
-                result = self.decryptCaptcha(str(captchaUrl), imgtype="png")
-                sinp = form.find(attrs={"name": "s"})
-
-                self.req.lastURL = str(url)
-                sj = self.load(str(url), post={'s': sinp['value'], 'c': result, 'action': "Download"})
-
-                soup = BeautifulSoup(sj)
-            rawLinks = soup.findAll(attrs={"action": re.compile("^http://download.serienjunkies.org/")})
-
-            if not len(rawLinks) > 0:
-                sleep(1)
-                self.retry()
-                return
-
-            self.correctCaptcha()
-
-            links = []
-            for link in rawLinks:
-                frameUrl = link['action'].replace("/go-", "/frame/go-")
-                links.append(self.handleFrame(frameUrl))
-            if re.search("#hasName", url) or ((self.getConfig("changeNameSJ") == "Packagename") and
-                                              (self.getConfig("changeNameDJ") == "Packagename")):
-                self.core.files.addLinks(links, self.pyfile.package().id)
-            else:
-                if h1.text[2] == "_":
-                    eName = h1.text[3:]
-                else:
-                    eName = h1.text
-                self.packages.append((eName, links, eName))
-
-    def handleOldStyleLink(self, url):
-        sj = self.req.load(str(url))
-        soup = BeautifulSoup(sj)
-        form = soup.find("form", attrs={"action": re.compile("^http://serienjunkies.org")})
-        captchaTag = form.find(attrs={"src": re.compile("^/safe/secure/")})
-        captchaUrl = "http://serienjunkies.org" + captchaTag['src']
-        result = self.decryptCaptcha(str(captchaUrl))
-        url = form['action']
-        sinp = form.find(attrs={"name": "s"})
-
-        self.req.load(str(url), post={'s': sinp['value'], 'c': result, 'dl.start': "Download"}, cookies=False,
-                      just_header=True)
-        decrypted = self.req.lastEffectiveURL
-        if decrypted == str(url):
-            self.retry()
-        self.core.files.addLinks([decrypted], self.pyfile.package().id)
-
-    def handleFrame(self, url):
-        self.req.load(str(url))
-        return self.req.lastEffectiveURL
-
-    def handleShowDJ(self, url):
-        src = self.getSJSrc(url)
-        soup = BeautifulSoup(src)
-        post = soup.find("div", attrs={"id": "page_post"})
-        ps = post.findAll("p")
-        found = unescape(soup.find("h2").find("a").string.split(' &#8211;')[0])
-        if found:
-            seasonName = found
-
-        groups = {}
-        gid = -1
-        for p in ps:
-            if re.search("<strong>Sprache|<strong>Format", str(p)):
-                var = p.findAll("strong")
-                opts = {"Sprache": "", "Format": ""}
-                for v in var:
-                    n = unescape(v.string).strip()
-                    n = re.sub(r"^([:]?)(.*?)([:]?)$", r'\2', n)
-                    if n.strip() not in opts:
-                        continue
-                    val = v.nextSibling
-                    if not val:
-                        continue
-                    val = val.replace("|", "").strip()
-                    val = re.sub(r"^([:]?)(.*?)([:]?)$", r'\2', val)
-                    opts[n.strip()] = val.strip()
-                gid += 1
-                groups[gid] = {}
-                groups[gid]['ep'] = {}
-                groups[gid]['opts'] = opts
-            elif re.search("<strong>Download:", str(p)):
-                parts = str(p).split("<br />")
-                if re.search("<strong>", parts[0]):
-                    ename = re.search('<strong>(.*?)</strong>', parts[0]).group(1).strip().decode("utf-8").replace(
-                        "&#8211;", "-")
-                    groups[gid]['ep'][ename] = {}
-                    parts.remove(parts[0])
-                    for part in parts:
-                        hostername = re.search(r" \| ([-a-zA-Z0-9]+\.\w+)", part)
-                        if hostername:
-                            hostername = hostername.group(1)
-                            groups[gid]['ep'][ename][hostername] = []
-                            links = re.findall('href="(.*?)"', part)
-                            for link in links:
-                                groups[gid]['ep'][ename][hostername].append(link + "#hasName")
-
-        links = []
-        for g in groups.values():
-            for ename in g['ep']:
-                links.extend(self.getpreferred(g['ep'][ename]))
-                if self.getConfig("changeNameDJ") == "Episode":
-                    self.packages.append((ename, links, ename))
-                    links = []
-            package = "%s (%s, %s)" % (seasonName, g['opts']['Format'], g['opts']['Sprache'])
-            if self.getConfig("changeNameDJ") == "Format":
-                self.packages.append((package, links, package))
-                links = []
-        if (self.getConfig("changeNameDJ") == "Packagename") or re.search("#hasName", url):
-            self.core.files.addLinks(links, self.pyfile.package().id)
-        elif (self.getConfig("changeNameDJ") == "Show") or not re.search("#hasName", url):
-            self.packages.append((seasonName, links, seasonName))
-
-    def handleCategoryDJ(self, url):
-        package_links = []
-        src = self.getSJSrc(url)
-        soup = BeautifulSoup(src)
-        content = soup.find("div", attrs={"id": "content"})
-        for a in content.findAll("a", attrs={"rel": "bookmark"}):
-            package_links.append(a['href'])
-        self.core.files.addLinks(package_links, self.pyfile.package().id)
-
-    def decrypt(self, pyfile):
-        showPattern = re.compile("^http://serienjunkies.org/serie/(.*)/$")
-        seasonPattern = re.compile("^http://serienjunkies.org/.*?/(.*)/$")
-        episodePattern = re.compile("^http://download.serienjunkies.org/f-.*?.html(#hasName)?$")
-        oldStyleLink = re.compile("^http://serienjunkies.org/safe/(.*)$")
-        categoryPatternDJ = re.compile("^http://dokujunkies.org/.*?(.*)$")
-        showPatternDJ = re.compile(r"^http://dokujunkies.org/.*?/(.*)\.html(#hasName)?$")
-        framePattern = re.compile("^http://download.(serienjunkies.org|dokujunkies.org)/frame/go-.*?/$")
-        url = pyfile.url
-        if framePattern.match(url):
-            self.packages.append((pyfile.package().name, [self.handleFrame(url)], pyfile.package().name))
-        elif episodePattern.match(url):
-            self.handleEpisode(url)
-        elif oldStyleLink.match(url):
-            self.handleOldStyleLink(url)
-        elif showPattern.match(url):
-            self.handleShow(url)
-        elif showPatternDJ.match(url):
-            self.handleShowDJ(url)
-        elif seasonPattern.match(url):
-            self.handleSeason(url)
-        elif categoryPatternDJ.match(url):
-            self.handleCategoryDJ(url)
-
-    #selects the preferred hoster, after that selects any hoster (ignoring the one to ignore)
-    def getpreferred(self, hosterlist):
-
-        result = []
-        preferredList = self.getConfig("hosterList").strip().lower().replace(
-            '|', ',').replace('.', '').replace(';', ',').split(',')
-        if (self.getConfig("randomPreferred") is True) and (
-                self.getConfig("hosterListMode") in ["OnlyOne", "OnlyPreferred(One)"]):
-            random.shuffle(preferredList)
-            # we don't want hosters be read two times
-        hosterlist2 = hosterlist.copy()
-
-        for preferred in preferredList:
-            for Hoster in hosterlist:
-                if preferred == Hoster.lower().replace('.', ''):
-                    for Part in hosterlist[Hoster]:
-                        self.logDebug("Selected " + Part)
-                        result.append(str(Part))
-                        del (hosterlist2[Hoster])
-                    if self.getConfig("hosterListMode") in ["OnlyOne", "OnlyPreferred(One)"]:
-                        return result
-
-        ignorelist = self.getConfig("ignoreList").strip().lower().replace(
-            '|', ',').replace('.', '').replace(';', ',').split(',')
-        if self.getConfig('hosterListMode') in ["OnlyOne", "All"]:
-            for Hoster in hosterlist2:
-                if Hoster.strip().lower().replace('.', '') not in ignorelist:
-                    for Part in hosterlist2[Hoster]:
-                        self.logDebug("Selected2 " + Part)
-                        result.append(str(Part))
-
-                    if self.getConfig('hosterListMode') == "OnlyOne":
-                        return result
-        return result
-- 
cgit v1.2.3


From 33322d1b9fc5146c8b3cdc443d915d94f3ed0b52 Mon Sep 17 00:00:00 2001
From: zapp-brannigan <fuerst.reinje@web.de>
Date: Fri, 3 Oct 2014 17:31:04 +0200
Subject: [Dev-Host] Folder support (partially)

---
 module/plugins/crypter/DevhostStFolder.py | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 module/plugins/crypter/DevhostStFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py
new file mode 100644
index 000000000..79aaf926f
--- /dev/null
+++ b/module/plugins/crypter/DevhostStFolder.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+#
+# Test links:
+# http://d-h.st/users/shine/?fld_id=37263#files
+
+import re
+
+from urlparse import urljoin
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
+
+
+class DevhostStFolder(SimpleCrypter):
+    __name__ = "DevhostStFolder"
+    __type__ = "crypter"
+    __version__ = "0.01"
+
+    __pattern__ = r"http://(?:www\.)?d-h\.st/users/\w+/\?fld_id=\d+"
+
+    __description__ = """d-h.st decrypter plugin"""
+    __author_name_ = "zapp-brannigan"
+    __author_mail_ = "fuerst.reinje@web.de"
+
+
+    LINK_PATTERN = r'width: 530px;"><a href="(.+?)"'
+
+
+    def getLinks(self):
+        return [urljoin("http://d-h.st", link) for link in re.findall(self.LINK_PATTERN, self.html)]
-- 
cgit v1.2.3


From a7bfc1172c1c92deea5e0b37c98f20d03aca3b5f Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 3 Oct 2014 17:37:19 +0200
Subject: [Dev-Host] Improve patterns a bit

---
 module/plugins/crypter/DevhostStFolder.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py
index 79aaf926f..0d9c032cb 100644
--- a/module/plugins/crypter/DevhostStFolder.py
+++ b/module/plugins/crypter/DevhostStFolder.py
@@ -15,14 +15,14 @@ class DevhostStFolder(SimpleCrypter):
     __type__ = "crypter"
     __version__ = "0.01"
 
-    __pattern__ = r"http://(?:www\.)?d-h\.st/users/\w+/\?fld_id=\d+"
+    __pattern__ = r'http://(?:www\.)?d-h\.st/users/\w+/\?fld_id=\d+'
 
     __description__ = """d-h.st decrypter plugin"""
     __author_name_ = "zapp-brannigan"
     __author_mail_ = "fuerst.reinje@web.de"
 
 
-    LINK_PATTERN = r'width: 530px;"><a href="(.+?)"'
+    LINK_PATTERN = r';"><a href="/(\w+)'
 
 
     def getLinks(self):
-- 
cgit v1.2.3


From 7e74afa16d11141e3c13fe05e37ee83bbe02421a Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 4 Oct 2014 23:34:12 +0200
Subject: [HotfileFolderCom] Mark dead

---
 module/plugins/crypter/HotfileFolderCom.py | 23 ++++-------------------
 1 file changed, 4 insertions(+), 19 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/HotfileFolderCom.py b/module/plugins/crypter/HotfileFolderCom.py
index 3efd8fc87..733437ec2 100644
--- a/module/plugins/crypter/HotfileFolderCom.py
+++ b/module/plugins/crypter/HotfileFolderCom.py
@@ -1,30 +1,15 @@
 # -*- coding: utf-8 -*-
 
-import re
+from module.plugins.internal.DeadCrypter import DeadCrypter
 
-from module.plugins.Crypter import Crypter
 
-
-class HotfileFolderCom(Crypter):
+class HotfileFolderCom(DeadCrypter):
     __name__ = "HotfileFolderCom"
     __type__ = "crypter"
-    __version__ = "0.1"
+    __version__ = "0.2"
 
-    __pattern__ = r'http://(?:www\.)?hotfile.com/list/\w+/\w+'
+    __pattern__ = r'https)://(?:www\.)?hotfile\.com/list/\w+/\w+'
 
     __description__ = """Hotfile.com folder decrypter plugin"""
     __author_name__ = "RaNaN"
     __author_mail__ = "RaNaN@pyload.org"
-
-
-    def decrypt(self, pyfile):
-        html = self.load(pyfile.url)
-
-        name = re.findall(
-            r'<img src="/i/folder.gif" width="23" height="14" style="margin-bottom: -2px;" />([^<]+)', html,
-            re.MULTILINE)[0].replace("/", "")
-        new_links = re.findall(r'href="(http://(www.)?hotfile\.com/dl/\d+/[0-9a-zA-Z]+[^"]+)', html)
-
-        new_links = [x[0] for x in new_links]
-
-        self.packages = [(name, new_links, name)]
-- 
cgit v1.2.3


From a4a2330adc70f9d0b3d2bc2e10386e2a5d8749ea Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 4 Oct 2014 23:35:49 +0200
Subject: Spare __pattern__ cosmetics

---
 module/plugins/crypter/LixIn.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index beba5ed04..dec2e02d3 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -10,7 +10,7 @@ class LixIn(Crypter):
     __type__ = "crypter"
     __version__ = "0.22"
 
-    __pattern__ = r'http://(www.)?lix.in/(?P<id>.*)'
+    __pattern__ = r'http://(?:www\.)?lix\.in/(?P<ID>.+)'
 
     __description__ = """Lix.in decrypter plugin"""
     __author_name__ = "spoob"
@@ -28,7 +28,7 @@ class LixIn(Crypter):
         if m is None:
             self.fail("couldn't identify file id")
 
-        id = m.group("id")
+        id = m.group("ID")
         self.logDebug("File id is %s" % id)
 
         self.html = self.req.load(url, decode=True)
-- 
cgit v1.2.3


From a9117257f71984d553811a605150acb5d1b499ce Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 5 Oct 2014 02:27:07 +0200
Subject: Better import lib header

---
 module/plugins/crypter/DuckCryptInfo.py  | 9 ++-------
 module/plugins/crypter/HoerbuchIn.py     | 4 ++--
 module/plugins/crypter/SafelinkingNet.py | 2 +-
 3 files changed, 5 insertions(+), 10 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 26b06c1c7..b278f2248 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -2,7 +2,7 @@
 
 import re
 
-from module.lib.BeautifulSoup import BeautifulSoup
+from BeautifulSoup import BeautifulSoup
 
 from module.plugins.Crypter import Crypter
 
@@ -23,12 +23,7 @@ class DuckCryptInfo(Crypter):
 
     def decrypt(self, pyfile):
         url = pyfile.url
-        # seems we don't need to wait
-        #src = self.req.load(str(url))
-        #m = re.search(self.TIMER_PATTERN, src)
-        #if m:
-        #    self.logDebug("Sleeping for" % m.group(1))
-        #    self.setWait(int(m.group(1)) ,False)
+
         m = re.match(self.__pattern__, url)
         if m is None:
             self.fail('Weird error in link')
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index 924ce5d3a..a283ff823 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -2,7 +2,7 @@
 
 import re
 
-from module.lib.BeautifulSoup import BeautifulSoup, BeautifulStoneSoup
+from BeautifulSoup import BeautifulSoup, BeautifulStoneSoup
 
 from module.plugins.Crypter import Crypter
 
@@ -45,7 +45,7 @@ class HoerbuchIn(Crypter):
         url = m.group(0)
 
         self.pyfile.url = url
-        src = self.req.load(url, post={"viewed": "adpg"})
+        src = self.load(url, post={"viewed": "adpg"})
 
         links = []
         pattern = re.compile("http://www\.hoerbuch\.in/protection/(\w+)/(.*?)\"")
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index e0c165705..d548bdf89 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -4,7 +4,7 @@ import re
 
 from pycurl import FOLLOWLOCATION
 
-from module.lib.BeautifulSoup import BeautifulSoup
+from BeautifulSoup import BeautifulSoup
 
 from module.common.json_layer import json_loads
 from module.plugins.Crypter import Crypter
-- 
cgit v1.2.3


From 40c01be326e336cd582db935cf53bc06e8f17b3c Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 5 Oct 2014 01:51:08 +0200
Subject: [LinkSaveIn] Now SimpleCrypter based

---
 module/plugins/crypter/LinkSaveIn.py | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index e80686c02..8b2b02ea6 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -8,14 +8,15 @@ import binascii
 import re
 
 from Crypto.Cipher import AES
-from module.plugins.Crypter import Crypter
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
 from module.unescape import unescape
 
 
-class LinkSaveIn(Crypter):
+class LinkSaveIn(SimpleCrypter):
     __name__ = "LinkSaveIn"
     __type__ = "crypter"
-    __version__ = "2.01"
+    __version__ = "2.02"
 
     __pattern__ = r'http://(?:www\.)?linksave.in/(?P<id>\w+)$'
 
@@ -23,10 +24,12 @@ class LinkSaveIn(Crypter):
     __author_name__ = "fragonib"
     __author_mail__ = "fragonib[AT]yahoo[DOT]es"
 
+
+    COOKIES = [(".linksave.in", "Linksave_Language", "english")]
+
     # Constants
     _JK_KEY_ = "jk"
     _CRYPTED_KEY_ = "crypted"
-    HOSTER_NAME = "linksave.in"
 
 
     def setup(self):
@@ -36,11 +39,11 @@ class LinkSaveIn(Crypter):
         self.package = None
         self.preferred_sources = ["cnl2", "rsdf", "ccf", "dlc", "web"]
 
+
     def decrypt(self, pyfile):
         # Init
         self.package = pyfile.package()
         self.fileid = re.match(self.__pattern__, pyfile.url).group('id')
-        self.req.cj.setCookie(self.HOSTER_NAME, "Linksave_Language", "english")
 
         # Request package
         self.html = self.load(pyfile.url)
@@ -74,41 +77,48 @@ class LinkSaveIn(Crypter):
         else:
             self.fail('Could not extract any links')
 
+
     def isOnline(self):
         if "<big>Error 404 - Folder not found!</big>" in self.html:
             self.logDebug("File not found")
             return False
         return True
 
+
     def isPasswordProtected(self):
         if re.search(r'''<input.*?type="password"''', self.html):
             self.logDebug("Links are password protected")
             return True
 
+
     def isCaptchaProtected(self):
         if "<b>Captcha:</b>" in self.html:
             self.logDebug("Links are captcha protected")
             return True
         return False
 
+
     def unlockPasswordProtection(self):
         password = self.getPassword()
         self.logDebug("Submitting password [%s] for protected links" % password)
         post = {"id": self.fileid, "besucherpasswort": password, 'login': 'submit'}
         self.html = self.load(self.pyfile.url, post=post)
 
+
     def unlockCaptchaProtection(self):
         captcha_hash = re.search(r'name="hash" value="([^"]+)', self.html).group(1)
         captcha_url = re.search(r'src=".(/captcha/cap.php\?hsh=[^"]+)', self.html).group(1)
         captcha_code = self.decryptCaptcha("http://linksave.in" + captcha_url, forceUser=True)
         self.html = self.load(self.pyfile.url, post={"id": self.fileid, "hash": captcha_hash, "code": captcha_code})
 
+
     def getPackageInfo(self):
         name = self.pyfile.package().name
         folder = self.pyfile.package().folder
         self.logDebug("Defaulting to pyfile name [%s] and folder [%s] for package" % (name, folder))
         return name, folder
 
+
     def handleErrors(self):
         if "The visitorpassword you have entered is wrong" in self.html:
             self.logDebug("Incorrect password, please set right password on 'Edit package' form and retry")
@@ -122,6 +132,7 @@ class LinkSaveIn(Crypter):
             else:
                 self.correctCaptcha()
 
+
     def handleLinkSource(self, type_):
         if type_ == "cnl2":
             return self.handleCNL2()
@@ -132,6 +143,7 @@ class LinkSaveIn(Crypter):
         else:
             self.fail('unknown source type "%s" (this is probably a bug)' % type_)
 
+
     def handleWebLinks(self):
         package_links = []
         self.logDebug("Search for Web links")
@@ -159,6 +171,7 @@ class LinkSaveIn(Crypter):
                     self.logDebug("Error decrypting Web link %s, %s" % (webLink, detail))
         return package_links
 
+
     def handleContainer(self, type_):
         package_links = []
         type_ = type_.lower()
@@ -173,6 +186,7 @@ class LinkSaveIn(Crypter):
             package_links.append(link)
         return package_links
 
+
     def handleCNL2(self):
         package_links = []
         self.logDebug("Search for CNL2 links")
@@ -187,6 +201,7 @@ class LinkSaveIn(Crypter):
                 self.fail("Unable to decrypt CNL2 links")
         return package_links
 
+
     def _getCipherParams(self):
         # Get jk
         jk_re = r'<INPUT.*?NAME="%s".*?VALUE="(.*?)"' % LinkSaveIn._JK_KEY_
@@ -200,6 +215,7 @@ class LinkSaveIn(Crypter):
         self.logDebug("Detected %d crypted blocks" % len(vcrypted))
         return vcrypted, vjk
 
+
     def _getLinks(self, crypted, jk):
         # Get key
         jreturn = self.js.eval("%s f()" % jk)
-- 
cgit v1.2.3


From 1047c706d41dec4a49a747496c2ec01ed3bf7801 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 5 Oct 2014 01:54:58 +0200
Subject: Use load instead req.load in all crypters and CaptchaService

---
 module/plugins/crypter/DDLMusicOrg.py | 4 ++--
 module/plugins/crypter/LixIn.py       | 6 +++---
 module/plugins/crypter/OneKhDe.py     | 4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py
index f5e7203d3..9d76bf11a 100644
--- a/module/plugins/crypter/DDLMusicOrg.py
+++ b/module/plugins/crypter/DDLMusicOrg.py
@@ -23,7 +23,7 @@ class DDLMusicOrg(Crypter):
         self.multiDL = False
 
     def decrypt(self, pyfile):
-        html = self.req.load(pyfile.url, cookies=True)
+        html = self.load(pyfile.url, cookies=True)
 
         if re.search(r"Wer dies nicht rechnen kann", html) is not None:
             self.offline()
@@ -38,7 +38,7 @@ class DDLMusicOrg(Crypter):
         else:
             solve = int(math.group(1)) - int(math.group(3))
         sleep(3)
-        htmlwithlink = self.req.load(pyfile.url, cookies=True,
+        htmlwithlink = self.load(pyfile.url, cookies=True,
                                      post={"calc%s" % linknr: solve, "send%s" % linknr: "Send", "id": id,
                                            "linknr": linknr})
         m = re.search(r"<form id=\"ff\" action=\"(.*?)\" method=\"post\">", htmlwithlink)
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index dec2e02d3..7aedda686 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -31,7 +31,7 @@ class LixIn(Crypter):
         id = m.group("ID")
         self.logDebug("File id is %s" % id)
 
-        self.html = self.req.load(url, decode=True)
+        self.html = self.load(url, decode=True)
 
         m = re.search(self.SUBMIT_PATTERN, self.html)
         if m is None:
@@ -44,12 +44,12 @@ class LixIn(Crypter):
                 if m:
                     self.logDebug("Trying captcha")
                     captcharesult = self.decryptCaptcha("http://lix.in/" + m.group("image"))
-                self.html = self.req.load(url, decode=True,
+                self.html = self.load(url, decode=True,
                                           post={"capt": captcharesult, "submit": "submit", "tiny": id})
             else:
                 self.logDebug("No captcha/captcha solved")
         else:
-            self.html = self.req.load(url, decode=True, post={"submit": "submit", "tiny": id})
+            self.html = self.load(url, decode=True, post={"submit": "submit", "tiny": id})
 
         m = re.search(self.LINK_PATTERN, self.html)
         if m is None:
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index ba93278d5..4b22432f8 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -30,9 +30,9 @@ class OneKhDe(Crypter):
 
     def proceed(self, url, location):
         url = self.parent.url
-        self.html = self.req.load(url)
+        self.html = self.load(url)
         link_ids = re.findall(r"<a id=\"DownloadLink_(\d*)\" href=\"http://1kh.de/", self.html)
         for id in link_ids:
             new_link = unescape(
-                re.search("width=\"100%\" src=\"(.*)\"></iframe>", self.req.load("http://1kh.de/l/" + id)).group(1))
+                re.search("width=\"100%\" src=\"(.*)\"></iframe>", self.load("http://1kh.de/l/" + id)).group(1))
             self.urls.append(new_link)
-- 
cgit v1.2.3


From c6eb00c85ee7ee83621175003e6140cdddf8f35e Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 5 Oct 2014 11:52:56 +0200
Subject: [HotfileFolderCom] Fix broken __pattern__ (thx zapp-brannigan)

---
 module/plugins/crypter/HotfileFolderCom.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/HotfileFolderCom.py b/module/plugins/crypter/HotfileFolderCom.py
index 733437ec2..16fa604c9 100644
--- a/module/plugins/crypter/HotfileFolderCom.py
+++ b/module/plugins/crypter/HotfileFolderCom.py
@@ -6,9 +6,9 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 class HotfileFolderCom(DeadCrypter):
     __name__ = "HotfileFolderCom"
     __type__ = "crypter"
-    __version__ = "0.2"
+    __version__ = "0.3"
 
-    __pattern__ = r'https)://(?:www\.)?hotfile\.com/list/\w+/\w+'
+    __pattern__ = r'https?://(?:www\.)?hotfile\.com/list/\w+/\w+'
 
     __description__ = """Hotfile.com folder decrypter plugin"""
     __author_name__ = "RaNaN"
-- 
cgit v1.2.3


From ff91b58bf9ee65aaeb048426295af6ad122b119e Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 5 Oct 2014 22:14:53 +0200
Subject: Spare code cosmetics

---
 module/plugins/crypter/DevhostStFolder.py    | 2 +-
 module/plugins/crypter/EasybytezComFolder.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py
index 0d9c032cb..1986f9fd0 100644
--- a/module/plugins/crypter/DevhostStFolder.py
+++ b/module/plugins/crypter/DevhostStFolder.py
@@ -17,7 +17,7 @@ class DevhostStFolder(SimpleCrypter):
 
     __pattern__ = r'http://(?:www\.)?d-h\.st/users/\w+/\?fld_id=\d+'
 
-    __description__ = """d-h.st decrypter plugin"""
+    __description__ = """d-h.st folder decrypter plugin"""
     __author_name_ = "zapp-brannigan"
     __author_mail_ = "fuerst.reinje@web.de"
 
diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index 500f12278..be85a3798 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -10,7 +10,7 @@ class EasybytezComFolder(SimpleCrypter):
 
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
 
-    __description__ = """Easybytez.com decrypter plugin"""
+    __description__ = """Easybytez.com folder decrypter plugin"""
     __author_name__ = "stickell"
     __author_mail__ = "l.stickell@yahoo.it"
 
-- 
cgit v1.2.3


From 4d2aae75e639c3fb78fe1ec454cafea5617ffd4e Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 6 Oct 2014 01:50:55 +0200
Subject: [DevhostStFolder] Folder-in-folder support

---
 module/plugins/crypter/DevhostStFolder.py | 33 ++++++++++++++++++++++++++-----
 1 file changed, 28 insertions(+), 5 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py
index 1986f9fd0..049f1dabc 100644
--- a/module/plugins/crypter/DevhostStFolder.py
+++ b/module/plugins/crypter/DevhostStFolder.py
@@ -13,16 +13,39 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class DevhostStFolder(SimpleCrypter):
     __name__ = "DevhostStFolder"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
-    __pattern__ = r'http://(?:www\.)?d-h\.st/users/\w+/\?fld_id=\d+'
+    __pattern__ = r'http://(?:www\.)?d-h\.st/users/(?P<USER>\w+)(/\?fld_id=(?P<ID>\d+))?'
 
     __description__ = """d-h.st folder decrypter plugin"""
-    __author_name_ = "zapp-brannigan"
-    __author_mail_ = "fuerst.reinje@web.de"
+    __author_name_ = ("zapp-brannigan", "Walter Purcaro")
+    __author_mail_ = ("fuerst.reinje@web.de", "vuolter@gmail.com")
 
 
-    LINK_PATTERN = r';"><a href="/(\w+)'
+    LINK_PATTERN = r'(?:/> |;">)<a href="(.+?)"(?!>Back to \w+<)'
+    OFFLINE_PATTERN = r'"/cHP">test\.png<'
+
+
+    def getPackageNameAndFolder(self):
+        try:
+            id = re.match(self.__pattern__, self.pyfile.url).group('ID')
+            if id == "0":
+                raise
+
+            p = r'href="(.+?)">Back to \w+<'
+            m = re.search(p, self.html)
+            html = self.load(urljoin("http://d-h.st", m.group(1)),
+                             cookies=False)
+
+            p = '\?fld_id=%s.*?">(.+?)<' % id
+            m = re.search(p, html)
+            name = folder = m.group(1)
+
+        except Exception, e:
+            self.logDebug(str(e))
+            name = folder = re.match(self.__pattern__, self.pyfile.url).group('USER')
+
+        return name, folder
 
 
     def getLinks(self):
-- 
cgit v1.2.3


From 6f08566dd6c75d76f5cd2c1dc835e0c22838780f Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 6 Oct 2014 14:49:16 +0200
Subject: Update SimpleCrypter based plugins

---
 module/plugins/crypter/BitshareComFolder.py    | 4 ++--
 module/plugins/crypter/DataHuFolder.py         | 4 ++--
 module/plugins/crypter/EasybytezComFolder.py   | 4 ++--
 module/plugins/crypter/FilecloudIoFolder.py    | 4 ++--
 module/plugins/crypter/FilefactoryComFolder.py | 6 +++---
 module/plugins/crypter/FilerNetFolder.py       | 4 ++--
 module/plugins/crypter/FilestubeCom.py         | 4 ++--
 module/plugins/crypter/FiletramCom.py          | 4 ++--
 module/plugins/crypter/FiredriveComFolder.py   | 4 ++--
 module/plugins/crypter/FreakhareComFolder.py   | 6 +++---
 module/plugins/crypter/ImgurComAlbum.py        | 4 ++--
 module/plugins/crypter/MultiUpOrg.py           | 4 ++--
 module/plugins/crypter/NetfolderIn.py          | 4 ++--
 module/plugins/crypter/NosvideoCom.py          | 4 ++--
 module/plugins/crypter/PastebinCom.py          | 4 ++--
 module/plugins/crypter/TnyCz.py                | 4 ++--
 module/plugins/crypter/TurbobitNetFolder.py    | 4 ++--
 module/plugins/crypter/TusfilesNetFolder.py    | 6 +++---
 module/plugins/crypter/UploadableChFolder.py   | 4 ++--
 module/plugins/crypter/UploadedToFolder.py     | 4 ++--
 20 files changed, 43 insertions(+), 43 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py
index 219dabce8..f6a74bcad 100644
--- a/module/plugins/crypter/BitshareComFolder.py
+++ b/module/plugins/crypter/BitshareComFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class BitshareComFolder(SimpleCrypter):
     __name__ = "BitshareComFolder"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?bitshare\.com/\?d=\w+'
 
@@ -15,4 +15,4 @@ class BitshareComFolder(SimpleCrypter):
     __author_mail__ = "l.stickell@yahoo.it"
 
     LINK_PATTERN = r'<a href="(http://bitshare.com/files/.+)">.+</a></td>'
-    TITLE_PATTERN = r'View public folder "(?P<title>.+)"</h1>'
+    TITLE_PATTERN = r'View public folder "(.+)"</h1>'
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index a500ac796..31e71944f 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class DataHuFolder(SimpleCrypter):
     __name__ = "DataHuFolder"
     __type__ = "crypter"
-    __version__ = "0.03"
+    __version__ = "0.04"
 
     __pattern__ = r'http://(?:www\.)?data.hu/dir/\w+'
 
@@ -17,7 +17,7 @@ class DataHuFolder(SimpleCrypter):
     __author_mail__ = "l.stickell@yahoo.it"
 
     LINK_PATTERN = r"<a href='(http://data\.hu/get/.+)' target='_blank'>\1</a>"
-    TITLE_PATTERN = ur'<title>(?P<title>.+) Let\xf6lt\xe9se</title>'
+    TITLE_PATTERN = ur'<title>(.+) Let\xf6lt\xe9se</title>'
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index be85a3798..2a261e709 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class EasybytezComFolder(SimpleCrypter):
     __name__ = "EasybytezComFolder"
     __type__ = "crypter"
-    __version__ = "0.07"
+    __version__ = "0.08"
 
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
 
@@ -18,6 +18,6 @@ class EasybytezComFolder(SimpleCrypter):
     URL_REPLACEMENTS = [(__pattern__, r"http://www.easybytez.com/users/\g<ID>?per_page=10000")]
 
     LINK_PATTERN = r'<td><a href="(http://www\.easybytez\.com/\w+)" target="_blank">.+(?:</a>)?</td>'
-    TITLE_PATTERN = r'<Title>Files of \d+: (?P<title>.+) folder</Title>'
+    TITLE_PATTERN = r'<Title>Files of \d+: (.+) folder</Title>'
 
     LOGIN_ACCOUNT = True
diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
index 9ec950061..eb6aaa847 100644
--- a/module/plugins/crypter/FilecloudIoFolder.py
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FilecloudIoFolder(SimpleCrypter):
     __name__ = "FilecloudIoFolder"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+'
 
@@ -15,4 +15,4 @@ class FilecloudIoFolder(SimpleCrypter):
     __author_mail__ = "vuolter@gmail.com"
 
     LINK_PATTERN = r'href="(http://filecloud.io/\w+)" title'
-    TITLE_PATTERN = r'>(?P<title>.+?) - filecloud.io<'
+    TITLE_PATTERN = r'>(.+?) - filecloud.io<'
diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index b565b4d0b..08978c032 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FilefactoryComFolder(SimpleCrypter):
     __name__ = "FilefactoryComFolder"
     __type__ = "crypter"
-    __version__ = "0.2"
+    __version__ = "0.3"
 
     __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+'
 
@@ -15,8 +15,8 @@ class FilefactoryComFolder(SimpleCrypter):
     __author_mail__ = "l.stickell@yahoo.it"
 
     LINK_PATTERN = r'<td><a href="([^"]+)">'
-    TITLE_PATTERN = r'<h1>Files in <span>(?P<title>.+)</span></h1>'
-    PAGES_PATTERN = r'data-paginator-totalPages="(?P<pages>\d+)"'
+    TITLE_PATTERN = r'<h1>Files in <span>(.+)</span></h1>'
+    PAGES_PATTERN = r'data-paginator-totalPages="(\d+)"'
 
     COOKIES = [('.filefactory.com', 'locale', 'en_US.utf8')]
 
diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
index 9951661b5..0195b8af9 100644
--- a/module/plugins/crypter/FilerNetFolder.py
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FilerNetFolder(SimpleCrypter):
     __name__ = "FilerNetFolder"
     __type__ = "crypter"
-    __version__ = "0.3"
+    __version__ = "0.4"
 
     __pattern__ = r'https?://filer\.net/folder/\w{16}'
 
@@ -15,7 +15,7 @@ class FilerNetFolder(SimpleCrypter):
     __author_mail_ = ("nathan.notwhite@gmail.com", "l.stickell@yahoo.it")
 
     LINK_PATTERN = r'href="(/get/\w{16})">(?!<)'
-    TITLE_PATTERN = r'<h3>(?P<title>.+) - <small'
+    TITLE_PATTERN = r'<h3>(.+?) - <small'
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py
index f0aaaa579..3caee9e62 100644
--- a/module/plugins/crypter/FilestubeCom.py
+++ b/module/plugins/crypter/FilestubeCom.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FilestubeCom(SimpleCrypter):
     __name__ = "FilestubeCom"
     __type__ = "crypter"
-    __version__ = "0.03"
+    __version__ = "0.04"
 
     __pattern__ = r'http://(?:www\.)?filestube\.(?:com|to)/\w+'
 
@@ -15,4 +15,4 @@ class FilestubeCom(SimpleCrypter):
     __author_mail__ = "l.stickell@yahoo.it"
 
     LINK_PATTERN = r'<a class=\"file-link-main(?: noref)?\" [^>]* href=\"(http://[^\"]+)'
-    TITLE_PATTERN = r'<h1\s*> (?P<title>.+)  download\s*</h1>'
+    TITLE_PATTERN = r'<h1\s*> (.+)  download\s*</h1>'
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index 7052955cf..6125914ff 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FiletramCom(SimpleCrypter):
     __name__ = "FiletramCom"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?filetram.com/[^/]+/.+'
 
@@ -15,4 +15,4 @@ class FiletramCom(SimpleCrypter):
     __author_mail__ = ("igelkun@myopera.com", "l.stickell@yahoo.it")
 
     LINK_PATTERN = r'\s+(http://.+)'
-    TITLE_PATTERN = r'<title>(?P<title>[^<]+) - Free Download[^<]*</title>'
+    TITLE_PATTERN = r'<title>(.+?) - Free Download'
diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py
index a94d0847f..4831101cc 100644
--- a/module/plugins/crypter/FiredriveComFolder.py
+++ b/module/plugins/crypter/FiredriveComFolder.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FiredriveComFolder(SimpleCrypter):
     __name__ = "FiredriveComFolder"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/share/.+'
 
@@ -17,7 +17,7 @@ class FiredriveComFolder(SimpleCrypter):
     __author_mail__ = "vuolter@gmail.com"
 
     LINK_PATTERN = r'<div class="pf_item pf_(file|folder).+?public=\'(.+?)\''
-    TITLE_PATTERN = r'>Shared Folder "(?P<title>.+)" | Firedrive<'
+    TITLE_PATTERN = r'>Shared Folder "(.+)" | Firedrive<'
     OFFLINE_PATTERN = r'class="sad_face_image"|>No such page here.<'
     TEMP_OFFLINE_PATTERN = r'>(File Temporarily Unavailable|Server Error. Try again later)'
 
diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py
index 2a6877891..5036a8842 100644
--- a/module/plugins/crypter/FreakhareComFolder.py
+++ b/module/plugins/crypter/FreakhareComFolder.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FreakhareComFolder(SimpleCrypter):
     __name__ = "FreakhareComFolder"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?freakshare\.com/folder/.+'
 
@@ -17,8 +17,8 @@ class FreakhareComFolder(SimpleCrypter):
     __author_mail__ = "l.stickell@yahoo.it"
 
     LINK_PATTERN = r'<a href="(http://freakshare.com/files/[^"]+)" target="_blank">'
-    TITLE_PATTERN = r'Folder:</b> (?P<title>.+)'
-    PAGES_PATTERN = r'Pages: +(?P<pages>\d+)'
+    TITLE_PATTERN = r'Folder:</b> (.+)'
+    PAGES_PATTERN = r'Pages: +(\d+)'
 
 
     def loadPage(self, page_n):
diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index eb1f4441a..72674a8fb 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -7,7 +7,7 @@ from module.utils import uniqify
 class ImgurComAlbum(SimpleCrypter):
     __name__ = "ImgurComAlbum"
     __type__ = "crypter"
-    __version__ = "0.4"
+    __version__ = "0.5"
 
     __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}'
 
@@ -15,7 +15,7 @@ class ImgurComAlbum(SimpleCrypter):
     __author_name_ = "nath_schwarz"
     __author_mail_ = "nathan.notwhite@gmail.com"
 
-    TITLE_PATTERN = r'(?P<title>.+) - Imgur'
+    TITLE_PATTERN = r'(.+?) - Imgur'
     LINK_PATTERN = r'i\.imgur\.com/\w{7}s?\.(?:jpeg|jpg|png|gif|apng)'
 
 
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index ffeaa6f04..cd0ec33ad 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -9,7 +9,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class MultiUpOrg(SimpleCrypter):
     __name__ = "MultiUpOrg"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?multiup\.org/(en|fr)/(?P<TYPE>project|download|miror)/\w+(/\w+)?'
 
@@ -17,7 +17,7 @@ class MultiUpOrg(SimpleCrypter):
     __author_name__ = "Walter Purcaro"
     __author_mail__ = "vuolter@gmail.com"
 
-    TITLE_PATTERN = r'<title>.*(Project|Projet|ownload|élécharger) (?P<title>.+?) (\(|- )'
+    TITLE_PATTERN = r'<title>.*(?:Project|Projet|ownload|élécharger) (.+?) (?:\(|- )'
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 1c337391c..7baffb25e 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class NetfolderIn(SimpleCrypter):
     __name__ = "NetfolderIn"
     __type__ = "crypter"
-    __version__ = "0.6"
+    __version__ = "0.7"
 
     __pattern__ = r'http://(?:www\.)?netfolder.in/((?P<id1>\w+)/\w+|folder.php\?folder_id=(?P<id2>\w+))'
 
@@ -16,7 +16,7 @@ class NetfolderIn(SimpleCrypter):
     __author_name__ = ("RaNaN", "fragonib")
     __author_mail__ = ("RaNaN@pyload.org", "fragonib[AT]yahoo[DOT]es")
 
-    TITLE_PATTERN = r'<div class="Text">Inhalt des Ordners <span(.*)>(?P<title>.+)</span></div>'
+    TITLE_PATTERN = r'<div class="Text">Inhalt des Ordners <span.*>(.+)</span></div>'
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index a3bb11b16..ce8e2b372 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class NosvideoCom(SimpleCrypter):
     __name__ = "NosvideoCom"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?nosvideo\.com/\?v=\w+'
 
@@ -15,4 +15,4 @@ class NosvideoCom(SimpleCrypter):
     __author_mail__ = "igelkun@myopera.com"
 
     LINK_PATTERN = r'href="(http://(?:w{3}\.)?nosupload.com/\?d=\w+)"'
-    TITLE_PATTERN = r'<[tT]itle>Watch (?P<title>.+)</[tT]itle>'
+    TITLE_PATTERN = r'<[tT]itle>Watch (.+?)<'
diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py
index 55aa2ee4a..9c114a56b 100644
--- a/module/plugins/crypter/PastebinCom.py
+++ b/module/plugins/crypter/PastebinCom.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class PastebinCom(SimpleCrypter):
     __name__ = "PastebinCom"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?pastebin\.com/\w+'
 
@@ -15,4 +15,4 @@ class PastebinCom(SimpleCrypter):
     __author_mail__ = "l.stickell@yahoo.it"
 
     LINK_PATTERN = r'<div class="de\d+">(https?://[^ <]+)(?:[^<]*)</div>'
-    TITLE_PATTERN = r'<div class="paste_box_line1" title="(?P<title>[^"]+)">'
+    TITLE_PATTERN = r'<div class="paste_box_line1" title="([^"]+)">'
diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py
index 3ae2c5ed2..e0b92ae22 100644
--- a/module/plugins/crypter/TnyCz.py
+++ b/module/plugins/crypter/TnyCz.py
@@ -8,7 +8,7 @@ import re
 class TnyCz(SimpleCrypter):
     __name__ = "TnyCz"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?tny\.cz/\w+'
 
@@ -16,7 +16,7 @@ class TnyCz(SimpleCrypter):
     __author_name__ = "Walter Purcaro"
     __author_mail__ = "vuolter@gmail.com"
 
-    TITLE_PATTERN = r'<title>(?P<title>.+) - .+</title>'
+    TITLE_PATTERN = r'<title>(.+) - .+</title>'
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index 0810e0ed1..ec0fd157d 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -9,7 +9,7 @@ from module.common.json_layer import json_loads
 class TurbobitNetFolder(SimpleCrypter):
     __name__ = "TurbobitNetFolder"
     __type__ = "crypter"
-    __version__ = "0.03"
+    __version__ = "0.04"
 
     __pattern__ = r'http://(?:www\.)?turbobit\.net/download/folder/(?P<ID>\w+)'
 
@@ -17,7 +17,7 @@ class TurbobitNetFolder(SimpleCrypter):
     __author_name__ = ("stickell", "Walter Purcaro")
     __author_mail__ = ("l.stickell@yahoo.it", "vuolter@gmail.com")
 
-    TITLE_PATTERN = r"src='/js/lib/grid/icon/folder.png'> <span>(?P<title>.+?)</span>"
+    TITLE_PATTERN = r"src='/js/lib/grid/icon/folder.png'> <span>(.+?)</span>"
 
 
     def _getLinks(self, id, page=1):
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index f51c2b715..7ce636d2d 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -10,7 +10,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class TusfilesNetFolder(SimpleCrypter):
     __name__ = "TusfilesNetFolder"
     __type__ = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)/?'
 
@@ -19,8 +19,8 @@ class TusfilesNetFolder(SimpleCrypter):
     __author_mail__ = ("vuolter@gmail.com", "l.stickell@yahoo.it")
 
     LINK_PATTERN = r'<TD align=left><a href="(.*?)">'
-    TITLE_PATTERN = r'<Title>.*?\: (?P<title>.+) folder</Title>'
-    PAGES_PATTERN = r'>\((?P<pages>\d+) \w+\)<'
+    TITLE_PATTERN = r'<Title>.*?\: (.+) folder</Title>'
+    PAGES_PATTERN = r'>\((\d+) \w+\)<'
 
     URL_REPLACEMENTS = [(__pattern__, r'https://www.tusfiles.net/go/\g<ID>/')]
 
diff --git a/module/plugins/crypter/UploadableChFolder.py b/module/plugins/crypter/UploadableChFolder.py
index b76076531..867a699c2 100644
--- a/module/plugins/crypter/UploadableChFolder.py
+++ b/module/plugins/crypter/UploadableChFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class UploadableChFolder(SimpleCrypter):
     __name__ = "UploadableChFolder"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?uploadable\.ch/list/\w+'
 
@@ -16,6 +16,6 @@ class UploadableChFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'"(.+?)" class="icon_zipfile">'
-    TITLE_PATTERN = r'<div class="folder"><span>&nbsp;</span>(?P<title>.+?)</div>'
+    TITLE_PATTERN = r'<div class="folder"><span>&nbsp;</span>(.+?)</div>'
     OFFLINE_PATTERN = r'We are sorry... The URL you entered cannot be found on the server.'
     TEMP_OFFLINE_PATTERN = r'<div class="icon_err">'
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index 20eb553a9..d33dc91a0 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class UploadedToFolder(SimpleCrypter):
     __name__ = "UploadedToFolder"
     __type__ = "crypter"
-    __version__ = "0.3"
+    __version__ = "0.4"
 
     __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P<id>\w+)'
 
@@ -17,7 +17,7 @@ class UploadedToFolder(SimpleCrypter):
     __author_mail__ = "l.stickell@yahoo.it"
 
     PLAIN_PATTERN = r'<small class="date"><a href="(?P<plain>[\w/]+)" onclick='
-    TITLE_PATTERN = r'<title>(?P<title>[^<]+)</title>'
+    TITLE_PATTERN = r'<title>(.+?)<'
 
 
     def decrypt(self, pyfile):
-- 
cgit v1.2.3


From b0868ae6446078bacf1635dde5e4ab316b4a94cb Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 7 Oct 2014 18:57:59 +0200
Subject: New __authors__ key replaces __author_name__ and __author_mail__ +
 Whitespaces and EOF fixup

---
 module/plugins/crypter/BitshareComFolder.py     | 4 ++--
 module/plugins/crypter/C1neonCom.py             | 3 +--
 module/plugins/crypter/ChipDe.py                | 3 +--
 module/plugins/crypter/CrockoComFolder.py       | 4 ++--
 module/plugins/crypter/CryptItCom.py            | 3 +--
 module/plugins/crypter/CzshareComFolder.py      | 4 ++--
 module/plugins/crypter/DDLMusicOrg.py           | 3 +--
 module/plugins/crypter/DailymotionBatch.py      | 3 +--
 module/plugins/crypter/DataHuFolder.py          | 5 +++--
 module/plugins/crypter/DdlstorageComFolder.py   | 4 ++--
 module/plugins/crypter/DepositfilesComFolder.py | 4 ++--
 module/plugins/crypter/Dereferer.py             | 3 +--
 module/plugins/crypter/DevhostStFolder.py       | 4 ++--
 module/plugins/crypter/DlProtectCom.py          | 4 ++--
 module/plugins/crypter/DontKnowMe.py            | 4 ++--
 module/plugins/crypter/DuckCryptInfo.py         | 4 ++--
 module/plugins/crypter/DuploadOrgFolder.py      | 4 ++--
 module/plugins/crypter/EasybytezComFolder.py    | 3 +--
 module/plugins/crypter/EmbeduploadCom.py        | 4 ++--
 module/plugins/crypter/FilebeerInfoFolder.py    | 3 +--
 module/plugins/crypter/FilecloudIoFolder.py     | 4 ++--
 module/plugins/crypter/FilefactoryComFolder.py  | 4 ++--
 module/plugins/crypter/FilerNetFolder.py        | 5 +++--
 module/plugins/crypter/FileserveComFolder.py    | 4 ++--
 module/plugins/crypter/FilestubeCom.py          | 4 ++--
 module/plugins/crypter/FiletramCom.py           | 5 +++--
 module/plugins/crypter/FiredriveComFolder.py    | 4 ++--
 module/plugins/crypter/FourChanOrg.py           | 3 +--
 module/plugins/crypter/FreakhareComFolder.py    | 4 ++--
 module/plugins/crypter/FreetexthostCom.py       | 3 +--
 module/plugins/crypter/FshareVnFolder.py        | 4 ++--
 module/plugins/crypter/GooGl.py                 | 4 ++--
 module/plugins/crypter/HoerbuchIn.py            | 5 +++--
 module/plugins/crypter/HotfileFolderCom.py      | 3 +--
 module/plugins/crypter/ILoadTo.py               | 3 +--
 module/plugins/crypter/ImgurComAlbum.py         | 4 ++--
 module/plugins/crypter/LetitbitNetFolder.py     | 5 +++--
 module/plugins/crypter/LinkSaveIn.py            | 3 +--
 module/plugins/crypter/LinkdecrypterCom.py      | 5 +++--
 module/plugins/crypter/LixIn.py                 | 4 ++--
 module/plugins/crypter/LofCc.py                 | 3 +--
 module/plugins/crypter/MBLinkInfo.py            | 4 ++--
 module/plugins/crypter/MediafireComFolder.py    | 4 ++--
 module/plugins/crypter/Movie2kTo.py             | 3 +--
 module/plugins/crypter/MultiUpOrg.py            | 4 ++--
 module/plugins/crypter/MultiloadCz.py           | 4 ++--
 module/plugins/crypter/MultiuploadCom.py        | 3 +--
 module/plugins/crypter/NCryptIn.py              | 5 +++--
 module/plugins/crypter/NetfolderIn.py           | 5 +++--
 module/plugins/crypter/NosvideoCom.py           | 4 ++--
 module/plugins/crypter/OneKhDe.py               | 3 +--
 module/plugins/crypter/OronComFolder.py         | 3 +--
 module/plugins/crypter/PastebinCom.py           | 4 ++--
 module/plugins/crypter/QuickshareCzFolder.py    | 4 ++--
 module/plugins/crypter/RSLayerCom.py            | 3 +--
 module/plugins/crypter/RelinkUs.py              | 4 ++--
 module/plugins/crypter/SafelinkingNet.py        | 4 ++--
 module/plugins/crypter/SecuredIn.py             | 3 +--
 module/plugins/crypter/ShareLinksBiz.py         | 3 +--
 module/plugins/crypter/ShareRapidComFolder.py   | 4 ++--
 module/plugins/crypter/SpeedLoadOrgFolder.py    | 3 +--
 module/plugins/crypter/StealthTo.py             | 3 +--
 module/plugins/crypter/TnyCz.py                 | 4 ++--
 module/plugins/crypter/TrailerzoneInfo.py       | 3 +--
 module/plugins/crypter/TurbobitNetFolder.py     | 5 +++--
 module/plugins/crypter/TusfilesNetFolder.py     | 5 +++--
 module/plugins/crypter/UlozToFolder.py          | 4 ++--
 module/plugins/crypter/UploadableChFolder.py    | 4 ++--
 module/plugins/crypter/UploadedToFolder.py      | 4 ++--
 module/plugins/crypter/WiiReloadedOrg.py        | 3 +--
 module/plugins/crypter/XupPl.py                 | 3 +--
 module/plugins/crypter/YoutubeBatch.py          | 3 +--
 72 files changed, 127 insertions(+), 144 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py
index f6a74bcad..59226b7bb 100644
--- a/module/plugins/crypter/BitshareComFolder.py
+++ b/module/plugins/crypter/BitshareComFolder.py
@@ -11,8 +11,8 @@ class BitshareComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?bitshare\.com/\?d=\w+'
 
     __description__ = """Bitshare.com folder decrypter plugin"""
-    __author_name__ = "stickell"
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+
 
     LINK_PATTERN = r'<a href="(http://bitshare.com/files/.+)">.+</a></td>'
     TITLE_PATTERN = r'View public folder "(.+)"</h1>'
diff --git a/module/plugins/crypter/C1neonCom.py b/module/plugins/crypter/C1neonCom.py
index 829ed63d6..40692d0d1 100644
--- a/module/plugins/crypter/C1neonCom.py
+++ b/module/plugins/crypter/C1neonCom.py
@@ -11,5 +11,4 @@ class C1neonCom(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?c1neon.com/.*?'
 
     __description__ = """C1neon.com decrypter plugin"""
-    __author_name__ = "godofdream"
-    __author_mail__ = "soilfiction@gmail.com"
+    __authors__ = [("godofdream", "soilfiction@gmail.com")]
diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index e545efa54..9aac1efa4 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -12,8 +12,7 @@ class ChipDe(Crypter):
     __pattern__ = r'http://(?:www\.)?chip.de/video/.*\.html'
 
     __description__ = """Chip.de decrypter plugin"""
-    __author_name__ = "4Christopher"
-    __author_mail__ = "4Christopher@gmx.de"
+    __authors__ = [("4Christopher", "4Christopher@gmx.de")]
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/CrockoComFolder.py b/module/plugins/crypter/CrockoComFolder.py
index 56abeac29..dae536dd0 100644
--- a/module/plugins/crypter/CrockoComFolder.py
+++ b/module/plugins/crypter/CrockoComFolder.py
@@ -11,7 +11,7 @@ class CrockoComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?crocko.com/f/.*'
 
     __description__ = """Crocko.com folder decrypter plugin"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+
 
     LINK_PATTERN = r'<td class="last"><a href="([^"]+)">download</a>'
diff --git a/module/plugins/crypter/CryptItCom.py b/module/plugins/crypter/CryptItCom.py
index 66c5e7ca7..a248a92d1 100644
--- a/module/plugins/crypter/CryptItCom.py
+++ b/module/plugins/crypter/CryptItCom.py
@@ -11,5 +11,4 @@ class CryptItCom(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?crypt-it\.com/(s|e|d|c)/[\w]+'
 
     __description__ = """Crypt-it.com decrypter plugin"""
-    __author_name__ = "jeix"
-    __author_mail__ = "jeix@hasnomail.de"
+    __authors__ = [("jeix", "jeix@hasnomail.de")]
diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index 64affc867..3762cbf10 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -12,8 +12,8 @@ class CzshareComFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/folders/.*'
 
     __description__ = """Czshare.com folder decrypter plugin, now Sdilej.cz"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+
 
     FOLDER_PATTERN = r'<tr class="subdirectory">\s*<td>\s*<table>(.*?)</table>'
     LINK_PATTERN = r'<td class="col2"><a href="([^"]+)">info</a></td>'
diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py
index 9d76bf11a..c0b137992 100644
--- a/module/plugins/crypter/DDLMusicOrg.py
+++ b/module/plugins/crypter/DDLMusicOrg.py
@@ -15,8 +15,7 @@ class DDLMusicOrg(Crypter):
     __pattern__ = r'http://(?:www\.)?ddl-music\.org/captcha/ddlm_cr\d\.php\?\d+\?\d+'
 
     __description__ = """Ddl-music.org decrypter plugin"""
-    __author_name__ = "mkaay"
-    __author_mail__ = "mkaay@mkaay.de"
+    __authors__ = [("mkaay", "mkaay@mkaay.de")]
 
 
     def setup(self):
diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py
index e43d4e1fd..cc97910af 100644
--- a/module/plugins/crypter/DailymotionBatch.py
+++ b/module/plugins/crypter/DailymotionBatch.py
@@ -17,8 +17,7 @@ class DailymotionBatch(Crypter):
     __pattern__ = r'https?://(?:www\.)?dailymotion\.com/((playlists/)?(?P<TYPE>playlist|user)/)?(?P<ID>[\w^_]+)(?(TYPE)|#)'
 
     __description__ = """Dailymotion.com channel & playlist decrypter"""
-    __author_name__ = "Walter Purcaro"
-    __author_mail__ = "vuolter@gmail.com"
+    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
     def api_response(self, ref, req=None):
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 31e71944f..405945f58 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -13,8 +13,9 @@ class DataHuFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?data.hu/dir/\w+'
 
     __description__ = """Data.hu folder decrypter plugin"""
-    __author_name__ = ("crash", "stickell")
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("crash", None),
+                   ("stickell", "l.stickell@yahoo.it")]
+
 
     LINK_PATTERN = r"<a href='(http://data\.hu/get/.+)' target='_blank'>\1</a>"
     TITLE_PATTERN = ur'<title>(.+) Let\xf6lt\xe9se</title>'
diff --git a/module/plugins/crypter/DdlstorageComFolder.py b/module/plugins/crypter/DdlstorageComFolder.py
index 3b1dc6dd6..87719cb26 100644
--- a/module/plugins/crypter/DdlstorageComFolder.py
+++ b/module/plugins/crypter/DdlstorageComFolder.py
@@ -11,8 +11,8 @@ class DdlstorageComFolder(DeadCrypter):
     __pattern__ = r'https?://(?:www\.)?ddlstorage\.com/folder/\w+'
 
     __description__ = """DDLStorage.com folder decrypter plugin"""
-    __author_name__ = ("godofdream", "stickell")
-    __author_mail__ = ("soilfiction@gmail.com", "l.stickell@yahoo.it")
+    __authors__ = [("godofdream", "soilfiction@gmail.com"),
+                   ("stickell", "l.stickell@yahoo.it")]
 
 
 getInfo = create_getInfo(SpeedLoadOrg)
diff --git a/module/plugins/crypter/DepositfilesComFolder.py b/module/plugins/crypter/DepositfilesComFolder.py
index b7c273f0b..3c4a95a38 100644
--- a/module/plugins/crypter/DepositfilesComFolder.py
+++ b/module/plugins/crypter/DepositfilesComFolder.py
@@ -11,7 +11,7 @@ class DepositfilesComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?depositfiles.com/folders/\w+'
 
     __description__ = """Depositfiles.com folder decrypter plugin"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+
 
     LINK_PATTERN = r'<div class="progressName"[^>]*>\s*<a href="([^"]+)" title="[^"]*" target="_blank">'
diff --git a/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py
index 21529ddfd..215fb52fa 100644
--- a/module/plugins/crypter/Dereferer.py
+++ b/module/plugins/crypter/Dereferer.py
@@ -15,8 +15,7 @@ class Dereferer(Crypter):
     __pattern__ = r'https?://([^/]+)/.*?(?P<url>(ht|f)tps?(://|%3A%2F%2F).*)'
 
     __description__ = """Crypter for dereferers"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py
index 049f1dabc..b79d9f264 100644
--- a/module/plugins/crypter/DevhostStFolder.py
+++ b/module/plugins/crypter/DevhostStFolder.py
@@ -18,8 +18,8 @@ class DevhostStFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?d-h\.st/users/(?P<USER>\w+)(/\?fld_id=(?P<ID>\d+))?'
 
     __description__ = """d-h.st folder decrypter plugin"""
-    __author_name_ = ("zapp-brannigan", "Walter Purcaro")
-    __author_mail_ = ("fuerst.reinje@web.de", "vuolter@gmail.com")
+    __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"),
+                   ("Walter Purcaro", "vuolter@gmail.com")]
 
 
     LINK_PATTERN = r'(?:/> |;">)<a href="(.+?)"(?!>Back to \w+<)'
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index 4c958437a..f748b5e62 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -16,8 +16,8 @@ class DlProtectCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?dl-protect\.com/((en|fr)/)?(?P<ID>\w+)'
 
     __description__ = """Dl-protect.com decrypter plugin"""
-    __author_name__ = "Walter Purcaro"
-    __author_mail__ = "vuolter@gmail.com"
+    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+
 
     OFFLINE_PATTERN = r'>Unfortunately, the link you are looking for is not found'
 
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index 23fbb8d52..4f2b70aaf 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -15,8 +15,8 @@ class DontKnowMe(Crypter):
     __pattern__ = r'http://(?:www\.)?dontknow.me/at/\?.+$'
 
     __description__ = """DontKnow.me decrypter plugin"""
-    __author_name__ = "selaux"
-    __author_mail__ = None
+    __authors__ = [("selaux", None)]
+
 
     LINK_PATTERN = r'http://dontknow.me/at/\?(.+)$'
 
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index b278f2248..8c5c344f6 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -15,8 +15,8 @@ class DuckCryptInfo(Crypter):
     __pattern__ = r'http://(?:www\.)?duckcrypt.info/(folder|wait|link)/(\w+)/?(\w*)'
 
     __description__ = """DuckCrypt.info decrypter plugin"""
-    __author_name__ = "godofdream"
-    __author_mail__ = "soilfiction@gmail.com"
+    __authors__ = [("godofdream", "soilfiction@gmail.com")]
+
 
     TIMER_PATTERN = r'<span id="timer">(.*)</span>'
 
diff --git a/module/plugins/crypter/DuploadOrgFolder.py b/module/plugins/crypter/DuploadOrgFolder.py
index 6f764f687..406a7a850 100644
--- a/module/plugins/crypter/DuploadOrgFolder.py
+++ b/module/plugins/crypter/DuploadOrgFolder.py
@@ -11,7 +11,7 @@ class DuploadOrgFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?dupload\.org/folder/\d+/'
 
     __description__ = """Dupload.org folder decrypter plugin"""
-    __author_name__ = "stickell"
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+
 
     LINK_PATTERN = r'<td style="[^"]+"><a href="(http://[^"]+)" target="_blank">[^<]+</a></td>'
diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index 2a261e709..565ee0745 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -11,8 +11,7 @@ class EasybytezComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
 
     __description__ = """Easybytez.com folder decrypter plugin"""
-    __author_name__ = "stickell"
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
     URL_REPLACEMENTS = [(__pattern__, r"http://www.easybytez.com/users/\g<ID>?per_page=10000")]
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 6b876ed7f..f23ae5101 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -15,8 +15,8 @@ class EmbeduploadCom(Crypter):
                   ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
 
     __description__ = """EmbedUpload.com decrypter plugin"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+
 
     LINK_PATTERN = r'<div id="([^"]+)"[^>]*>\s*<a href="([^"]+)" target="_blank" (?:class="DownloadNow"|style="color:red")>'
 
diff --git a/module/plugins/crypter/FilebeerInfoFolder.py b/module/plugins/crypter/FilebeerInfoFolder.py
index 0743dcb0f..9c0599742 100644
--- a/module/plugins/crypter/FilebeerInfoFolder.py
+++ b/module/plugins/crypter/FilebeerInfoFolder.py
@@ -11,5 +11,4 @@ class FilebeerInfoFolder(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?filebeer\.info/(\d+~f).*'
 
     __description__ = """Filebeer.info folder decrypter plugin"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
index eb6aaa847..eccf293d7 100644
--- a/module/plugins/crypter/FilecloudIoFolder.py
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -11,8 +11,8 @@ class FilecloudIoFolder(SimpleCrypter):
     __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+'
 
     __description__ = """Filecloud.io folder decrypter plugin"""
-    __author_name__ = "Walter Purcaro"
-    __author_mail__ = "vuolter@gmail.com"
+    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+
 
     LINK_PATTERN = r'href="(http://filecloud.io/\w+)" title'
     TITLE_PATTERN = r'>(.+?) - filecloud.io<'
diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index 08978c032..a17451941 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -11,8 +11,8 @@ class FilefactoryComFolder(SimpleCrypter):
     __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+'
 
     __description__ = """Filefactory.com folder decrypter plugin"""
-    __author_name__ = "stickell"
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+
 
     LINK_PATTERN = r'<td><a href="([^"]+)">'
     TITLE_PATTERN = r'<h1>Files in <span>(.+)</span></h1>'
diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
index 0195b8af9..b5f59677d 100644
--- a/module/plugins/crypter/FilerNetFolder.py
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -11,8 +11,9 @@ class FilerNetFolder(SimpleCrypter):
     __pattern__ = r'https?://filer\.net/folder/\w{16}'
 
     __description__ = """Filer.net decrypter plugin"""
-    __author_name_ = ("nath_schwarz", "stickell")
-    __author_mail_ = ("nathan.notwhite@gmail.com", "l.stickell@yahoo.it")
+    __authors__ = [("nath_schwarz", "nathan.notwhite@gmail.com"),
+                   ("stickell", "l.stickell@yahoo.it")]
+
 
     LINK_PATTERN = r'href="(/get/\w{16})">(?!<)'
     TITLE_PATTERN = r'<h3>(.+?) - <small'
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index 2db6baf0e..1fac3eeee 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -13,8 +13,8 @@ class FileserveComFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?fileserve.com/list/\w+'
 
     __description__ = """FileServe.com folder decrypter plugin"""
-    __author_name__ = "fionnc"
-    __author_mail__ = "fionnc@gmail.com"
+    __authors__ = [("fionnc", "fionnc@gmail.com")]
+
 
     FOLDER_PATTERN = r'<table class="file_list">(.*?)</table>'
     LINK_PATTERN = r'<a href="([^"]+)" class="sheet_icon wbold">'
diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py
index 3caee9e62..6bd081894 100644
--- a/module/plugins/crypter/FilestubeCom.py
+++ b/module/plugins/crypter/FilestubeCom.py
@@ -11,8 +11,8 @@ class FilestubeCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?filestube\.(?:com|to)/\w+'
 
     __description__ = """Filestube.com decrypter plugin"""
-    __author_name__ = "stickell"
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+
 
     LINK_PATTERN = r'<a class=\"file-link-main(?: noref)?\" [^>]* href=\"(http://[^\"]+)'
     TITLE_PATTERN = r'<h1\s*> (.+)  download\s*</h1>'
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index 6125914ff..5717df47e 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -11,8 +11,9 @@ class FiletramCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?filetram.com/[^/]+/.+'
 
     __description__ = """Filetram.com decrypter plugin"""
-    __author_name__ = ("igel", "stickell")
-    __author_mail__ = ("igelkun@myopera.com", "l.stickell@yahoo.it")
+    __authors__ = [("igel", "igelkun@myopera.com"),
+                   ("stickell", "l.stickell@yahoo.it")]
+
 
     LINK_PATTERN = r'\s+(http://.+)'
     TITLE_PATTERN = r'<title>(.+?) - Free Download'
diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py
index 4831101cc..c41c2f933 100644
--- a/module/plugins/crypter/FiredriveComFolder.py
+++ b/module/plugins/crypter/FiredriveComFolder.py
@@ -13,8 +13,8 @@ class FiredriveComFolder(SimpleCrypter):
     __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/share/.+'
 
     __description__ = """Firedrive.com folder decrypter plugin"""
-    __author_name__ = "Walter Purcaro"
-    __author_mail__ = "vuolter@gmail.com"
+    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+
 
     LINK_PATTERN = r'<div class="pf_item pf_(file|folder).+?public=\'(.+?)\''
     TITLE_PATTERN = r'>Shared Folder "(.+)" | Firedrive<'
diff --git a/module/plugins/crypter/FourChanOrg.py b/module/plugins/crypter/FourChanOrg.py
index c497fa799..8b2c74b44 100644
--- a/module/plugins/crypter/FourChanOrg.py
+++ b/module/plugins/crypter/FourChanOrg.py
@@ -15,8 +15,7 @@ class FourChanOrg(Crypter):
     __pattern__ = r'http://(?:www\.)?boards\.4chan.org/\w+/res/(\d+)'
 
     __description__ = """4chan.org folder decrypter plugin"""
-    __author_name__ = None
-    __author_mail__ = None
+    __authors__ = []
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py
index 5036a8842..34b64bc4a 100644
--- a/module/plugins/crypter/FreakhareComFolder.py
+++ b/module/plugins/crypter/FreakhareComFolder.py
@@ -13,8 +13,8 @@ class FreakhareComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?freakshare\.com/folder/.+'
 
     __description__ = """Freakhare.com folder decrypter plugin"""
-    __author_name__ = "stickell"
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+
 
     LINK_PATTERN = r'<a href="(http://freakshare.com/files/[^"]+)" target="_blank">'
     TITLE_PATTERN = r'Folder:</b> (.+)'
diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py
index bd8a90ce5..c91ee6d10 100644
--- a/module/plugins/crypter/FreetexthostCom.py
+++ b/module/plugins/crypter/FreetexthostCom.py
@@ -13,8 +13,7 @@ class FreetexthostCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?freetexthost\.com/\w+'
 
     __description__ = """Freetexthost.com decrypter plugin"""
-    __author_name__ = "stickell"
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/FshareVnFolder.py b/module/plugins/crypter/FshareVnFolder.py
index 5976ff6d5..1aa8bb3ea 100644
--- a/module/plugins/crypter/FshareVnFolder.py
+++ b/module/plugins/crypter/FshareVnFolder.py
@@ -11,7 +11,7 @@ class FshareVnFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?fshare.vn/folder/.*'
 
     __description__ = """Fshare.vn folder decrypter plugin"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+
 
     LINK_PATTERN = r'<li class="w_80pc"><a href="([^"]+)" target="_blank">'
diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py
index b4f6c3ea7..8b0c2ac91 100644
--- a/module/plugins/crypter/GooGl.py
+++ b/module/plugins/crypter/GooGl.py
@@ -12,8 +12,8 @@ class GooGl(Crypter):
     __pattern__ = r'https?://(?:www\.)?goo\.gl/\w+'
 
     __description__ = """Goo.gl decrypter plugin"""
-    __author_name__ = "stickell"
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+
 
     API_URL = "https://www.googleapis.com/urlshortener/v1/url"
 
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index a283ff823..6774cd72e 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -15,8 +15,9 @@ class HoerbuchIn(Crypter):
     __pattern__ = r'http://(?:www\.)?hoerbuch\.in/(wp/horbucher/\d+/.+/|tp/out.php\?.+|protection/folder_\d+\.html)'
 
     __description__ = """Hoerbuch.in decrypter plugin"""
-    __author_name__ = ("spoob", "mkaay")
-    __author_mail__ = ("spoob@pyload.org", "mkaay@mkaay.de")
+    __authors__ = [("spoob", "spoob@pyload.org"),
+                   ("mkaay", "mkaay@mkaay.de")]
+
 
     article = re.compile("http://(?:www\.)?hoerbuch\.in/wp/horbucher/\d+/.+/")
     protection = re.compile("http://(?:www\.)?hoerbuch\.in/protection/folder_\d+.html")
diff --git a/module/plugins/crypter/HotfileFolderCom.py b/module/plugins/crypter/HotfileFolderCom.py
index 16fa604c9..e97d2ca91 100644
--- a/module/plugins/crypter/HotfileFolderCom.py
+++ b/module/plugins/crypter/HotfileFolderCom.py
@@ -11,5 +11,4 @@ class HotfileFolderCom(DeadCrypter):
     __pattern__ = r'https?://(?:www\.)?hotfile\.com/list/\w+/\w+'
 
     __description__ = """Hotfile.com folder decrypter plugin"""
-    __author_name__ = "RaNaN"
-    __author_mail__ = "RaNaN@pyload.org"
+    __authors__ = [("RaNaN", "RaNaN@pyload.org")]
diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py
index d7818570a..c1dbab836 100644
--- a/module/plugins/crypter/ILoadTo.py
+++ b/module/plugins/crypter/ILoadTo.py
@@ -11,5 +11,4 @@ class ILoadTo(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?iload\.to/go/\d+-[\w\.-]+/'
 
     __description__ = """Iload.to decrypter plugin"""
-    __author_name__ = "hzpz"
-    __author_mail__ = None
+    __authors__ = [("hzpz", None)]
diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index 72674a8fb..d4e6b13ab 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -12,8 +12,8 @@ class ImgurComAlbum(SimpleCrypter):
     __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}'
 
     __description__ = """Imgur.com decrypter plugin"""
-    __author_name_ = "nath_schwarz"
-    __author_mail_ = "nathan.notwhite@gmail.com"
+    __authors__ = [("nath_schwarz", "nathan.notwhite@gmail.com")]
+
 
     TITLE_PATTERN = r'(.+?) - Imgur'
     LINK_PATTERN = r'i\.imgur\.com/\w{7}s?\.(?:jpeg|jpg|png|gif|apng)'
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index 0297d2007..3ca24195d 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -12,8 +12,9 @@ class LetitbitNetFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?letitbit.net/folder/\w+'
 
     __description__ = """Letitbit.net folder decrypter plugin"""
-    __author_name__ = ("DHMH", "z00nx")
-    __author_mail__ = ("webmaster@pcProfil.de", "z00nx0@gmail.com")
+    __authors__ = [("DHMH", "webmaster@pcProfil.de"),
+                   ("z00nx", "z00nx0@gmail.com")]
+
 
     FOLDER_PATTERN = r'<table>(.*)</table>'
     LINK_PATTERN = r'<a href="([^"]+)" target="_blank">'
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 8b2b02ea6..9c0bbdeac 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -21,8 +21,7 @@ class LinkSaveIn(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?linksave.in/(?P<id>\w+)$'
 
     __description__ = """LinkSave.in decrypter plugin"""
-    __author_name__ = "fragonib"
-    __author_mail__ = "fragonib[AT]yahoo[DOT]es"
+    __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
 
     COOKIES = [(".linksave.in", "Linksave_Language", "english")]
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index f9f29d5f5..cc688cd8e 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -12,8 +12,9 @@ class LinkdecrypterCom(Crypter):
     __pattern__ = None
 
     __description__ = """Linkdecrypter.com"""
-    __author_name__ = ("zoidberg", "flowlee")
-    __author_mail__ = ("zoidberg@mujmail.cz", "")
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz"),
+                   ("flowlee", None)]
+
 
     TEXTAREA_PATTERN = r'<textarea name="links" wrap="off" readonly="1" class="caja_des">(.+)</textarea>'
     PASSWORD_PATTERN = r'<input type="text" name="password"'
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index 7aedda686..af4f182b4 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -13,8 +13,8 @@ class LixIn(Crypter):
     __pattern__ = r'http://(?:www\.)?lix\.in/(?P<ID>.+)'
 
     __description__ = """Lix.in decrypter plugin"""
-    __author_name__ = "spoob"
-    __author_mail__ = "spoob@pyload.org"
+    __authors__ = [("spoob", "spoob@pyload.org")]
+
 
     CAPTCHA_PATTERN = r'<img src="(?P<image>captcha_img.php\?.*?)"'
     SUBMIT_PATTERN = r"value='continue.*?'"
diff --git a/module/plugins/crypter/LofCc.py b/module/plugins/crypter/LofCc.py
index 8a5cd86ee..5fc04000f 100644
--- a/module/plugins/crypter/LofCc.py
+++ b/module/plugins/crypter/LofCc.py
@@ -11,5 +11,4 @@ class LofCc(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?lof.cc/(.*)'
 
     __description__ = """Lof.cc decrypter plugin"""
-    __author_name__ = "mkaay"
-    __author_mail__ = "mkaay@mkaay.de"
+    __authors__ = [("mkaay", "mkaay@mkaay.de")]
diff --git a/module/plugins/crypter/MBLinkInfo.py b/module/plugins/crypter/MBLinkInfo.py
index 4fc066e57..edd846cf9 100644
--- a/module/plugins/crypter/MBLinkInfo.py
+++ b/module/plugins/crypter/MBLinkInfo.py
@@ -11,5 +11,5 @@ class MBLinkInfo(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?mblink\.info/?\?id=(\d+)'
 
     __description__ = """MBLink.info decrypter plugin"""
-    __author_name__ = ("Gummibaer", "stickell")
-    __author_mail__ = ("Gummibaer@wiki-bierkiste.de", "l.stickell@yahoo.it")
+    __authors__ = [("Gummibaer", "Gummibaer@wiki-bierkiste.de"),
+                   ("stickell", "l.stickell@yahoo.it")]
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index 45078c4ba..2a4de5272 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -14,8 +14,8 @@ class MediafireComFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?mediafire\.com/(folder/|\?sharekey=|\?\w{13}($|[/#]))'
 
     __description__ = """Mediafire.com folder decrypter plugin"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+
 
     FOLDER_KEY_PATTERN = r"var afI= '(\w+)';"
     FILE_URL_PATTERN = r'<meta property="og:url" content="http://www.mediafire.com/\?(\w+)"/>'
diff --git a/module/plugins/crypter/Movie2kTo.py b/module/plugins/crypter/Movie2kTo.py
index ba201621f..3a1701923 100644
--- a/module/plugins/crypter/Movie2kTo.py
+++ b/module/plugins/crypter/Movie2kTo.py
@@ -11,5 +11,4 @@ class Movie2kTo(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?movie2k\.to/(.*)\.html'
 
     __description__ = """Movie2k.to decrypter plugin"""
-    __author_name__ = "4Christopher"
-    __author_mail__ = "4Christopher@gmx.de"
+    __authors__ = [("4Christopher", "4Christopher@gmx.de")]
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index cd0ec33ad..0cb3048aa 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -14,8 +14,8 @@ class MultiUpOrg(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?multiup\.org/(en|fr)/(?P<TYPE>project|download|miror)/\w+(/\w+)?'
 
     __description__ = """MultiUp.org crypter plugin"""
-    __author_name__ = "Walter Purcaro"
-    __author_mail__ = "vuolter@gmail.com"
+    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+
 
     TITLE_PATTERN = r'<title>.*(?:Project|Projet|ownload|élécharger) (.+?) (?:\(|- )'
 
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index 7d43ec729..8f43e5796 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -14,8 +14,8 @@ class MultiloadCz(Crypter):
                   ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
 
     __description__ = """Multiload.cz decrypter plugin"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+
 
     FOLDER_PATTERN = r'<form action="" method="get"><textarea[^>]*>([^>]*)</textarea></form>'
     LINK_PATTERN = r'<p class="manager-server"><strong>([^<]+)</strong></p><p class="manager-linky"><a href="([^"]+)">'
diff --git a/module/plugins/crypter/MultiuploadCom.py b/module/plugins/crypter/MultiuploadCom.py
index 398d33b5d..653c9a169 100644
--- a/module/plugins/crypter/MultiuploadCom.py
+++ b/module/plugins/crypter/MultiuploadCom.py
@@ -11,5 +11,4 @@ class MultiuploadCom(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?multiupload\.(com|nl)/\w+'
 
     __description__ = """ MultiUpload.com decrypter plugin """
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 3937299d0..1a6757006 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -18,8 +18,9 @@ class NCryptIn(Crypter):
     __pattern__ = r'http://(?:www\.)?ncrypt.in/(?P<type>folder|link|frame)-([^/\?]+)'
 
     __description__ = """NCrypt.in decrypter plugin"""
-    __author_name__ = ("fragonib", "stickell")
-    __author_mail__ = ("fragonib[AT]yahoo[DOT]es", "l.stickell@yahoo.it")
+    __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es"),
+                   ("stickell", "l.stickell@yahoo.it")]
+
 
     JK_KEY = "jk"
     CRYPTED_KEY = "crypted"
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 7baffb25e..1e60fa583 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -13,8 +13,9 @@ class NetfolderIn(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?netfolder.in/((?P<id1>\w+)/\w+|folder.php\?folder_id=(?P<id2>\w+))'
 
     __description__ = """NetFolder.in decrypter plugin"""
-    __author_name__ = ("RaNaN", "fragonib")
-    __author_mail__ = ("RaNaN@pyload.org", "fragonib[AT]yahoo[DOT]es")
+    __authors__ = [("RaNaN", "RaNaN@pyload.org"),
+                   ("fragonib", "fragonib[AT]yahoo[DOT]es")]
+
 
     TITLE_PATTERN = r'<div class="Text">Inhalt des Ordners <span.*>(.+)</span></div>'
 
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index ce8e2b372..fd065d571 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -11,8 +11,8 @@ class NosvideoCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?nosvideo\.com/\?v=\w+'
 
     __description__ = """Nosvideo.com decrypter plugin"""
-    __author_name__ = "igel"
-    __author_mail__ = "igelkun@myopera.com"
+    __authors__ = [("igel", "igelkun@myopera.com")]
+
 
     LINK_PATTERN = r'href="(http://(?:w{3}\.)?nosupload.com/\?d=\w+)"'
     TITLE_PATTERN = r'<[tT]itle>Watch (.+?)<'
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index 4b22432f8..2e6daf25d 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -14,8 +14,7 @@ class OneKhDe(Crypter):
     __pattern__ = r'http://(?:www\.)?1kh.de/f/'
 
     __description__ = """1kh.de decrypter plugin"""
-    __author_name__ = "spoob"
-    __author_mail__ = "spoob@pyload.org"
+    __authors__ = [("spoob", "spoob@pyload.org")]
 
 
     def __init__(self, parent):
diff --git a/module/plugins/crypter/OronComFolder.py b/module/plugins/crypter/OronComFolder.py
index f0b2f943c..b651c0041 100755
--- a/module/plugins/crypter/OronComFolder.py
+++ b/module/plugins/crypter/OronComFolder.py
@@ -11,5 +11,4 @@ class OronComFolder(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?oron.com/folder/\w+'
 
     __description__ = """Oron.com folder decrypter plugin"""
-    __author_name__ = "DHMH"
-    __author_mail__ = "webmaster@pcProfil.de"
+    __authors__ = [("DHMH", "webmaster@pcProfil.de")]
diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py
index 9c114a56b..285110138 100644
--- a/module/plugins/crypter/PastebinCom.py
+++ b/module/plugins/crypter/PastebinCom.py
@@ -11,8 +11,8 @@ class PastebinCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?pastebin\.com/\w+'
 
     __description__ = """Pastebin.com decrypter plugin"""
-    __author_name__ = "stickell"
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+
 
     LINK_PATTERN = r'<div class="de\d+">(https?://[^ <]+)(?:[^<]*)</div>'
     TITLE_PATTERN = r'<div class="paste_box_line1" title="([^"]+)">'
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index 9840b84df..a74772641 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -12,8 +12,8 @@ class QuickshareCzFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?quickshare.cz/slozka-\d+.*'
 
     __description__ = """Quickshare.cz folder decrypter plugin"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+
 
     FOLDER_PATTERN = r'<textarea[^>]*>(.*?)</textarea>'
     LINK_PATTERN = r'(http://www.quickshare.cz/\S+)'
diff --git a/module/plugins/crypter/RSLayerCom.py b/module/plugins/crypter/RSLayerCom.py
index 7dda0beab..0013b7b6d 100644
--- a/module/plugins/crypter/RSLayerCom.py
+++ b/module/plugins/crypter/RSLayerCom.py
@@ -11,5 +11,4 @@ class RSLayerCom(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?rs-layer.com/directory-'
 
     __description__ = """RS-Layer.com decrypter plugin"""
-    __author_name__ = "hzpz"
-    __author_mail__ = None
+    __authors__ = [("hzpz", None)]
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 1c1afea25..4d0132ac4 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -17,8 +17,8 @@ class RelinkUs(Crypter):
     __pattern__ = r'http://(?:www\.)?relink.us/(f/|((view|go).php\?id=))(?P<id>.+)'
 
     __description__ = """Relink.us decrypter plugin"""
-    __author_name__ = "fragonib"
-    __author_mail__ = "fragonib[AT]yahoo[DOT]es"
+    __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
+
 
     # Constants
     PREFERRED_LINK_SOURCES = ["cnl2", "dlc", "web"]
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index d548bdf89..ca21fe907 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -19,8 +19,8 @@ class SafelinkingNet(Crypter):
     __pattern__ = r'https?://(?:www\.)?safelinking.net/([pd])/\w+'
 
     __description__ = """Safelinking.net decrypter plugin"""
-    __author_name__ = "quareevo"
-    __author_mail__ = "quareevo@arcor.de"
+    __authors__ = [("quareevo", "quareevo@arcor.de")]
+
 
     SOLVEMEDIA_PATTERN = "solvemediaApiKey = '([\w\.\-_]+)';"
 
diff --git a/module/plugins/crypter/SecuredIn.py b/module/plugins/crypter/SecuredIn.py
index 0b558c688..f94fae700 100644
--- a/module/plugins/crypter/SecuredIn.py
+++ b/module/plugins/crypter/SecuredIn.py
@@ -11,5 +11,4 @@ class SecuredIn(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?secured\.in/download-[\d]+-[\w]{8}\.html'
 
     __description__ = """Secured.in decrypter plugin"""
-    __author_name__ = "mkaay"
-    __author_mail__ = "mkaay@mkaay.de"
+    __authors__ = [("mkaay", "mkaay@mkaay.de")]
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index fa9739711..e8615d8bc 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -16,8 +16,7 @@ class ShareLinksBiz(Crypter):
     __pattern__ = r'http://(?:www\.)?(share-links|s2l)\.biz/(?P<ID>_?\w+)'
 
     __description__ = """Share-Links.biz decrypter plugin"""
-    __author_name__ = "fragonib"
-    __author_mail__ = "fragonib[AT]yahoo[DOT]es"
+    __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
 
     def setup(self):
diff --git a/module/plugins/crypter/ShareRapidComFolder.py b/module/plugins/crypter/ShareRapidComFolder.py
index fd12ff96f..43814bccb 100644
--- a/module/plugins/crypter/ShareRapidComFolder.py
+++ b/module/plugins/crypter/ShareRapidComFolder.py
@@ -11,7 +11,7 @@ class ShareRapidComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?((share(-?rapid\.(biz|com|cz|info|eu|net|org|pl|sk)|-(central|credit|free|net)\.cz|-ms\.net)|(s-?rapid|rapids)\.(cz|sk))|(e-stahuj|mediatack|premium-rapidshare|rapidshare-premium|qiuck)\.cz|kadzet\.com|stahuj-zdarma\.eu|strelci\.net|universal-share\.com)/(slozka/.+)'
 
     __description__ = """Share-Rapid.com folder decrypter plugin"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+
 
     LINK_PATTERN = r'<td class="soubor"[^>]*><a href="([^"]+)">'
diff --git a/module/plugins/crypter/SpeedLoadOrgFolder.py b/module/plugins/crypter/SpeedLoadOrgFolder.py
index 092d3efe4..79b79308d 100644
--- a/module/plugins/crypter/SpeedLoadOrgFolder.py
+++ b/module/plugins/crypter/SpeedLoadOrgFolder.py
@@ -11,5 +11,4 @@ class SpeedLoadOrgFolder(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?speedload\.org/(\d+~f$|folder/\d+/)'
 
     __description__ = """Speedload decrypter plugin"""
-    __author_name__ = "stickell"
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("stickell", "l.stickell@yahoo.it")]
diff --git a/module/plugins/crypter/StealthTo.py b/module/plugins/crypter/StealthTo.py
index 402724e89..a2f7b04af 100644
--- a/module/plugins/crypter/StealthTo.py
+++ b/module/plugins/crypter/StealthTo.py
@@ -11,5 +11,4 @@ class StealthTo(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?stealth\.to/folder/.+'
 
     __description__ = """Stealth.to decrypter plugin"""
-    __author_name__ = "spoob"
-    __author_mail__ = "spoob@pyload.org"
+    __authors__ = [("spoob", "spoob@pyload.org")]
diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py
index e0b92ae22..1e406072d 100644
--- a/module/plugins/crypter/TnyCz.py
+++ b/module/plugins/crypter/TnyCz.py
@@ -13,8 +13,8 @@ class TnyCz(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?tny\.cz/\w+'
 
     __description__ = """Tny.cz decrypter plugin"""
-    __author_name__ = "Walter Purcaro"
-    __author_mail__ = "vuolter@gmail.com"
+    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+
 
     TITLE_PATTERN = r'<title>(.+) - .+</title>'
 
diff --git a/module/plugins/crypter/TrailerzoneInfo.py b/module/plugins/crypter/TrailerzoneInfo.py
index 42e45a819..4ed08a634 100644
--- a/module/plugins/crypter/TrailerzoneInfo.py
+++ b/module/plugins/crypter/TrailerzoneInfo.py
@@ -11,5 +11,4 @@ class TrailerzoneInfo(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?trailerzone.info/.*?'
 
     __description__ = """TrailerZone.info decrypter plugin"""
-    __author_name__ = "godofdream"
-    __author_mail__ = "soilfiction@gmail.com"
+    __authors__ = [("godofdream", "soilfiction@gmail.com")]
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index ec0fd157d..d0b42ab2a 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -14,8 +14,9 @@ class TurbobitNetFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?turbobit\.net/download/folder/(?P<ID>\w+)'
 
     __description__ = """Turbobit.net folder decrypter plugin"""
-    __author_name__ = ("stickell", "Walter Purcaro")
-    __author_mail__ = ("l.stickell@yahoo.it", "vuolter@gmail.com")
+    __authors__ = [("stickell", "l.stickell@yahoo.it"),
+                   ("Walter Purcaro", "vuolter@gmail.com")]
+
 
     TITLE_PATTERN = r"src='/js/lib/grid/icon/folder.png'> <span>(.+?)</span>"
 
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index 7ce636d2d..a295189fd 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -15,8 +15,9 @@ class TusfilesNetFolder(SimpleCrypter):
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)/?'
 
     __description__ = """Tusfiles.net folder decrypter plugin"""
-    __author_name__ = ("Walter Purcaro", "stickell")
-    __author_mail__ = ("vuolter@gmail.com", "l.stickell@yahoo.it")
+    __authors__ = [("Walter Purcaro", "vuolter@gmail.com"),
+                   ("stickell", "l.stickell@yahoo.it")]
+
 
     LINK_PATTERN = r'<TD align=left><a href="(.*?)">'
     TITLE_PATTERN = r'<Title>.*?\: (.+) folder</Title>'
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index 06d30099c..0977addcd 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -12,8 +12,8 @@ class UlozToFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj.cz|zachowajto.pl)/(m|soubory)/.*'
 
     __description__ = """Uloz.to folder decrypter plugin"""
-    __author_name__ = "zoidberg"
-    __author_mail__ = "zoidberg@mujmail.cz"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+
 
     FOLDER_PATTERN = r'<ul class="profile_files">(.*?)</ul>'
     LINK_PATTERN = r'<br /><a href="/([^"]+)">[^<]+</a>'
diff --git a/module/plugins/crypter/UploadableChFolder.py b/module/plugins/crypter/UploadableChFolder.py
index 867a699c2..0d672acf5 100644
--- a/module/plugins/crypter/UploadableChFolder.py
+++ b/module/plugins/crypter/UploadableChFolder.py
@@ -11,8 +11,8 @@ class UploadableChFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?uploadable\.ch/list/\w+'
 
     __description__ = """ Uploadable.ch folder decrypter plugin """
-    __author_name__ = ("guidobelix", "Walter Purcaro")
-    __author_mail__ = ("guidobelix@hotmail.it", "vuolter@gmail.com")
+    __authors__ = [("guidobelix", "guidobelix@hotmail.it"),
+                   ("Walter Purcaro", "vuolter@gmail.com")]
 
 
     LINK_PATTERN = r'"(.+?)" class="icon_zipfile">'
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index d33dc91a0..b58162dd3 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -13,8 +13,8 @@ class UploadedToFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P<id>\w+)'
 
     __description__ = """UploadedTo decrypter plugin"""
-    __author_name__ = "stickell"
-    __author_mail__ = "l.stickell@yahoo.it"
+    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+
 
     PLAIN_PATTERN = r'<small class="date"><a href="(?P<plain>[\w/]+)" onclick='
     TITLE_PATTERN = r'<title>(.+?)<'
diff --git a/module/plugins/crypter/WiiReloadedOrg.py b/module/plugins/crypter/WiiReloadedOrg.py
index cb02fbd2d..12863cf75 100644
--- a/module/plugins/crypter/WiiReloadedOrg.py
+++ b/module/plugins/crypter/WiiReloadedOrg.py
@@ -11,5 +11,4 @@ class WiiReloadedOrg(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?wii-reloaded\.org/protect/get\.php\?i=.+'
 
     __description__ = """Wii-Reloaded.org decrypter plugin"""
-    __author_name__ = "hzpz"
-    __author_mail__ = None
+    __authors__ = [("hzpz", None)]
diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py
index 5e5f511a8..e24c242e4 100644
--- a/module/plugins/crypter/XupPl.py
+++ b/module/plugins/crypter/XupPl.py
@@ -11,8 +11,7 @@ class XupPl(Crypter):
     __pattern__ = r'https?://(?:[^/]*\.)?xup\.pl/.*'
 
     __description__ = """Xup.pl decrypter plugin"""
-    __author_name__ = "z00nx"
-    __author_mail__ = "z00nx0@gmail.com"
+    __authors__ = [("z00nx", "z00nx0@gmail.com")]
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index 1caca16bd..b33554673 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -22,8 +22,7 @@ class YoutubeBatch(Crypter):
                   ("uploads", "bool", "Grab channel unplaylisted videos", True)]
 
     __description__ = """Youtube.com channel & playlist decrypter plugin"""
-    __author_name__ = "Walter Purcaro"
-    __author_mail__ = "vuolter@gmail.com"
+    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
     def api_response(self, ref, req):
-- 
cgit v1.2.3


From ae7a7e66981456e5bbe2b54006d79b6f907be7a4 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Wed, 8 Oct 2014 20:18:13 +0200
Subject: Add __license__ key attribute to plugins

---
 module/plugins/crypter/BitshareComFolder.py     | 1 +
 module/plugins/crypter/C1neonCom.py             | 1 +
 module/plugins/crypter/ChipDe.py                | 1 +
 module/plugins/crypter/CrockoComFolder.py       | 1 +
 module/plugins/crypter/CryptItCom.py            | 1 +
 module/plugins/crypter/CzshareComFolder.py      | 1 +
 module/plugins/crypter/DDLMusicOrg.py           | 1 +
 module/plugins/crypter/DailymotionBatch.py      | 1 +
 module/plugins/crypter/DataHuFolder.py          | 1 +
 module/plugins/crypter/DdlstorageComFolder.py   | 1 +
 module/plugins/crypter/DepositfilesComFolder.py | 1 +
 module/plugins/crypter/Dereferer.py             | 1 +
 module/plugins/crypter/DevhostStFolder.py       | 1 +
 module/plugins/crypter/DlProtectCom.py          | 1 +
 module/plugins/crypter/DontKnowMe.py            | 1 +
 module/plugins/crypter/DuckCryptInfo.py         | 1 +
 module/plugins/crypter/DuploadOrgFolder.py      | 1 +
 module/plugins/crypter/EasybytezComFolder.py    | 1 +
 module/plugins/crypter/EmbeduploadCom.py        | 1 +
 module/plugins/crypter/FilebeerInfoFolder.py    | 1 +
 module/plugins/crypter/FilecloudIoFolder.py     | 1 +
 module/plugins/crypter/FilefactoryComFolder.py  | 1 +
 module/plugins/crypter/FilerNetFolder.py        | 1 +
 module/plugins/crypter/FileserveComFolder.py    | 1 +
 module/plugins/crypter/FilestubeCom.py          | 1 +
 module/plugins/crypter/FiletramCom.py           | 1 +
 module/plugins/crypter/FiredriveComFolder.py    | 1 +
 module/plugins/crypter/FourChanOrg.py           | 1 +
 module/plugins/crypter/FreakhareComFolder.py    | 1 +
 module/plugins/crypter/FreetexthostCom.py       | 1 +
 module/plugins/crypter/FshareVnFolder.py        | 1 +
 module/plugins/crypter/GooGl.py                 | 1 +
 module/plugins/crypter/HoerbuchIn.py            | 1 +
 module/plugins/crypter/HotfileFolderCom.py      | 1 +
 module/plugins/crypter/ILoadTo.py               | 1 +
 module/plugins/crypter/ImgurComAlbum.py         | 1 +
 module/plugins/crypter/LetitbitNetFolder.py     | 1 +
 module/plugins/crypter/LinkSaveIn.py            | 1 +
 module/plugins/crypter/LinkdecrypterCom.py      | 1 +
 module/plugins/crypter/LixIn.py                 | 1 +
 module/plugins/crypter/LofCc.py                 | 1 +
 module/plugins/crypter/MBLinkInfo.py            | 1 +
 module/plugins/crypter/MediafireComFolder.py    | 1 +
 module/plugins/crypter/Movie2kTo.py             | 1 +
 module/plugins/crypter/MultiUpOrg.py            | 1 +
 module/plugins/crypter/MultiloadCz.py           | 1 +
 module/plugins/crypter/MultiuploadCom.py        | 1 +
 module/plugins/crypter/NCryptIn.py              | 1 +
 module/plugins/crypter/NetfolderIn.py           | 1 +
 module/plugins/crypter/NosvideoCom.py           | 1 +
 module/plugins/crypter/OneKhDe.py               | 1 +
 module/plugins/crypter/OronComFolder.py         | 1 +
 module/plugins/crypter/PastebinCom.py           | 1 +
 module/plugins/crypter/QuickshareCzFolder.py    | 1 +
 module/plugins/crypter/RSLayerCom.py            | 1 +
 module/plugins/crypter/RelinkUs.py              | 1 +
 module/plugins/crypter/SafelinkingNet.py        | 1 +
 module/plugins/crypter/SecuredIn.py             | 1 +
 module/plugins/crypter/ShareLinksBiz.py         | 1 +
 module/plugins/crypter/ShareRapidComFolder.py   | 1 +
 module/plugins/crypter/SpeedLoadOrgFolder.py    | 1 +
 module/plugins/crypter/StealthTo.py             | 1 +
 module/plugins/crypter/TnyCz.py                 | 1 +
 module/plugins/crypter/TrailerzoneInfo.py       | 1 +
 module/plugins/crypter/TurbobitNetFolder.py     | 1 +
 module/plugins/crypter/TusfilesNetFolder.py     | 1 +
 module/plugins/crypter/UlozToFolder.py          | 1 +
 module/plugins/crypter/UploadableChFolder.py    | 1 +
 module/plugins/crypter/UploadedToFolder.py      | 1 +
 module/plugins/crypter/WiiReloadedOrg.py        | 1 +
 module/plugins/crypter/XupPl.py                 | 1 +
 module/plugins/crypter/YoutubeBatch.py          | 1 +
 72 files changed, 72 insertions(+)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py
index 59226b7bb..40458b3ff 100644
--- a/module/plugins/crypter/BitshareComFolder.py
+++ b/module/plugins/crypter/BitshareComFolder.py
@@ -11,6 +11,7 @@ class BitshareComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?bitshare\.com/\?d=\w+'
 
     __description__ = """Bitshare.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
diff --git a/module/plugins/crypter/C1neonCom.py b/module/plugins/crypter/C1neonCom.py
index 40692d0d1..a314f2ad1 100644
--- a/module/plugins/crypter/C1neonCom.py
+++ b/module/plugins/crypter/C1neonCom.py
@@ -11,4 +11,5 @@ class C1neonCom(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?c1neon.com/.*?'
 
     __description__ = """C1neon.com decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("godofdream", "soilfiction@gmail.com")]
diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index 9aac1efa4..7752ee3bb 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -12,6 +12,7 @@ class ChipDe(Crypter):
     __pattern__ = r'http://(?:www\.)?chip.de/video/.*\.html'
 
     __description__ = """Chip.de decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("4Christopher", "4Christopher@gmx.de")]
 
 
diff --git a/module/plugins/crypter/CrockoComFolder.py b/module/plugins/crypter/CrockoComFolder.py
index dae536dd0..e921fc1fa 100644
--- a/module/plugins/crypter/CrockoComFolder.py
+++ b/module/plugins/crypter/CrockoComFolder.py
@@ -11,6 +11,7 @@ class CrockoComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?crocko.com/f/.*'
 
     __description__ = """Crocko.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
diff --git a/module/plugins/crypter/CryptItCom.py b/module/plugins/crypter/CryptItCom.py
index a248a92d1..58f0d77b6 100644
--- a/module/plugins/crypter/CryptItCom.py
+++ b/module/plugins/crypter/CryptItCom.py
@@ -11,4 +11,5 @@ class CryptItCom(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?crypt-it\.com/(s|e|d|c)/[\w]+'
 
     __description__ = """Crypt-it.com decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("jeix", "jeix@hasnomail.de")]
diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index 3762cbf10..9a3881617 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -12,6 +12,7 @@ class CzshareComFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/folders/.*'
 
     __description__ = """Czshare.com folder decrypter plugin, now Sdilej.cz"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py
index c0b137992..c224ee732 100644
--- a/module/plugins/crypter/DDLMusicOrg.py
+++ b/module/plugins/crypter/DDLMusicOrg.py
@@ -15,6 +15,7 @@ class DDLMusicOrg(Crypter):
     __pattern__ = r'http://(?:www\.)?ddl-music\.org/captcha/ddlm_cr\d\.php\?\d+\?\d+'
 
     __description__ = """Ddl-music.org decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("mkaay", "mkaay@mkaay.de")]
 
 
diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py
index cc97910af..a0ed0e80f 100644
--- a/module/plugins/crypter/DailymotionBatch.py
+++ b/module/plugins/crypter/DailymotionBatch.py
@@ -17,6 +17,7 @@ class DailymotionBatch(Crypter):
     __pattern__ = r'https?://(?:www\.)?dailymotion\.com/((playlists/)?(?P<TYPE>playlist|user)/)?(?P<ID>[\w^_]+)(?(TYPE)|#)'
 
     __description__ = """Dailymotion.com channel & playlist decrypter"""
+    __license__ = "GPLv3"
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 405945f58..a80be34d2 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -13,6 +13,7 @@ class DataHuFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?data.hu/dir/\w+'
 
     __description__ = """Data.hu folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("crash", None),
                    ("stickell", "l.stickell@yahoo.it")]
 
diff --git a/module/plugins/crypter/DdlstorageComFolder.py b/module/plugins/crypter/DdlstorageComFolder.py
index 87719cb26..e3fd88084 100644
--- a/module/plugins/crypter/DdlstorageComFolder.py
+++ b/module/plugins/crypter/DdlstorageComFolder.py
@@ -11,6 +11,7 @@ class DdlstorageComFolder(DeadCrypter):
     __pattern__ = r'https?://(?:www\.)?ddlstorage\.com/folder/\w+'
 
     __description__ = """DDLStorage.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("godofdream", "soilfiction@gmail.com"),
                    ("stickell", "l.stickell@yahoo.it")]
 
diff --git a/module/plugins/crypter/DepositfilesComFolder.py b/module/plugins/crypter/DepositfilesComFolder.py
index 3c4a95a38..7e32457ac 100644
--- a/module/plugins/crypter/DepositfilesComFolder.py
+++ b/module/plugins/crypter/DepositfilesComFolder.py
@@ -11,6 +11,7 @@ class DepositfilesComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?depositfiles.com/folders/\w+'
 
     __description__ = """Depositfiles.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
diff --git a/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py
index 215fb52fa..b6e269000 100644
--- a/module/plugins/crypter/Dereferer.py
+++ b/module/plugins/crypter/Dereferer.py
@@ -15,6 +15,7 @@ class Dereferer(Crypter):
     __pattern__ = r'https?://([^/]+)/.*?(?P<url>(ht|f)tps?(://|%3A%2F%2F).*)'
 
     __description__ = """Crypter for dereferers"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py
index b79d9f264..1839257e0 100644
--- a/module/plugins/crypter/DevhostStFolder.py
+++ b/module/plugins/crypter/DevhostStFolder.py
@@ -18,6 +18,7 @@ class DevhostStFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?d-h\.st/users/(?P<USER>\w+)(/\?fld_id=(?P<ID>\d+))?'
 
     __description__ = """d-h.st folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"),
                    ("Walter Purcaro", "vuolter@gmail.com")]
 
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index f748b5e62..e31c62185 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -16,6 +16,7 @@ class DlProtectCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?dl-protect\.com/((en|fr)/)?(?P<ID>\w+)'
 
     __description__ = """Dl-protect.com decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index 4f2b70aaf..961f0c6e0 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -15,6 +15,7 @@ class DontKnowMe(Crypter):
     __pattern__ = r'http://(?:www\.)?dontknow.me/at/\?.+$'
 
     __description__ = """DontKnow.me decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("selaux", None)]
 
 
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 8c5c344f6..5815b624c 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -15,6 +15,7 @@ class DuckCryptInfo(Crypter):
     __pattern__ = r'http://(?:www\.)?duckcrypt.info/(folder|wait|link)/(\w+)/?(\w*)'
 
     __description__ = """DuckCrypt.info decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("godofdream", "soilfiction@gmail.com")]
 
 
diff --git a/module/plugins/crypter/DuploadOrgFolder.py b/module/plugins/crypter/DuploadOrgFolder.py
index 406a7a850..d7d009b56 100644
--- a/module/plugins/crypter/DuploadOrgFolder.py
+++ b/module/plugins/crypter/DuploadOrgFolder.py
@@ -11,6 +11,7 @@ class DuploadOrgFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?dupload\.org/folder/\d+/'
 
     __description__ = """Dupload.org folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index 565ee0745..0b73a10ae 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -11,6 +11,7 @@ class EasybytezComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
 
     __description__ = """Easybytez.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index f23ae5101..8f1d60ee3 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -15,6 +15,7 @@ class EmbeduploadCom(Crypter):
                   ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
 
     __description__ = """EmbedUpload.com decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
diff --git a/module/plugins/crypter/FilebeerInfoFolder.py b/module/plugins/crypter/FilebeerInfoFolder.py
index 9c0599742..833616747 100644
--- a/module/plugins/crypter/FilebeerInfoFolder.py
+++ b/module/plugins/crypter/FilebeerInfoFolder.py
@@ -11,4 +11,5 @@ class FilebeerInfoFolder(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?filebeer\.info/(\d+~f).*'
 
     __description__ = """Filebeer.info folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
index eccf293d7..d6a1929a3 100644
--- a/module/plugins/crypter/FilecloudIoFolder.py
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -11,6 +11,7 @@ class FilecloudIoFolder(SimpleCrypter):
     __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+'
 
     __description__ = """Filecloud.io folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index a17451941..438ed533b 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -11,6 +11,7 @@ class FilefactoryComFolder(SimpleCrypter):
     __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+'
 
     __description__ = """Filefactory.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
index b5f59677d..fc9623d40 100644
--- a/module/plugins/crypter/FilerNetFolder.py
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -11,6 +11,7 @@ class FilerNetFolder(SimpleCrypter):
     __pattern__ = r'https?://filer\.net/folder/\w{16}'
 
     __description__ = """Filer.net decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("nath_schwarz", "nathan.notwhite@gmail.com"),
                    ("stickell", "l.stickell@yahoo.it")]
 
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index 1fac3eeee..63de97fec 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -13,6 +13,7 @@ class FileserveComFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?fileserve.com/list/\w+'
 
     __description__ = """FileServe.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("fionnc", "fionnc@gmail.com")]
 
 
diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py
index 6bd081894..097655316 100644
--- a/module/plugins/crypter/FilestubeCom.py
+++ b/module/plugins/crypter/FilestubeCom.py
@@ -11,6 +11,7 @@ class FilestubeCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?filestube\.(?:com|to)/\w+'
 
     __description__ = """Filestube.com decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index 5717df47e..e99419039 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -11,6 +11,7 @@ class FiletramCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?filetram.com/[^/]+/.+'
 
     __description__ = """Filetram.com decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("igel", "igelkun@myopera.com"),
                    ("stickell", "l.stickell@yahoo.it")]
 
diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py
index c41c2f933..f297854f1 100644
--- a/module/plugins/crypter/FiredriveComFolder.py
+++ b/module/plugins/crypter/FiredriveComFolder.py
@@ -13,6 +13,7 @@ class FiredriveComFolder(SimpleCrypter):
     __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/share/.+'
 
     __description__ = """Firedrive.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
diff --git a/module/plugins/crypter/FourChanOrg.py b/module/plugins/crypter/FourChanOrg.py
index 8b2c74b44..4a0aa13d9 100644
--- a/module/plugins/crypter/FourChanOrg.py
+++ b/module/plugins/crypter/FourChanOrg.py
@@ -15,6 +15,7 @@ class FourChanOrg(Crypter):
     __pattern__ = r'http://(?:www\.)?boards\.4chan.org/\w+/res/(\d+)'
 
     __description__ = """4chan.org folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = []
 
 
diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py
index 34b64bc4a..19079f5f2 100644
--- a/module/plugins/crypter/FreakhareComFolder.py
+++ b/module/plugins/crypter/FreakhareComFolder.py
@@ -13,6 +13,7 @@ class FreakhareComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?freakshare\.com/folder/.+'
 
     __description__ = """Freakhare.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py
index c91ee6d10..35ee7791c 100644
--- a/module/plugins/crypter/FreetexthostCom.py
+++ b/module/plugins/crypter/FreetexthostCom.py
@@ -13,6 +13,7 @@ class FreetexthostCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?freetexthost\.com/\w+'
 
     __description__ = """Freetexthost.com decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
diff --git a/module/plugins/crypter/FshareVnFolder.py b/module/plugins/crypter/FshareVnFolder.py
index 1aa8bb3ea..f7c59050c 100644
--- a/module/plugins/crypter/FshareVnFolder.py
+++ b/module/plugins/crypter/FshareVnFolder.py
@@ -11,6 +11,7 @@ class FshareVnFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?fshare.vn/folder/.*'
 
     __description__ = """Fshare.vn folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py
index 8b0c2ac91..29c5a5f5e 100644
--- a/module/plugins/crypter/GooGl.py
+++ b/module/plugins/crypter/GooGl.py
@@ -12,6 +12,7 @@ class GooGl(Crypter):
     __pattern__ = r'https?://(?:www\.)?goo\.gl/\w+'
 
     __description__ = """Goo.gl decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index 6774cd72e..9b7d9f384 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -15,6 +15,7 @@ class HoerbuchIn(Crypter):
     __pattern__ = r'http://(?:www\.)?hoerbuch\.in/(wp/horbucher/\d+/.+/|tp/out.php\?.+|protection/folder_\d+\.html)'
 
     __description__ = """Hoerbuch.in decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("spoob", "spoob@pyload.org"),
                    ("mkaay", "mkaay@mkaay.de")]
 
diff --git a/module/plugins/crypter/HotfileFolderCom.py b/module/plugins/crypter/HotfileFolderCom.py
index e97d2ca91..d9e4e4c39 100644
--- a/module/plugins/crypter/HotfileFolderCom.py
+++ b/module/plugins/crypter/HotfileFolderCom.py
@@ -11,4 +11,5 @@ class HotfileFolderCom(DeadCrypter):
     __pattern__ = r'https?://(?:www\.)?hotfile\.com/list/\w+/\w+'
 
     __description__ = """Hotfile.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("RaNaN", "RaNaN@pyload.org")]
diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py
index c1dbab836..638d15191 100644
--- a/module/plugins/crypter/ILoadTo.py
+++ b/module/plugins/crypter/ILoadTo.py
@@ -11,4 +11,5 @@ class ILoadTo(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?iload\.to/go/\d+-[\w\.-]+/'
 
     __description__ = """Iload.to decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("hzpz", None)]
diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index d4e6b13ab..3fd8b9b21 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -12,6 +12,7 @@ class ImgurComAlbum(SimpleCrypter):
     __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}'
 
     __description__ = """Imgur.com decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("nath_schwarz", "nathan.notwhite@gmail.com")]
 
 
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index 3ca24195d..18e79ad8a 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -12,6 +12,7 @@ class LetitbitNetFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?letitbit.net/folder/\w+'
 
     __description__ = """Letitbit.net folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("DHMH", "webmaster@pcProfil.de"),
                    ("z00nx", "z00nx0@gmail.com")]
 
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 9c0bbdeac..b4691d70b 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -21,6 +21,7 @@ class LinkSaveIn(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?linksave.in/(?P<id>\w+)$'
 
     __description__ = """LinkSave.in decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
 
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index cc688cd8e..c72092a5f 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -12,6 +12,7 @@ class LinkdecrypterCom(Crypter):
     __pattern__ = None
 
     __description__ = """Linkdecrypter.com"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz"),
                    ("flowlee", None)]
 
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index af4f182b4..df32eed55 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -13,6 +13,7 @@ class LixIn(Crypter):
     __pattern__ = r'http://(?:www\.)?lix\.in/(?P<ID>.+)'
 
     __description__ = """Lix.in decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("spoob", "spoob@pyload.org")]
 
 
diff --git a/module/plugins/crypter/LofCc.py b/module/plugins/crypter/LofCc.py
index 5fc04000f..b3eef6fe9 100644
--- a/module/plugins/crypter/LofCc.py
+++ b/module/plugins/crypter/LofCc.py
@@ -11,4 +11,5 @@ class LofCc(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?lof.cc/(.*)'
 
     __description__ = """Lof.cc decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("mkaay", "mkaay@mkaay.de")]
diff --git a/module/plugins/crypter/MBLinkInfo.py b/module/plugins/crypter/MBLinkInfo.py
index edd846cf9..3d03e6e13 100644
--- a/module/plugins/crypter/MBLinkInfo.py
+++ b/module/plugins/crypter/MBLinkInfo.py
@@ -11,5 +11,6 @@ class MBLinkInfo(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?mblink\.info/?\?id=(\d+)'
 
     __description__ = """MBLink.info decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("Gummibaer", "Gummibaer@wiki-bierkiste.de"),
                    ("stickell", "l.stickell@yahoo.it")]
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index 2a4de5272..568b4a985 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -14,6 +14,7 @@ class MediafireComFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?mediafire\.com/(folder/|\?sharekey=|\?\w{13}($|[/#]))'
 
     __description__ = """Mediafire.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
diff --git a/module/plugins/crypter/Movie2kTo.py b/module/plugins/crypter/Movie2kTo.py
index 3a1701923..019105428 100644
--- a/module/plugins/crypter/Movie2kTo.py
+++ b/module/plugins/crypter/Movie2kTo.py
@@ -11,4 +11,5 @@ class Movie2kTo(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?movie2k\.to/(.*)\.html'
 
     __description__ = """Movie2k.to decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("4Christopher", "4Christopher@gmx.de")]
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index 0cb3048aa..bf0e49a4c 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -14,6 +14,7 @@ class MultiUpOrg(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?multiup\.org/(en|fr)/(?P<TYPE>project|download|miror)/\w+(/\w+)?'
 
     __description__ = """MultiUp.org crypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index 8f43e5796..a24fba576 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -14,6 +14,7 @@ class MultiloadCz(Crypter):
                   ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
 
     __description__ = """Multiload.cz decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
diff --git a/module/plugins/crypter/MultiuploadCom.py b/module/plugins/crypter/MultiuploadCom.py
index 653c9a169..0701a50ff 100644
--- a/module/plugins/crypter/MultiuploadCom.py
+++ b/module/plugins/crypter/MultiuploadCom.py
@@ -11,4 +11,5 @@ class MultiuploadCom(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?multiupload\.(com|nl)/\w+'
 
     __description__ = """ MultiUpload.com decrypter plugin """
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 1a6757006..22d496913 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -18,6 +18,7 @@ class NCryptIn(Crypter):
     __pattern__ = r'http://(?:www\.)?ncrypt.in/(?P<type>folder|link|frame)-([^/\?]+)'
 
     __description__ = """NCrypt.in decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es"),
                    ("stickell", "l.stickell@yahoo.it")]
 
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 1e60fa583..72f3ff0b9 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -13,6 +13,7 @@ class NetfolderIn(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?netfolder.in/((?P<id1>\w+)/\w+|folder.php\?folder_id=(?P<id2>\w+))'
 
     __description__ = """NetFolder.in decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("RaNaN", "RaNaN@pyload.org"),
                    ("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index fd065d571..de37010e9 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -11,6 +11,7 @@ class NosvideoCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?nosvideo\.com/\?v=\w+'
 
     __description__ = """Nosvideo.com decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("igel", "igelkun@myopera.com")]
 
 
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index 2e6daf25d..e631b135b 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -14,6 +14,7 @@ class OneKhDe(Crypter):
     __pattern__ = r'http://(?:www\.)?1kh.de/f/'
 
     __description__ = """1kh.de decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("spoob", "spoob@pyload.org")]
 
 
diff --git a/module/plugins/crypter/OronComFolder.py b/module/plugins/crypter/OronComFolder.py
index b651c0041..99edb02c1 100755
--- a/module/plugins/crypter/OronComFolder.py
+++ b/module/plugins/crypter/OronComFolder.py
@@ -11,4 +11,5 @@ class OronComFolder(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?oron.com/folder/\w+'
 
     __description__ = """Oron.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("DHMH", "webmaster@pcProfil.de")]
diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py
index 285110138..375b84f50 100644
--- a/module/plugins/crypter/PastebinCom.py
+++ b/module/plugins/crypter/PastebinCom.py
@@ -11,6 +11,7 @@ class PastebinCom(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?pastebin\.com/\w+'
 
     __description__ = """Pastebin.com decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index a74772641..9bf95f079 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -12,6 +12,7 @@ class QuickshareCzFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?quickshare.cz/slozka-\d+.*'
 
     __description__ = """Quickshare.cz folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
diff --git a/module/plugins/crypter/RSLayerCom.py b/module/plugins/crypter/RSLayerCom.py
index 0013b7b6d..28c82dd8c 100644
--- a/module/plugins/crypter/RSLayerCom.py
+++ b/module/plugins/crypter/RSLayerCom.py
@@ -11,4 +11,5 @@ class RSLayerCom(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?rs-layer.com/directory-'
 
     __description__ = """RS-Layer.com decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("hzpz", None)]
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 4d0132ac4..25cc9ada1 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -17,6 +17,7 @@ class RelinkUs(Crypter):
     __pattern__ = r'http://(?:www\.)?relink.us/(f/|((view|go).php\?id=))(?P<id>.+)'
 
     __description__ = """Relink.us decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
 
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index ca21fe907..a496812d2 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -19,6 +19,7 @@ class SafelinkingNet(Crypter):
     __pattern__ = r'https?://(?:www\.)?safelinking.net/([pd])/\w+'
 
     __description__ = """Safelinking.net decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("quareevo", "quareevo@arcor.de")]
 
 
diff --git a/module/plugins/crypter/SecuredIn.py b/module/plugins/crypter/SecuredIn.py
index f94fae700..701c4843a 100644
--- a/module/plugins/crypter/SecuredIn.py
+++ b/module/plugins/crypter/SecuredIn.py
@@ -11,4 +11,5 @@ class SecuredIn(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?secured\.in/download-[\d]+-[\w]{8}\.html'
 
     __description__ = """Secured.in decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("mkaay", "mkaay@mkaay.de")]
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index e8615d8bc..af2e5245f 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -16,6 +16,7 @@ class ShareLinksBiz(Crypter):
     __pattern__ = r'http://(?:www\.)?(share-links|s2l)\.biz/(?P<ID>_?\w+)'
 
     __description__ = """Share-Links.biz decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
 
diff --git a/module/plugins/crypter/ShareRapidComFolder.py b/module/plugins/crypter/ShareRapidComFolder.py
index 43814bccb..605a63a1f 100644
--- a/module/plugins/crypter/ShareRapidComFolder.py
+++ b/module/plugins/crypter/ShareRapidComFolder.py
@@ -11,6 +11,7 @@ class ShareRapidComFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?((share(-?rapid\.(biz|com|cz|info|eu|net|org|pl|sk)|-(central|credit|free|net)\.cz|-ms\.net)|(s-?rapid|rapids)\.(cz|sk))|(e-stahuj|mediatack|premium-rapidshare|rapidshare-premium|qiuck)\.cz|kadzet\.com|stahuj-zdarma\.eu|strelci\.net|universal-share\.com)/(slozka/.+)'
 
     __description__ = """Share-Rapid.com folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
diff --git a/module/plugins/crypter/SpeedLoadOrgFolder.py b/module/plugins/crypter/SpeedLoadOrgFolder.py
index 79b79308d..4b77b8f22 100644
--- a/module/plugins/crypter/SpeedLoadOrgFolder.py
+++ b/module/plugins/crypter/SpeedLoadOrgFolder.py
@@ -11,4 +11,5 @@ class SpeedLoadOrgFolder(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?speedload\.org/(\d+~f$|folder/\d+/)'
 
     __description__ = """Speedload decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
diff --git a/module/plugins/crypter/StealthTo.py b/module/plugins/crypter/StealthTo.py
index a2f7b04af..50a7d561f 100644
--- a/module/plugins/crypter/StealthTo.py
+++ b/module/plugins/crypter/StealthTo.py
@@ -11,4 +11,5 @@ class StealthTo(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?stealth\.to/folder/.+'
 
     __description__ = """Stealth.to decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("spoob", "spoob@pyload.org")]
diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py
index 1e406072d..b3e049a37 100644
--- a/module/plugins/crypter/TnyCz.py
+++ b/module/plugins/crypter/TnyCz.py
@@ -13,6 +13,7 @@ class TnyCz(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?tny\.cz/\w+'
 
     __description__ = """Tny.cz decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
diff --git a/module/plugins/crypter/TrailerzoneInfo.py b/module/plugins/crypter/TrailerzoneInfo.py
index 4ed08a634..c96e3947d 100644
--- a/module/plugins/crypter/TrailerzoneInfo.py
+++ b/module/plugins/crypter/TrailerzoneInfo.py
@@ -11,4 +11,5 @@ class TrailerzoneInfo(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?trailerzone.info/.*?'
 
     __description__ = """TrailerZone.info decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("godofdream", "soilfiction@gmail.com")]
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index d0b42ab2a..b0f341209 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -14,6 +14,7 @@ class TurbobitNetFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?turbobit\.net/download/folder/(?P<ID>\w+)'
 
     __description__ = """Turbobit.net folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it"),
                    ("Walter Purcaro", "vuolter@gmail.com")]
 
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index a295189fd..a6e76adb8 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -15,6 +15,7 @@ class TusfilesNetFolder(SimpleCrypter):
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)/?'
 
     __description__ = """Tusfiles.net folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com"),
                    ("stickell", "l.stickell@yahoo.it")]
 
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index 0977addcd..03d415a77 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -12,6 +12,7 @@ class UlozToFolder(Crypter):
     __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj.cz|zachowajto.pl)/(m|soubory)/.*'
 
     __description__ = """Uloz.to folder decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
diff --git a/module/plugins/crypter/UploadableChFolder.py b/module/plugins/crypter/UploadableChFolder.py
index 0d672acf5..9e1e3aba8 100644
--- a/module/plugins/crypter/UploadableChFolder.py
+++ b/module/plugins/crypter/UploadableChFolder.py
@@ -11,6 +11,7 @@ class UploadableChFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?uploadable\.ch/list/\w+'
 
     __description__ = """ Uploadable.ch folder decrypter plugin """
+    __license__ = "GPLv3"
     __authors__ = [("guidobelix", "guidobelix@hotmail.it"),
                    ("Walter Purcaro", "vuolter@gmail.com")]
 
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index b58162dd3..a2ceccc68 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -13,6 +13,7 @@ class UploadedToFolder(SimpleCrypter):
     __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P<id>\w+)'
 
     __description__ = """UploadedTo decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
diff --git a/module/plugins/crypter/WiiReloadedOrg.py b/module/plugins/crypter/WiiReloadedOrg.py
index 12863cf75..3b28faf4f 100644
--- a/module/plugins/crypter/WiiReloadedOrg.py
+++ b/module/plugins/crypter/WiiReloadedOrg.py
@@ -11,4 +11,5 @@ class WiiReloadedOrg(DeadCrypter):
     __pattern__ = r'http://(?:www\.)?wii-reloaded\.org/protect/get\.php\?i=.+'
 
     __description__ = """Wii-Reloaded.org decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("hzpz", None)]
diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py
index e24c242e4..5a42a1d1e 100644
--- a/module/plugins/crypter/XupPl.py
+++ b/module/plugins/crypter/XupPl.py
@@ -11,6 +11,7 @@ class XupPl(Crypter):
     __pattern__ = r'https?://(?:[^/]*\.)?xup\.pl/.*'
 
     __description__ = """Xup.pl decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("z00nx", "z00nx0@gmail.com")]
 
 
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index b33554673..6ffb6b48e 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -22,6 +22,7 @@ class YoutubeBatch(Crypter):
                   ("uploads", "bool", "Grab channel unplaylisted videos", True)]
 
     __description__ = """Youtube.com channel & playlist decrypter plugin"""
+    __license__ = "GPLv3"
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
-- 
cgit v1.2.3


From 6632ded30de12bc16644b26de2605ec6b3bdd42a Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Thu, 9 Oct 2014 13:12:12 +0200
Subject: ShareRapidCom -> MegaRapidCz

---
 module/plugins/crypter/MegaRapidCzFolder.py   | 18 ++++++++++++++++++
 module/plugins/crypter/ShareRapidComFolder.py | 18 ------------------
 2 files changed, 18 insertions(+), 18 deletions(-)
 create mode 100644 module/plugins/crypter/MegaRapidCzFolder.py
 delete mode 100644 module/plugins/crypter/ShareRapidComFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/MegaRapidCzFolder.py b/module/plugins/crypter/MegaRapidCzFolder.py
new file mode 100644
index 000000000..a9d6a2dc6
--- /dev/null
+++ b/module/plugins/crypter/MegaRapidCzFolder.py
@@ -0,0 +1,18 @@
+# -*- coding: utf-8 -*-
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
+
+
+class MegaRapidCzFolder(SimpleCrypter):
+    __name__ = "MegaRapidCzFolder"
+    __type__ = "crypter"
+    __version__ = "0.02"
+
+    __pattern__ = r'http://(?:www\.)?(share|mega)rapid\.cz/slozka/\d+/\w+'
+
+    __description__ = """Share-Rapid.com folder decrypter plugin"""
+    __license__ = "GPLv3"
+    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+
+
+    LINK_PATTERN = r'<td class="soubor"[^>]*><a href="([^"]+)">'
diff --git a/module/plugins/crypter/ShareRapidComFolder.py b/module/plugins/crypter/ShareRapidComFolder.py
deleted file mode 100644
index 605a63a1f..000000000
--- a/module/plugins/crypter/ShareRapidComFolder.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
-
-
-class ShareRapidComFolder(SimpleCrypter):
-    __name__ = "ShareRapidComFolder"
-    __type__ = "crypter"
-    __version__ = "0.01"
-
-    __pattern__ = r'http://(?:www\.)?((share(-?rapid\.(biz|com|cz|info|eu|net|org|pl|sk)|-(central|credit|free|net)\.cz|-ms\.net)|(s-?rapid|rapids)\.(cz|sk))|(e-stahuj|mediatack|premium-rapidshare|rapidshare-premium|qiuck)\.cz|kadzet\.com|stahuj-zdarma\.eu|strelci\.net|universal-share\.com)/(slozka/.+)'
-
-    __description__ = """Share-Rapid.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
-
-
-    LINK_PATTERN = r'<td class="soubor"[^>]*><a href="([^"]+)">'
-- 
cgit v1.2.3


From 7a253238d4ba3486b90fba6547b955f6a3d31073 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 10 Oct 2014 14:42:32 +0200
Subject: [FiredriveComFolder] Mark dead

---
 module/plugins/crypter/FiredriveComFolder.py | 20 +++-----------------
 1 file changed, 3 insertions(+), 17 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py
index f297854f1..335c41ad3 100644
--- a/module/plugins/crypter/FiredriveComFolder.py
+++ b/module/plugins/crypter/FiredriveComFolder.py
@@ -1,29 +1,15 @@
 # -*- coding: utf-8 -*-
 
-import re
+from module.plugins.internal.DeadCrypter import DeadCrypter
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
-
-class FiredriveComFolder(SimpleCrypter):
+class FiredriveComFolder(DeadCrypter):
     __name__ = "FiredriveComFolder"
     __type__ = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/share/.+'
 
     __description__ = """Firedrive.com folder decrypter plugin"""
     __license__ = "GPLv3"
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
-
-
-    LINK_PATTERN = r'<div class="pf_item pf_(file|folder).+?public=\'(.+?)\''
-    TITLE_PATTERN = r'>Shared Folder "(.+)" | Firedrive<'
-    OFFLINE_PATTERN = r'class="sad_face_image"|>No such page here.<'
-    TEMP_OFFLINE_PATTERN = r'>(File Temporarily Unavailable|Server Error. Try again later)'
-
-
-    def getLinks(self):
-        return map(lambda x: "http://www.firedrive.com/%s/%s" %
-                   ("share" if x[0] == "folder" else "file", x[1]),
-                   re.findall(self.LINK_PATTERN, self.html))
-- 
cgit v1.2.3


From 9f816bb6dc30b94979e7c03433698b32203b9d1d Mon Sep 17 00:00:00 2001
From: NETHeader <NETHead@gmx.net>
Date: Sat, 11 Oct 2014 14:51:07 +0200
Subject: New crypter SexuriaCom

---
 module/plugins/crypter/SexuriaCom.py | 102 +++++++++++++++++++++++++++++++++++
 1 file changed, 102 insertions(+)
 create mode 100644 module/plugins/crypter/SexuriaCom.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py
new file mode 100644
index 000000000..ad99b60ec
--- /dev/null
+++ b/module/plugins/crypter/SexuriaCom.py
@@ -0,0 +1,102 @@
+# -*- coding: utf-8 -*-
+
+import re
+
+from module.plugins.Crypter import Crypter
+
+
+class SexuriaCom(Crypter):
+    __name__ = "SexuriaCom"
+    __type__ = "crypter"
+    __version__ = "0.01"
+
+    __pattern__ = r'http://(?:www\.)?sexuria\.com/(v1/)?(Pornos_Kostenlos_.+?_(\d+)\.html|dl_links_\d+_\d+\.html|id=\d+\&part=\d+\&link=\d+)'
+
+    __description__ = """Sexuria.com Crypter Plugin"""
+    __license__ = "GPLv3"
+    __authors__ = [("NETHead", "NETHead.AT.gmx.DOT.net")]
+
+
+    PATTERN_SUPPORTED_MAIN     = re.compile(r'http://(www\.)?sexuria\.com/(v1/)?Pornos_Kostenlos_.+?_(\d+)\.html', flags=re.I)
+    PATTERN_SUPPORTED_CRYPT    = re.compile(r'http://(www\.)?sexuria\.com/(v1/)?dl_links_\d+_(?P<ID>\d+)\.html', flags=re.I)
+    PATTERN_SUPPORTED_REDIRECT = re.compile(r'http://(www\.)?sexuria\.com/out\.php\?id=(?P<ID>\d+)\&part=\d+\&link=\d+', flags=re.I)
+    PATTERN_TITLE              = re.compile(r'<title> - (?P<TITLE>.*) Sexuria - Kostenlose Pornos - Rapidshare XXX Porn</title>', flags=re.I)
+    PATTERN_PASSWORD           = re.compile(r'<strong>Passwort: </strong></div></td>.*?bgcolor="#EFEFEF">(?P<PWD>.*?)</td>', flags=re.I | re.S)
+    PATTERN_DL_LINK_PAGE       = re.compile(r'"(dl_links_\d+_\d+\.html)"', flags=re.I)
+    PATTERN_REDIRECT_LINKS     = re.compile(r'value="(http://sexuria\.com/out\.php\?id=\d+\&part=\d+\&link=\d+)" readonly', flags=re.I)
+
+
+    def setup(self):
+        self.html = None
+
+
+    def decrypt(self, pyfile):
+        # Init
+        self.pyfile = pyfile
+        self.package = pyfile.package()
+
+        # Get package links
+        (package_name, package_links, folder_name, package_pwd) = self.decryptLinks(self.pyfile.url)
+        if package_pwd:
+            self.pyfile.package().password = package_pwd
+        self.packages.append((package_name, package_links, folder_name))
+
+
+    def decryptLinks(self, url):
+        linklist = []
+        name = self.package.name
+        folder = self.package.folder
+        password = None
+
+        if re.match(self.PATTERN_SUPPORTED_MAIN, url):
+            # Processing main page
+            html = self.load(url)
+            links = re.findall(self.PATTERN_DL_LINK_PAGE, html)
+            for link in links:
+                linklist.append("http://sexuria.com/v1/" + link)
+
+        elif re.match(self.PATTERN_SUPPORTED_REDIRECT, url):
+            # Processing direct redirect link (out.php), redirecting to main page
+            id = re.search(self.PATTERN_SUPPORTED_REDIRECT, url).group('ID')
+            if id:
+                linklist.append("http://sexuria.com/v1/Pornos_Kostenlos_liebe_%s.html" % id)
+
+        elif re.match(self.PATTERN_SUPPORTED_CRYPT, url):
+            # Extract info from main file
+            id = re.search(self.PATTERN_SUPPORTED_CRYPT, url).group('ID')
+            html = self.load("http://sexuria.com/v1/Pornos_Kostenlos_info_%s.html" % id, decode=True)
+
+            title = re.search(self.PATTERN_TITLE, html).group('TITLE').strip()
+            if title:
+                name = folder = title
+                self.logDebug("Package info found, name [%s] and folder [%s]" % (name, folder))
+
+            pwd = re.search(self.PATTERN_PASSWORD, html).group('PWD')
+            if pwd:
+                password = pwd.strip()
+                self.logDebug("Password info [%s] found" % password)
+
+            # Process link (dl_link)
+            html = self.load(url)
+            links = re.findall(self.PATTERN_REDIRECT_LINKS, html)
+            if len(links) == 0:
+                self.LogError("Broken for link %s" % link)
+            else:
+                for link in links:
+                    link = link.replace("http://sexuria.com/", "http://www.sexuria.com/")
+                    finallink = self.load(link, just_header=True)['location']
+                    if not finallink or "sexuria.com/" in finallink:
+                        self.LogError("Broken for link %s" % link)
+                    else:
+                        linklist.append(finallink)
+
+        # Inform the user if no link could been extracted
+        if linklist == []:
+            self.fail("Could not extract any links (out of date?)")
+
+        # Debug log
+        self.logDebug("%d supported links" % len(linklist))
+        for i, link in enumerate(linklist):
+            self.logDebug("Supported link %d, %s" % (i + 1, link))
+
+        return name, linklist, folder, password
-- 
cgit v1.2.3


From e600362d2450ef13567b255004861bead011e0ef Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 11 Oct 2014 15:03:26 +0200
Subject: [FileshareInUa] Mark dead

---
 module/plugins/crypter/SexuriaCom.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py
index ad99b60ec..c7939e332 100644
--- a/module/plugins/crypter/SexuriaCom.py
+++ b/module/plugins/crypter/SexuriaCom.py
@@ -12,7 +12,7 @@ class SexuriaCom(Crypter):
 
     __pattern__ = r'http://(?:www\.)?sexuria\.com/(v1/)?(Pornos_Kostenlos_.+?_(\d+)\.html|dl_links_\d+_\d+\.html|id=\d+\&part=\d+\&link=\d+)'
 
-    __description__ = """Sexuria.com Crypter Plugin"""
+    __description__ = """Sexuria.com decrypter plugin"""
     __license__ = "GPLv3"
     __authors__ = [("NETHead", "NETHead.AT.gmx.DOT.net")]
 
-- 
cgit v1.2.3


From f76e5c2336718dca9da8033ba22cd83c72c7b3b3 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 11 Oct 2014 15:14:28 +0200
Subject: Pattern update 1

---
 module/plugins/crypter/ChipDe.py         | 2 +-
 module/plugins/crypter/CryptItCom.py     | 2 +-
 module/plugins/crypter/DDLMusicOrg.py    | 2 +-
 module/plugins/crypter/ILoadTo.py        | 2 +-
 module/plugins/crypter/NCryptIn.py       | 2 +-
 module/plugins/crypter/SafelinkingNet.py | 2 +-
 module/plugins/crypter/SecuredIn.py      | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index 7752ee3bb..a4d6ad285 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -19,7 +19,7 @@ class ChipDe(Crypter):
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url)
         try:
-            f = re.search(r'"(http://video.chip.de/\d+?/.*)"', self.html)
+            f = re.search(r'"(http://video\.chip\.de/.+)"', self.html)
         except:
             self.fail('Failed to find the URL')
         else:
diff --git a/module/plugins/crypter/CryptItCom.py b/module/plugins/crypter/CryptItCom.py
index 58f0d77b6..372938119 100644
--- a/module/plugins/crypter/CryptItCom.py
+++ b/module/plugins/crypter/CryptItCom.py
@@ -8,7 +8,7 @@ class CryptItCom(DeadCrypter):
     __type__ = "crypter"
     __version__ = "0.11"
 
-    __pattern__ = r'http://(?:www\.)?crypt-it\.com/(s|e|d|c)/[\w]+'
+    __pattern__ = r'http://(?:www\.)?crypt-it\.com/(s|e|d|c)/\w+'
 
     __description__ = """Crypt-it.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py
index c224ee732..a78794b6d 100644
--- a/module/plugins/crypter/DDLMusicOrg.py
+++ b/module/plugins/crypter/DDLMusicOrg.py
@@ -28,7 +28,7 @@ class DDLMusicOrg(Crypter):
         if re.search(r"Wer dies nicht rechnen kann", html) is not None:
             self.offline()
 
-        math = re.search(r"(\d+) ([\+-]) (\d+) =\s+<inp", self.html)
+        math = re.search(r"(\d+) ([+-]) (\d+) =\s+<inp", self.html)
         id = re.search(r"name=\"id\" value=\"(\d+)\"", self.html).group(1)
         linknr = re.search(r"name=\"linknr\" value=\"(\d+)\"", self.html).group(1)
 
diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py
index 638d15191..184b71d04 100644
--- a/module/plugins/crypter/ILoadTo.py
+++ b/module/plugins/crypter/ILoadTo.py
@@ -8,7 +8,7 @@ class ILoadTo(DeadCrypter):
     __type__ = "crypter"
     __version__ = "0.11"
 
-    __pattern__ = r'http://(?:www\.)?iload\.to/go/\d+-[\w\.-]+/'
+    __pattern__ = r'http://(?:www\.)?iload\.to/go/\d+-[\w.-]+/'
 
     __description__ = """Iload.to decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 22d496913..8b8d2ebd4 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -231,7 +231,7 @@ class NCryptIn(Crypter):
         self.logDebug("Handling Container links")
         package_links = []
 
-        pattern = r"/container/(rsdf|dlc|ccf)/([a-z0-9]+)"
+        pattern = r"/container/(rsdf|dlc|ccf)/(\w+)"
         containersLinks = re.findall(pattern, self.html)
         self.logDebug("Decrypting %d Container links" % len(containersLinks))
         for containerLink in containersLinks:
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index a496812d2..737e4fc10 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -23,7 +23,7 @@ class SafelinkingNet(Crypter):
     __authors__ = [("quareevo", "quareevo@arcor.de")]
 
 
-    SOLVEMEDIA_PATTERN = "solvemediaApiKey = '([\w\.\-_]+)';"
+    SOLVEMEDIA_PATTERN = "solvemediaApiKey = '([\w.-]+)';"
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/SecuredIn.py b/module/plugins/crypter/SecuredIn.py
index 701c4843a..2ad7819d8 100644
--- a/module/plugins/crypter/SecuredIn.py
+++ b/module/plugins/crypter/SecuredIn.py
@@ -8,7 +8,7 @@ class SecuredIn(DeadCrypter):
     __type__ = "crypter"
     __version__ = "0.21"
 
-    __pattern__ = r'http://(?:www\.)?secured\.in/download-[\d]+-[\w]{8}\.html'
+    __pattern__ = r'http://(?:www\.)?secured\.in/download-[\d]+-\w{8}\.html'
 
     __description__ = """Secured.in decrypter plugin"""
     __license__ = "GPLv3"
-- 
cgit v1.2.3


From c5d1a4fd8943877c6d2eb3843e0de725dba5191e Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 11 Oct 2014 15:09:53 +0200
Subject: Pattern update 2

---
 module/plugins/crypter/BitshareComFolder.py     | 2 +-
 module/plugins/crypter/C1neonCom.py             | 2 +-
 module/plugins/crypter/ChipDe.py                | 2 +-
 module/plugins/crypter/CrockoComFolder.py       | 2 +-
 module/plugins/crypter/DataHuFolder.py          | 2 +-
 module/plugins/crypter/DepositfilesComFolder.py | 2 +-
 module/plugins/crypter/DontKnowMe.py            | 4 ++--
 module/plugins/crypter/DuckCryptInfo.py         | 2 +-
 module/plugins/crypter/EmbeduploadCom.py        | 2 +-
 module/plugins/crypter/FilecloudIoFolder.py     | 4 ++--
 module/plugins/crypter/FileserveComFolder.py    | 2 +-
 module/plugins/crypter/FiletramCom.py           | 2 +-
 module/plugins/crypter/FourChanOrg.py           | 2 +-
 module/plugins/crypter/FreakhareComFolder.py    | 2 +-
 module/plugins/crypter/FshareVnFolder.py        | 2 +-
 module/plugins/crypter/HoerbuchIn.py            | 2 +-
 module/plugins/crypter/LetitbitNetFolder.py     | 2 +-
 module/plugins/crypter/LinkSaveIn.py            | 2 +-
 module/plugins/crypter/LixIn.py                 | 2 +-
 module/plugins/crypter/LofCc.py                 | 2 +-
 module/plugins/crypter/MediafireComFolder.py    | 2 +-
 module/plugins/crypter/MultiloadCz.py           | 2 +-
 module/plugins/crypter/NCryptIn.py              | 2 +-
 module/plugins/crypter/NetfolderIn.py           | 2 +-
 module/plugins/crypter/NosvideoCom.py           | 2 +-
 module/plugins/crypter/OneKhDe.py               | 2 +-
 module/plugins/crypter/OronComFolder.py         | 2 +-
 module/plugins/crypter/QuickshareCzFolder.py    | 4 ++--
 module/plugins/crypter/RSLayerCom.py            | 2 +-
 module/plugins/crypter/RelinkUs.py              | 2 +-
 module/plugins/crypter/SafelinkingNet.py        | 2 +-
 module/plugins/crypter/TrailerzoneInfo.py       | 2 +-
 module/plugins/crypter/UlozToFolder.py          | 2 +-
 33 files changed, 36 insertions(+), 36 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py
index 40458b3ff..b5c380356 100644
--- a/module/plugins/crypter/BitshareComFolder.py
+++ b/module/plugins/crypter/BitshareComFolder.py
@@ -15,5 +15,5 @@ class BitshareComFolder(SimpleCrypter):
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
-    LINK_PATTERN = r'<a href="(http://bitshare.com/files/.+)">.+</a></td>'
+    LINK_PATTERN = r'<a href="(http://bitshare\.com/files/.+)">.+</a></td>'
     TITLE_PATTERN = r'View public folder "(.+)"</h1>'
diff --git a/module/plugins/crypter/C1neonCom.py b/module/plugins/crypter/C1neonCom.py
index a314f2ad1..f01bf890d 100644
--- a/module/plugins/crypter/C1neonCom.py
+++ b/module/plugins/crypter/C1neonCom.py
@@ -8,7 +8,7 @@ class C1neonCom(DeadCrypter):
     __type__ = "crypter"
     __version__ = "0.05"
 
-    __pattern__ = r'http://(?:www\.)?c1neon.com/.*?'
+    __pattern__ = r'http://(?:www\.)?c1neon\.com/.*?'
 
     __description__ = """C1neon.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index a4d6ad285..317f73e4c 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -9,7 +9,7 @@ class ChipDe(Crypter):
     __type__ = "crypter"
     __version__ = "0.1"
 
-    __pattern__ = r'http://(?:www\.)?chip.de/video/.*\.html'
+    __pattern__ = r'http://(?:www\.)?chip\.de/video/.*\.html'
 
     __description__ = """Chip.de decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/CrockoComFolder.py b/module/plugins/crypter/CrockoComFolder.py
index e921fc1fa..d101ccb84 100644
--- a/module/plugins/crypter/CrockoComFolder.py
+++ b/module/plugins/crypter/CrockoComFolder.py
@@ -8,7 +8,7 @@ class CrockoComFolder(SimpleCrypter):
     __type__ = "crypter"
     __version__ = "0.01"
 
-    __pattern__ = r'http://(?:www\.)?crocko.com/f/.*'
+    __pattern__ = r'http://(?:www\.)?crocko\.com/f/.*'
 
     __description__ = """Crocko.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index a80be34d2..c4dd21d30 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -10,7 +10,7 @@ class DataHuFolder(SimpleCrypter):
     __type__ = "crypter"
     __version__ = "0.04"
 
-    __pattern__ = r'http://(?:www\.)?data.hu/dir/\w+'
+    __pattern__ = r'http://(?:www\.)?data\.hu/dir/\w+'
 
     __description__ = """Data.hu folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DepositfilesComFolder.py b/module/plugins/crypter/DepositfilesComFolder.py
index 7e32457ac..4a15fcef9 100644
--- a/module/plugins/crypter/DepositfilesComFolder.py
+++ b/module/plugins/crypter/DepositfilesComFolder.py
@@ -8,7 +8,7 @@ class DepositfilesComFolder(SimpleCrypter):
     __type__ = "crypter"
     __version__ = "0.01"
 
-    __pattern__ = r'http://(?:www\.)?depositfiles.com/folders/\w+'
+    __pattern__ = r'http://(?:www\.)?depositfiles\.com/folders/\w+'
 
     __description__ = """Depositfiles.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index 961f0c6e0..962e56bfd 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -12,14 +12,14 @@ class DontKnowMe(Crypter):
     __type__ = "crypter"
     __version__ = "0.1"
 
-    __pattern__ = r'http://(?:www\.)?dontknow.me/at/\?.+$'
+    __pattern__ = r'http://(?:www\.)?dontknow\.me/at/\?.+$'
 
     __description__ = """DontKnow.me decrypter plugin"""
     __license__ = "GPLv3"
     __authors__ = [("selaux", None)]
 
 
-    LINK_PATTERN = r'http://dontknow.me/at/\?(.+)$'
+    LINK_PATTERN = r'http://dontknow\.me/at/\?(.+)$'
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 5815b624c..ff7b0a07a 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -12,7 +12,7 @@ class DuckCryptInfo(Crypter):
     __type__ = "crypter"
     __version__ = "0.02"
 
-    __pattern__ = r'http://(?:www\.)?duckcrypt.info/(folder|wait|link)/(\w+)/?(\w*)'
+    __pattern__ = r'http://(?:www\.)?duckcrypt\.info/(folder|wait|link)/(\w+)/?(\w*)'
 
     __description__ = """DuckCrypt.info decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 8f1d60ee3..71c4d5778 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -10,7 +10,7 @@ class EmbeduploadCom(Crypter):
     __type__ = "crypter"
     __version__ = "0.02"
 
-    __pattern__ = r'http://(?:www\.)?embedupload.com/\?d=.*'
+    __pattern__ = r'http://(?:www\.)?embedupload\.com/\?d=.*'
     __config__ = [("preferedHoster", "str", "Prefered hoster list (bar-separated) ", "embedupload"),
                   ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
 
diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
index d6a1929a3..c7d9e6d8a 100644
--- a/module/plugins/crypter/FilecloudIoFolder.py
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -15,5 +15,5 @@ class FilecloudIoFolder(SimpleCrypter):
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
-    LINK_PATTERN = r'href="(http://filecloud.io/\w+)" title'
-    TITLE_PATTERN = r'>(.+?) - filecloud.io<'
+    LINK_PATTERN = r'href="(http://filecloud\.io/\w+)" title'
+    TITLE_PATTERN = r'>(.+?) - filecloud\.io<'
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index 63de97fec..bdb07cbdc 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -10,7 +10,7 @@ class FileserveComFolder(Crypter):
     __type__ = "crypter"
     __version__ = "0.11"
 
-    __pattern__ = r'http://(?:www\.)?fileserve.com/list/\w+'
+    __pattern__ = r'http://(?:www\.)?fileserve\.com/list/\w+'
 
     __description__ = """FileServe.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index e99419039..ad5307d83 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -8,7 +8,7 @@ class FiletramCom(SimpleCrypter):
     __type__ = "crypter"
     __version__ = "0.02"
 
-    __pattern__ = r'http://(?:www\.)?filetram.com/[^/]+/.+'
+    __pattern__ = r'http://(?:www\.)?filetram\.com/[^/]+/.+'
 
     __description__ = """Filetram.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FourChanOrg.py b/module/plugins/crypter/FourChanOrg.py
index 4a0aa13d9..a07760e2d 100644
--- a/module/plugins/crypter/FourChanOrg.py
+++ b/module/plugins/crypter/FourChanOrg.py
@@ -12,7 +12,7 @@ class FourChanOrg(Crypter):
     __type__ = "crypter"
     __version__ = "0.3"
 
-    __pattern__ = r'http://(?:www\.)?boards\.4chan.org/\w+/res/(\d+)'
+    __pattern__ = r'http://(?:www\.)?boards\.4chan\.org/\w+/res/(\d+)'
 
     __description__ = """4chan.org folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py
index 19079f5f2..8d3870247 100644
--- a/module/plugins/crypter/FreakhareComFolder.py
+++ b/module/plugins/crypter/FreakhareComFolder.py
@@ -17,7 +17,7 @@ class FreakhareComFolder(SimpleCrypter):
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
-    LINK_PATTERN = r'<a href="(http://freakshare.com/files/[^"]+)" target="_blank">'
+    LINK_PATTERN = r'<a href="(http://freakshare\.com/files/[^"]+)" target="_blank">'
     TITLE_PATTERN = r'Folder:</b> (.+)'
     PAGES_PATTERN = r'Pages: +(\d+)'
 
diff --git a/module/plugins/crypter/FshareVnFolder.py b/module/plugins/crypter/FshareVnFolder.py
index f7c59050c..46375a6ae 100644
--- a/module/plugins/crypter/FshareVnFolder.py
+++ b/module/plugins/crypter/FshareVnFolder.py
@@ -8,7 +8,7 @@ class FshareVnFolder(SimpleCrypter):
     __type__ = "crypter"
     __version__ = "0.01"
 
-    __pattern__ = r'http://(?:www\.)?fshare.vn/folder/.*'
+    __pattern__ = r'http://(?:www\.)?fshare\.vn/folder/.*'
 
     __description__ = """Fshare.vn folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index 9b7d9f384..34e124d82 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -12,7 +12,7 @@ class HoerbuchIn(Crypter):
     __type__ = "crypter"
     __version__ = "0.6"
 
-    __pattern__ = r'http://(?:www\.)?hoerbuch\.in/(wp/horbucher/\d+/.+/|tp/out.php\?.+|protection/folder_\d+\.html)'
+    __pattern__ = r'http://(?:www\.)?hoerbuch\.in/(wp/horbucher/\d+/.+/|tp/out\.php\?.+|protection/folder_\d+\.html)'
 
     __description__ = """Hoerbuch.in decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index 18e79ad8a..c7f6fc738 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -9,7 +9,7 @@ class LetitbitNetFolder(Crypter):
     __type__ = "crypter"
     __version__ = "0.1"
 
-    __pattern__ = r'http://(?:www\.)?letitbit.net/folder/\w+'
+    __pattern__ = r'http://(?:www\.)?letitbit\.net/folder/\w+'
 
     __description__ = """Letitbit.net folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index b4691d70b..af3679122 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -18,7 +18,7 @@ class LinkSaveIn(SimpleCrypter):
     __type__ = "crypter"
     __version__ = "2.02"
 
-    __pattern__ = r'http://(?:www\.)?linksave.in/(?P<id>\w+)$'
+    __pattern__ = r'http://(?:www\.)?linksave\.in/(?P<id>\w+)$'
 
     __description__ = """LinkSave.in decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index df32eed55..28b72237b 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -17,7 +17,7 @@ class LixIn(Crypter):
     __authors__ = [("spoob", "spoob@pyload.org")]
 
 
-    CAPTCHA_PATTERN = r'<img src="(?P<image>captcha_img.php\?.*?)"'
+    CAPTCHA_PATTERN = r'<img src="(?P<image>captcha_img\.php\?.*?)"'
     SUBMIT_PATTERN = r"value='continue.*?'"
     LINK_PATTERN = r'name="ifram" src="(?P<link>.*?)"'
 
diff --git a/module/plugins/crypter/LofCc.py b/module/plugins/crypter/LofCc.py
index b3eef6fe9..720357a87 100644
--- a/module/plugins/crypter/LofCc.py
+++ b/module/plugins/crypter/LofCc.py
@@ -8,7 +8,7 @@ class LofCc(DeadCrypter):
     __type__ = "crypter"
     __version__ = "0.21"
 
-    __pattern__ = r'http://(?:www\.)?lof.cc/(.*)'
+    __pattern__ = r'http://(?:www\.)?lof\.cc/(.*)'
 
     __description__ = """Lof.cc decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index 568b4a985..47ddf6bcb 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -19,7 +19,7 @@ class MediafireComFolder(Crypter):
 
 
     FOLDER_KEY_PATTERN = r"var afI= '(\w+)';"
-    FILE_URL_PATTERN = r'<meta property="og:url" content="http://www.mediafire.com/\?(\w+)"/>'
+    FILE_URL_PATTERN = r'<meta property="og:url" content="http://www\.mediafire\.com/\?(\w+)"/>'
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index a24fba576..0c0291147 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -9,7 +9,7 @@ class MultiloadCz(Crypter):
     __type__ = "crypter"
     __version__ = "0.4"
 
-    __pattern__ = r'http://(?:[^/]*\.)?multiload.cz/(stahnout|slozka)/.*'
+    __pattern__ = r'http://(?:[^/]*\.)?multiload\.cz/(stahnout|slozka)/.*'
     __config__ = [("usedHoster", "str", "Prefered hoster list (bar-separated) ", ""),
                   ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
 
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 8b8d2ebd4..9eb242363 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -15,7 +15,7 @@ class NCryptIn(Crypter):
     __type__ = "crypter"
     __version__ = "1.32"
 
-    __pattern__ = r'http://(?:www\.)?ncrypt.in/(?P<type>folder|link|frame)-([^/\?]+)'
+    __pattern__ = r'http://(?:www\.)?ncrypt\.in/(?P<type>folder|link|frame)-([^/\?]+)'
 
     __description__ = """NCrypt.in decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 72f3ff0b9..027503bd2 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -10,7 +10,7 @@ class NetfolderIn(SimpleCrypter):
     __type__ = "crypter"
     __version__ = "0.7"
 
-    __pattern__ = r'http://(?:www\.)?netfolder.in/((?P<id1>\w+)/\w+|folder.php\?folder_id=(?P<id2>\w+))'
+    __pattern__ = r'http://(?:www\.)?netfolder\.in/((?P<id1>\w+)/\w+|folder\.php\?folder_id=(?P<id2>\w+))'
 
     __description__ = """NetFolder.in decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index de37010e9..982c4538c 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -15,5 +15,5 @@ class NosvideoCom(SimpleCrypter):
     __authors__ = [("igel", "igelkun@myopera.com")]
 
 
-    LINK_PATTERN = r'href="(http://(?:w{3}\.)?nosupload.com/\?d=\w+)"'
+    LINK_PATTERN = r'href="(http://(?:w{3}\.)?nosupload\.com/\?d=\w+)"'
     TITLE_PATTERN = r'<[tT]itle>Watch (.+?)<'
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index e631b135b..3b072b3d7 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -11,7 +11,7 @@ class OneKhDe(Crypter):
     __type__ = "crypter"
     __version__ = "0.1"
 
-    __pattern__ = r'http://(?:www\.)?1kh.de/f/'
+    __pattern__ = r'http://(?:www\.)?1kh\.de/f/'
 
     __description__ = """1kh.de decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/OronComFolder.py b/module/plugins/crypter/OronComFolder.py
index 99edb02c1..d6474f641 100755
--- a/module/plugins/crypter/OronComFolder.py
+++ b/module/plugins/crypter/OronComFolder.py
@@ -8,7 +8,7 @@ class OronComFolder(DeadCrypter):
     __type__ = "crypter"
     __version__ = "0.11"
 
-    __pattern__ = r'http://(?:www\.)?oron.com/folder/\w+'
+    __pattern__ = r'http://(?:www\.)?oron\.com/folder/\w+'
 
     __description__ = """Oron.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index 9bf95f079..60c2d1a40 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -9,7 +9,7 @@ class QuickshareCzFolder(Crypter):
     __type__ = "crypter"
     __version__ = "0.1"
 
-    __pattern__ = r'http://(?:www\.)?quickshare.cz/slozka-\d+.*'
+    __pattern__ = r'http://(?:www\.)?quickshare\.cz/slozka-\d+.*'
 
     __description__ = """Quickshare.cz folder decrypter plugin"""
     __license__ = "GPLv3"
@@ -17,7 +17,7 @@ class QuickshareCzFolder(Crypter):
 
 
     FOLDER_PATTERN = r'<textarea[^>]*>(.*?)</textarea>'
-    LINK_PATTERN = r'(http://www.quickshare.cz/\S+)'
+    LINK_PATTERN = r'(http://www\.quickshare\.cz/\S+)'
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/RSLayerCom.py b/module/plugins/crypter/RSLayerCom.py
index 28c82dd8c..f86d6dfec 100644
--- a/module/plugins/crypter/RSLayerCom.py
+++ b/module/plugins/crypter/RSLayerCom.py
@@ -8,7 +8,7 @@ class RSLayerCom(DeadCrypter):
     __type__ = "crypter"
     __version__ = "0.21"
 
-    __pattern__ = r'http://(?:www\.)?rs-layer.com/directory-'
+    __pattern__ = r'http://(?:www\.)?rs-layer\.com/directory-'
 
     __description__ = """RS-Layer.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 25cc9ada1..7b6dff328 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -14,7 +14,7 @@ class RelinkUs(Crypter):
     __type__ = "crypter"
     __version__ = "3.0"
 
-    __pattern__ = r'http://(?:www\.)?relink.us/(f/|((view|go).php\?id=))(?P<id>.+)'
+    __pattern__ = r'http://(?:www\.)?relink\.us/(f/|((view|go)\.php\?id=))(?P<id>.+)'
 
     __description__ = """Relink.us decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index 737e4fc10..33b3d73ab 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -16,7 +16,7 @@ class SafelinkingNet(Crypter):
     __type__ = "crypter"
     __version__ = "0.1"
 
-    __pattern__ = r'https?://(?:www\.)?safelinking.net/([pd])/\w+'
+    __pattern__ = r'https?://(?:www\.)?safelinking\.net/([pd])/\w+'
 
     __description__ = """Safelinking.net decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/TrailerzoneInfo.py b/module/plugins/crypter/TrailerzoneInfo.py
index c96e3947d..4b197c728 100644
--- a/module/plugins/crypter/TrailerzoneInfo.py
+++ b/module/plugins/crypter/TrailerzoneInfo.py
@@ -8,7 +8,7 @@ class TrailerzoneInfo(DeadCrypter):
     __type__ = "crypter"
     __version__ = "0.03"
 
-    __pattern__ = r'http://(?:www\.)?trailerzone.info/.*?'
+    __pattern__ = r'http://(?:www\.)?trailerzone\.info/.*?'
 
     __description__ = """TrailerZone.info decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index 03d415a77..bc8571f7c 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -9,7 +9,7 @@ class UlozToFolder(Crypter):
     __type__ = "crypter"
     __version__ = "0.2"
 
-    __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj.cz|zachowajto.pl)/(m|soubory)/.*'
+    __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj\.cz|zachowajto\.pl)/(m|soubory)/.*'
 
     __description__ = """Uloz.to folder decrypter plugin"""
     __license__ = "GPLv3"
-- 
cgit v1.2.3


From 8939f015a688a07ec7d0bd14b6a3704f6a2cb4a0 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 11 Oct 2014 15:12:40 +0200
Subject: Pattern update 3

---
 module/plugins/crypter/DataHuFolder.py       | 2 +-
 module/plugins/crypter/LinkSaveIn.py         | 2 +-
 module/plugins/crypter/LixIn.py              | 2 +-
 module/plugins/crypter/MediafireComFolder.py | 2 +-
 module/plugins/crypter/NCryptIn.py           | 4 ++--
 module/plugins/crypter/RelinkUs.py           | 2 +-
 module/plugins/crypter/ShareLinksBiz.py      | 4 ++--
 module/plugins/crypter/TurbobitNetFolder.py  | 2 +-
 8 files changed, 10 insertions(+), 10 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index c4dd21d30..86e816c04 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -18,7 +18,7 @@ class DataHuFolder(SimpleCrypter):
                    ("stickell", "l.stickell@yahoo.it")]
 
 
-    LINK_PATTERN = r"<a href='(http://data\.hu/get/.+)' target='_blank'>\1</a>"
+    LINK_PATTERN = r'<a href=\'(http://data\.hu/get/.+)\' target=\'_blank\'>\1</a>'
     TITLE_PATTERN = ur'<title>(.+) Let\xf6lt\xe9se</title>'
 
 
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index af3679122..81768e457 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -178,7 +178,7 @@ class LinkSaveIn(SimpleCrypter):
         self.logDebug("Seach for %s Container links" % type_.upper())
         if not type_.isalnum():  # check to prevent broken re-pattern (cnl2,rsdf,ccf,dlc,web are all alpha-numeric)
             self.fail('unknown container type "%s" (this is probably a bug)' % type_)
-        pattern = r"\('%s_link'\).href=unescape\('(.*?\.%s)'\)" % (type_, type_)
+        pattern = r'\(\'%s_link\'\).href=unescape\(\'(.*?\.%s)\'\)' % (type_, type_)
         containersLinks = re.findall(pattern, self.html)
         self.logDebug("Found %d %s Container links" % (len(containersLinks), type_.upper()))
         for containerLink in containersLinks:
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index 28b72237b..32423e228 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -18,7 +18,7 @@ class LixIn(Crypter):
 
 
     CAPTCHA_PATTERN = r'<img src="(?P<image>captcha_img\.php\?.*?)"'
-    SUBMIT_PATTERN = r"value='continue.*?'"
+    SUBMIT_PATTERN = r'value=\'continue.*?\''
     LINK_PATTERN = r'name="ifram" src="(?P<link>.*?)"'
 
 
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index 47ddf6bcb..fce8be8d6 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -18,7 +18,7 @@ class MediafireComFolder(Crypter):
     __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
-    FOLDER_KEY_PATTERN = r"var afI= '(\w+)';"
+    FOLDER_KEY_PATTERN = r'var afI= \'(\w+)'
     FILE_URL_PATTERN = r'<meta property="og:url" content="http://www\.mediafire\.com/\?(\w+)"/>'
 
 
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 9eb242363..64ce973e8 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -231,7 +231,7 @@ class NCryptIn(Crypter):
         self.logDebug("Handling Container links")
         package_links = []
 
-        pattern = r"/container/(rsdf|dlc|ccf)/(\w+)"
+        pattern = r'/container/(rsdf|dlc|ccf)/(\w+)'
         containersLinks = re.findall(pattern, self.html)
         self.logDebug("Decrypting %d Container links" % len(containersLinks))
         for containerLink in containersLinks:
@@ -243,7 +243,7 @@ class NCryptIn(Crypter):
     def handleWebLinks(self):
 
         self.logDebug("Handling Web links")
-        pattern = r"(http://ncrypt\.in/link-.*?=)"
+        pattern = r'(http://ncrypt\.in/link-.*?=)'
         links = re.findall(pattern, self.html)
 
         package_links = []
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 7b6dff328..d99b7fb1a 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -41,7 +41,7 @@ class RelinkUs(Crypter):
     CNL2_CRYPTED_KEY = "crypted"
     DLC_LINK_REGEX = r'<a href=".*?" class="dlc_button" target="_blank">'
     DLC_DOWNLOAD_URL = r'http://www\.relink\.us/download\.php'
-    WEB_FORWARD_REGEX = r"getFile\('(?P<link>.+)'\)"
+    WEB_FORWARD_REGEX = r'getFile\(\'(?P<link>.+)\'\)'
     WEB_FORWARD_URL = r'http://www\.relink\.us/frame\.php'
     WEB_LINK_REGEX = r'<iframe name="Container" height="100%" frameborder="no" width="100%" src="(?P<link>.+)"></iframe>'
 
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index af2e5245f..9d4cfbb43 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -178,7 +178,7 @@ class ShareLinksBiz(Crypter):
         self.logDebug("Handling Web links")
 
         #@TODO: Gather paginated web links
-        pattern = r"javascript:_get\('(.*?)', \d+, ''\)"
+        pattern = r'javascript:_get\(\'(.*?)\', \d+, \'\'\)'
         ids = re.findall(pattern, self.html)
         self.logDebug("Decrypting %d Web links" % len(ids))
         for i, ID in enumerate(ids):
@@ -204,7 +204,7 @@ class ShareLinksBiz(Crypter):
         package_links = []
         self.logDebug("Handling Container links")
 
-        pattern = r"javascript:_get\('(.*?)', 0, '(rsdf|ccf|dlc)'\)"
+        pattern = r'javascript:_get\(\'(.*?)\', 0, \'(rsdf|ccf|dlc)\'\)'
         containersLinks = re.findall(pattern, self.html)
         self.logDebug("Decrypting %d Container links" % len(containersLinks))
         for containerLink in containersLinks:
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index b0f341209..390520d88 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -19,7 +19,7 @@ class TurbobitNetFolder(SimpleCrypter):
                    ("Walter Purcaro", "vuolter@gmail.com")]
 
 
-    TITLE_PATTERN = r"src='/js/lib/grid/icon/folder.png'> <span>(.+?)</span>"
+    TITLE_PATTERN = r'src=\'/js/lib/grid/icon/folder.png\'> <span>(.+?)</span>'
 
 
     def _getLinks(self, id, page=1):
-- 
cgit v1.2.3


From 83a822f35e72885e33b3606bd92eecdf284b25c0 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 12 Oct 2014 00:10:19 +0200
Subject: [YoutubeBatch] Fix API_KEY

---
 module/plugins/crypter/YoutubeBatch.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index 6ffb6b48e..e5fd83c4f 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -8,13 +8,11 @@ from module.common.json_layer import json_loads
 from module.plugins.Crypter import Crypter
 from module.utils import save_join
 
-API_URL = "AIzaSyCKnWLNlkX-L4oD1aEzqqhRw1zczeD6_k0"
-
 
 class YoutubeBatch(Crypter):
     __name__ = "YoutubeBatch"
     __type__ = "crypter"
-    __version__ = "1.00"
+    __version__ = "1.01"
 
     __pattern__ = r'https?://(?:www\.|m\.)?youtube\.com/(?P<TYPE>user|playlist|view_play_list)(/|.*?[?&](?:list|p)=)(?P<ID>[\w-]+)'
     __config__ = [("likes", "bool", "Grab user (channel) liked videos", False),
@@ -26,8 +24,11 @@ class YoutubeBatch(Crypter):
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
+    API_KEY = "AIzaSyCKnWLNlkX-L4oD1aEzqqhRw1zczeD6_k0"
+
+
     def api_response(self, ref, req):
-        req.update({"key": API_KEY})
+        req.update({"key": self.API_KEY})
         url = urljoin("https://www.googleapis.com/youtube/v3/", ref)
         page = self.load(url, get=req)
         return json_loads(page)
-- 
cgit v1.2.3


From cb41bc9bddd0d9308063224ad5e94264aadb12fc Mon Sep 17 00:00:00 2001
From: guidobelix <guidobelix@hotmail.it>
Date: Tue, 14 Oct 2014 13:06:38 +0200
Subject: New crypter JunocloudMeFolder

---
 module/plugins/crypter/JunocloudMeFolder.py | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
 create mode 100644 module/plugins/crypter/JunocloudMeFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/JunocloudMeFolder.py b/module/plugins/crypter/JunocloudMeFolder.py
new file mode 100644
index 000000000..9e5fa1cbf
--- /dev/null
+++ b/module/plugins/crypter/JunocloudMeFolder.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
+
+
+class JunocloudMeFolder(SimpleCrypter):
+    __name__ = "JunocloudMeFolder"
+    __type__ = "crypter"
+    __version__ = "0.01"
+
+    __pattern__ = r'http://(?:www\.)?junocloud\.me/folders/(?P<ID>\d+/\w+)'
+
+    __description__ = """Junocloud.me folder decrypter plugin"""
+    __license__ = "GPLv3"
+    __authors__ = [("guidobelix", "guidobelix@hotmail.it")]
+
+
+    URL_REPLACEMENTS = [(__pattern__, r'http://www.junocloud.me/folders/\g<ID>?per_page=10000')]
+
+    LINK_PATTERN = r'<a href="(.+?)" target="_blank">.+?</a>'
-- 
cgit v1.2.3


From 6d45792d15df2c0b9c3481c4854cb7b09c134581 Mon Sep 17 00:00:00 2001
From: guidobelix <guidobelix@hotmail.it>
Date: Wed, 15 Oct 2014 02:06:10 +0200
Subject: New crypter RapidfileshareNetFolder

---
 module/plugins/crypter/RapidfileshareNetFolder.py | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100644 module/plugins/crypter/RapidfileshareNetFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/RapidfileshareNetFolder.py b/module/plugins/crypter/RapidfileshareNetFolder.py
new file mode 100644
index 000000000..7f7f85cbd
--- /dev/null
+++ b/module/plugins/crypter/RapidfileshareNetFolder.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
+
+
+class RapidfileshareNetFolder(SimpleCrypter):
+    __name__ = "RapidfileshareNetFolder"
+    __type__ = "crypter"
+    __version__ = "0.01"
+
+    __pattern__ = r'http://(?:www\.)?rapidfileshare\.net/users/\w+/\d+/\w+'
+
+    __description__ = """Rapidfileshare.net folder decrypter plugin"""
+    __license__ = "GPLv3"
+    __authors__ = [("guidobelix", "guidobelix@hotmail.it")]
+
+
+    LINK_PATTERN = r'<a href="(.+?)" target="_blank">.+?</a>'
+    TITLE_PATTERN = r'<Title>Files of \w+: ([^<]+) folder<'
-- 
cgit v1.2.3


From 1ecae2cb2b2b367bee8b6174036e3dc7ad054a9c Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 17 Oct 2014 20:52:26 +0200
Subject: New decrypter XFileSharingProFolder

---
 module/plugins/crypter/XFileSharingProFolder.py | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 module/plugins/crypter/XFileSharingProFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/XFileSharingProFolder.py b/module/plugins/crypter/XFileSharingProFolder.py
new file mode 100644
index 000000000..f3003e2aa
--- /dev/null
+++ b/module/plugins/crypter/XFileSharingProFolder.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+
+import re
+
+from module.plugins.internal.XFSPCrypter import XFSPCrypter
+
+
+class XFileSharingProFolder(XFSPCrypter):
+    __name__ = "XFileSharingProFolder"
+    __type__ = "crypter"
+    __version__ = "0.01"
+
+    __pattern__ = r'^unmatchable$'
+
+    __description__ = """XFileSharingPro dummy folder decrypter plugin for hook"""
+    __license__ = "GPLv3"
+    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+
+
+    def setup(self):
+        self.__pattern__ = self.core.pluginManager.crypterPlugins[self.__name__]['pattern']
+        self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower()
-- 
cgit v1.2.3


From 18836967d39d0b6e6f2aeea4e6aece605246a2bf Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 17 Oct 2014 20:55:00 +0200
Subject: Spare code cosmetics

---
 module/plugins/crypter/EasybytezComFolder.py | 2 +-
 module/plugins/crypter/TusfilesNetFolder.py  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index 0b73a10ae..c80b6cd61 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -15,7 +15,7 @@ class EasybytezComFolder(SimpleCrypter):
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
-    URL_REPLACEMENTS = [(__pattern__, r"http://www.easybytez.com/users/\g<ID>?per_page=10000")]
+    URL_REPLACEMENTS = [(__pattern__, r'http://www.easybytez.com/users/\g<ID>?per_page=10000')]
 
     LINK_PATTERN = r'<td><a href="(http://www\.easybytez\.com/\w+)" target="_blank">.+(?:</a>)?</td>'
     TITLE_PATTERN = r'<Title>Files of \d+: (.+) folder</Title>'
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index a6e76adb8..1d804c2a8 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -12,7 +12,7 @@ class TusfilesNetFolder(SimpleCrypter):
     __type__ = "crypter"
     __version__ = "0.03"
 
-    __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)/?'
+    __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)'
 
     __description__ = """Tusfiles.net folder decrypter plugin"""
     __license__ = "GPLv3"
-- 
cgit v1.2.3


From be5a34a74c7126dd9606e646cd879369dac7404d Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 18 Oct 2014 13:50:09 +0200
Subject: Convert some crypters to use XFSPCrypter instead SimpleCrypter

---
 module/plugins/crypter/EasybytezComFolder.py      | 11 ++++-------
 module/plugins/crypter/JunocloudMeFolder.py       | 10 ++++------
 module/plugins/crypter/RapidfileshareNetFolder.py |  9 ++++-----
 module/plugins/crypter/TusfilesNetFolder.py       | 11 ++++++-----
 4 files changed, 18 insertions(+), 23 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index c80b6cd61..4ced45355 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.XFSPCrypter import XFSPCrypter
 
 
-class EasybytezComFolder(SimpleCrypter):
+class EasybytezComFolder(XFSPCrypter):
     __name__ = "EasybytezComFolder"
     __type__ = "crypter"
-    __version__ = "0.08"
+    __version__ = "0.09"
 
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
 
@@ -15,9 +15,6 @@ class EasybytezComFolder(SimpleCrypter):
     __authors__ = [("stickell", "l.stickell@yahoo.it")]
 
 
-    URL_REPLACEMENTS = [(__pattern__, r'http://www.easybytez.com/users/\g<ID>?per_page=10000')]
-
-    LINK_PATTERN = r'<td><a href="(http://www\.easybytez\.com/\w+)" target="_blank">.+(?:</a>)?</td>'
-    TITLE_PATTERN = r'<Title>Files of \d+: (.+) folder</Title>'
+    HOSTER_NAME = "easybytez.com"
 
     LOGIN_ACCOUNT = True
diff --git a/module/plugins/crypter/JunocloudMeFolder.py b/module/plugins/crypter/JunocloudMeFolder.py
index 9e5fa1cbf..32c68e191 100644
--- a/module/plugins/crypter/JunocloudMeFolder.py
+++ b/module/plugins/crypter/JunocloudMeFolder.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.XFSPCrypter import XFSPCrypter
 
 
-class JunocloudMeFolder(SimpleCrypter):
+class JunocloudMeFolder(XFSPCrypter):
     __name__ = "JunocloudMeFolder"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?junocloud\.me/folders/(?P<ID>\d+/\w+)'
 
@@ -15,6 +15,4 @@ class JunocloudMeFolder(SimpleCrypter):
     __authors__ = [("guidobelix", "guidobelix@hotmail.it")]
 
 
-    URL_REPLACEMENTS = [(__pattern__, r'http://www.junocloud.me/folders/\g<ID>?per_page=10000')]
-
-    LINK_PATTERN = r'<a href="(.+?)" target="_blank">.+?</a>'
+    HOSTER_NAME = "junocloud.me"
diff --git a/module/plugins/crypter/RapidfileshareNetFolder.py b/module/plugins/crypter/RapidfileshareNetFolder.py
index 7f7f85cbd..cca52db20 100644
--- a/module/plugins/crypter/RapidfileshareNetFolder.py
+++ b/module/plugins/crypter/RapidfileshareNetFolder.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.XFSPCrypter import XFSPCrypter
 
 
-class RapidfileshareNetFolder(SimpleCrypter):
+class RapidfileshareNetFolder(XFSPCrypter):
     __name__ = "RapidfileshareNetFolder"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?rapidfileshare\.net/users/\w+/\d+/\w+'
 
@@ -15,5 +15,4 @@ class RapidfileshareNetFolder(SimpleCrypter):
     __authors__ = [("guidobelix", "guidobelix@hotmail.it")]
 
 
-    LINK_PATTERN = r'<a href="(.+?)" target="_blank">.+?</a>'
-    TITLE_PATTERN = r'<Title>Files of \w+: ([^<]+) folder<'
+    HOSTER_NAME = "rapidfileshare.net"
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index 1d804c2a8..fb0842b63 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -4,13 +4,13 @@ import math
 import re
 from urlparse import urljoin
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.XFSPCrypter import XFSPCrypter
 
 
-class TusfilesNetFolder(SimpleCrypter):
+class TusfilesNetFolder(XFSPCrypter):
     __name__ = "TusfilesNetFolder"
     __type__ = "crypter"
-    __version__ = "0.03"
+    __version__ = "0.04"
 
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)'
 
@@ -20,8 +20,8 @@ class TusfilesNetFolder(SimpleCrypter):
                    ("stickell", "l.stickell@yahoo.it")]
 
 
-    LINK_PATTERN = r'<TD align=left><a href="(.*?)">'
-    TITLE_PATTERN = r'<Title>.*?\: (.+) folder</Title>'
+    HOSTER_NAME = "tusfiles.net"
+
     PAGES_PATTERN = r'>\((\d+) \w+\)<'
 
     URL_REPLACEMENTS = [(__pattern__, r'https://www.tusfiles.net/go/\g<ID>/')]
@@ -30,6 +30,7 @@ class TusfilesNetFolder(SimpleCrypter):
     def loadPage(self, page_n):
         return self.load(urljoin(self.pyfile.url, str(page_n)), decode=True)
 
+
     def handleMultiPages(self):
         pages = re.search(self.PAGES_PATTERN, self.html)
         if pages:
-- 
cgit v1.2.3


From b0da8977d2587e9c662878423404d72d7f812601 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 18 Oct 2014 15:20:41 +0200
Subject: [HotfileFolderCom] Rename to HotfileComFolder

---
 module/plugins/crypter/HotfileComFolder.py | 15 +++++++++++++++
 module/plugins/crypter/HotfileFolderCom.py | 15 ---------------
 2 files changed, 15 insertions(+), 15 deletions(-)
 create mode 100644 module/plugins/crypter/HotfileComFolder.py
 delete mode 100644 module/plugins/crypter/HotfileFolderCom.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/HotfileComFolder.py b/module/plugins/crypter/HotfileComFolder.py
new file mode 100644
index 000000000..c2c999275
--- /dev/null
+++ b/module/plugins/crypter/HotfileComFolder.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+
+from module.plugins.internal.DeadCrypter import DeadCrypter
+
+
+class HotfileComFolder(DeadCrypter):
+    __name__ = "HotfileComFolder"
+    __type__ = "crypter"
+    __version__ = "0.3"
+
+    __pattern__ = r'https?://(?:www\.)?hotfile\.com/list/\w+/\w+'
+
+    __description__ = """Hotfile.com folder decrypter plugin"""
+    __license__ = "GPLv3"
+    __authors__ = [("RaNaN", "RaNaN@pyload.org")]
diff --git a/module/plugins/crypter/HotfileFolderCom.py b/module/plugins/crypter/HotfileFolderCom.py
deleted file mode 100644
index d9e4e4c39..000000000
--- a/module/plugins/crypter/HotfileFolderCom.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from module.plugins.internal.DeadCrypter import DeadCrypter
-
-
-class HotfileFolderCom(DeadCrypter):
-    __name__ = "HotfileFolderCom"
-    __type__ = "crypter"
-    __version__ = "0.3"
-
-    __pattern__ = r'https?://(?:www\.)?hotfile\.com/list/\w+/\w+'
-
-    __description__ = """Hotfile.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("RaNaN", "RaNaN@pyload.org")]
-- 
cgit v1.2.3


From a0c5df1aca6bfb58120044079a3fdde560612a1e Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 18 Oct 2014 15:25:43 +0200
Subject: [XFileSharingPro][XFileSharingProFolder] Account pairing routine

---
 module/plugins/crypter/XFileSharingProFolder.py | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/XFileSharingProFolder.py b/module/plugins/crypter/XFileSharingProFolder.py
index f3003e2aa..ba8c7b8b7 100644
--- a/module/plugins/crypter/XFileSharingProFolder.py
+++ b/module/plugins/crypter/XFileSharingProFolder.py
@@ -8,7 +8,7 @@ from module.plugins.internal.XFSPCrypter import XFSPCrypter
 class XFileSharingProFolder(XFSPCrypter):
     __name__ = "XFileSharingProFolder"
     __type__ = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'^unmatchable$'
 
@@ -17,6 +17,14 @@ class XFileSharingProFolder(XFSPCrypter):
     __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
-    def setup(self):
+    def init(self):
         self.__pattern__ = self.core.pluginManager.crypterPlugins[self.__name__]['pattern']
         self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower()
+
+        account_name = "".join([str.capitalize() for str in self.HOSTER_NAME.split('.')])
+        self.account = self.core.accountManager.getAccountPlugin(account_name)
+
+        if self.account and self.account.canUse():
+            self.user, data = self.account.selectAccount()
+            self.req = self.account.getAccountRequest(self.user)
+            self.premium = self.account.isPremium(self.user)
-- 
cgit v1.2.3


From 8edb5481e04da44a227e18c76fc4073297721f4f Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 18 Oct 2014 16:29:41 +0200
Subject: [XFileSharingPro] Fixes

---
 module/plugins/crypter/XFileSharingProFolder.py | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/XFileSharingProFolder.py b/module/plugins/crypter/XFileSharingProFolder.py
index ba8c7b8b7..e6fb2a7a5 100644
--- a/module/plugins/crypter/XFileSharingProFolder.py
+++ b/module/plugins/crypter/XFileSharingProFolder.py
@@ -22,9 +22,13 @@ class XFileSharingProFolder(XFSPCrypter):
         self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower()
 
         account_name = "".join([str.capitalize() for str in self.HOSTER_NAME.split('.')])
-        self.account = self.core.accountManager.getAccountPlugin(account_name)
+        account = self.core.accountManager.getAccountPlugin(account_name)
 
-        if self.account and self.account.canUse():
-            self.user, data = self.account.selectAccount()
-            self.req = self.account.getAccountRequest(self.user)
-            self.premium = self.account.isPremium(self.user)
+        if account and account.canUse():
+            self.user, data = account.selectAccount()
+            self.req = account.getAccountRequest(self.user)
+            self.premium = account.isPremium(self.user)
+
+            self.account = account
+        else:
+            self.account.HOSTER_NAME = self.HOSTER_NAME
-- 
cgit v1.2.3


From 089c1341de6ec7fa3a6cfc30fbf24cbef02cbfce Mon Sep 17 00:00:00 2001
From: AndroKev <neureither.kevin@gmail.com>
Date: Sat, 18 Oct 2014 18:58:28 +0200
Subject: [RelinkUs] Fix regex errors and str conversion

---
 module/plugins/crypter/RelinkUs.py | 45 ++++++++++++++++++++++++++++----------
 1 file changed, 33 insertions(+), 12 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index d99b7fb1a..dc97fca74 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -12,37 +12,42 @@ from module.plugins.Crypter import Crypter
 class RelinkUs(Crypter):
     __name__ = "RelinkUs"
     __type__ = "crypter"
-    __version__ = "3.0"
+    __version__ = "3.1"
 
     __pattern__ = r'http://(?:www\.)?relink\.us/(f/|((view|go)\.php\?id=))(?P<id>.+)'
 
     __description__ = """Relink.us decrypter plugin"""
     __license__ = "GPLv3"
-    __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
+    __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es"),
+                   ("AndroKev", "neureither.kevin@gmail.com")]
 
 
-    # Constants
     PREFERRED_LINK_SOURCES = ["cnl2", "dlc", "web"]
 
     OFFLINE_TOKEN = r'<title>Tattooside'
-    PASSWORD_TOKEN = r'container_password\.php'
+
+    PASSWORD_TOKEN = r'container_password.php'
     PASSWORD_ERROR_ROKEN = r'You have entered an incorrect password'
-    PASSWORD_SUBMIT_URL = r'http://www\.relink\.us/container_password\.php'
-    CAPTCHA_TOKEN = r'container_captcha\.php'
+    PASSWORD_SUBMIT_URL = r'http://www.relink.us/container_password.php'
+
+    CAPTCHA_TOKEN = r'container_captcha.php'
     CAPTCHA_ERROR_ROKEN = r'You have solved the captcha wrong'
-    CAPTCHA_IMG_URL = r'http://www\.relink\.us/core/captcha/circlecaptcha\.php'
-    CAPTCHA_SUBMIT_URL = r'http://www\.relink\.us/container_captcha\.php'
-    FILE_TITLE_REGEX = r'<th>Title</th><td><i>(.*)</i></td></tr>'
+    CAPTCHA_IMG_URL = r'http://www.relink.us/core/captcha/circlecaptcha.php'
+    CAPTCHA_SUBMIT_URL = r'http://www.relink.us/container_captcha.php'
+
+    FILE_TITLE_REGEX = r'<th>Title</th><td>(.*)</td></tr>'
     FILE_NOTITLE = r'No title'
 
     CNL2_FORM_REGEX = r'<form id="cnl_form-(.*?)</form>'
     CNL2_FORMINPUT_REGEX = r'<input.*?name="%s".*?value="(.*?)"'
     CNL2_JK_KEY = "jk"
     CNL2_CRYPTED_KEY = "crypted"
+
     DLC_LINK_REGEX = r'<a href=".*?" class="dlc_button" target="_blank">'
-    DLC_DOWNLOAD_URL = r'http://www\.relink\.us/download\.php'
+    DLC_DOWNLOAD_URL = r'http://www.relink.us/download.php'
+
     WEB_FORWARD_REGEX = r'getFile\(\'(?P<link>.+)\'\)'
-    WEB_FORWARD_URL = r'http://www\.relink\.us/frame\.php'
+    WEB_FORWARD_URL = r'http://www.relink.us/frame.php'
     WEB_LINK_REGEX = r'<iframe name="Container" height="100%" frameborder="no" width="100%" src="(?P<link>.+)"></iframe>'
 
 
@@ -53,6 +58,7 @@ class RelinkUs(Crypter):
         self.html = None
         self.captcha = False
 
+
     def decrypt(self, pyfile):
         # Init
         self.initPackage(pyfile)
@@ -91,46 +97,54 @@ class RelinkUs(Crypter):
         else:
             self.fail('Could not extract any links')
 
+
     def initPackage(self, pyfile):
         self.fileid = re.match(self.__pattern__, pyfile.url).group('id')
         self.package = pyfile.package()
         self.password = self.getPassword()
 
+
     def requestPackage(self):
         self.html = self.load(self.pyfile.url, decode=True)
 
+
     def isOnline(self):
         if self.OFFLINE_TOKEN in self.html:
             self.logDebug("File not found")
             return False
         return True
 
+
     def isPasswordProtected(self):
         if self.PASSWORD_TOKEN in self.html:
             self.logDebug("Links are password protected")
             return True
 
+
     def isCaptchaProtected(self):
         if self.CAPTCHA_TOKEN in self.html:
             self.logDebug("Links are captcha protected")
             return True
         return False
 
+
     def unlockPasswordProtection(self):
         self.logDebug("Submitting password [%s] for protected links" % self.password)
         passwd_url = self.PASSWORD_SUBMIT_URL + "?id=%s" % self.fileid
         passwd_data = {'id': self.fileid, 'password': self.password, 'pw': 'submit'}
         self.html = self.load(passwd_url, post=passwd_data, decode=True)
 
+
     def unlockCaptchaProtection(self):
         self.logDebug("Request user positional captcha resolving")
         captcha_img_url = self.CAPTCHA_IMG_URL + "?id=%s" % self.fileid
         coords = self.decryptCaptcha(captcha_img_url, forceUser=True, imgtype="png", result_type='positional')
-        self.logDebug("Captcha resolved, coords [%s]" % coords)
+        self.logDebug("Captcha resolved, coords [%s]" % str(coords))
         captcha_post_url = self.CAPTCHA_SUBMIT_URL + "?id=%s" % self.fileid
         captcha_post_data = {'button.x': coords[0], 'button.y': coords[1], 'captcha': 'submit'}
         self.html = self.load(captcha_post_url, post=captcha_post_data, decode=True)
 
+
     def getPackageInfo(self):
         name = folder = None
 
@@ -151,6 +165,7 @@ class RelinkUs(Crypter):
         # Return package info
         return name, folder
 
+
     def handleErrors(self):
         if self.PASSWORD_ERROR_ROKEN in self.html:
             msg = "Incorrect password, please set right password on 'Edit package' form and retry"
@@ -165,6 +180,7 @@ class RelinkUs(Crypter):
             else:
                 self.correctCaptcha()
 
+
     def handleLinkSource(self, source):
         if source == 'cnl2':
             return self.handleCNL2Links()
@@ -175,6 +191,7 @@ class RelinkUs(Crypter):
         else:
             self.fail('Unknown source [%s] (this is probably a bug)' % source)
 
+
     def handleCNL2Links(self):
         self.logDebug("Search for CNL2 links")
         package_links = []
@@ -189,6 +206,7 @@ class RelinkUs(Crypter):
                 self.logDebug("Unable to decrypt CNL2 links")
         return package_links
 
+
     def handleDLCLinks(self):
         self.logDebug("Search for DLC links")
         package_links = []
@@ -208,6 +226,7 @@ class RelinkUs(Crypter):
                 self.logDebug("Unable to download DLC container")
         return package_links
 
+
     def handleWEBLinks(self):
         self.logDebug("Search for WEB links")
         package_links = []
@@ -226,6 +245,7 @@ class RelinkUs(Crypter):
             self.wait()
         return package_links
 
+
     def _getCipherParams(self, cnl2_form):
         # Get jk
         jk_re = self.CNL2_FORMINPUT_REGEX % self.CNL2_JK_KEY
@@ -239,6 +259,7 @@ class RelinkUs(Crypter):
         self.logDebug("Detected %d crypted blocks" % len(vcrypted))
         return vcrypted, vjk
 
+
     def _getLinks(self, crypted, jk):
         # Get key
         jreturn = self.js.eval("%s f()" % jk)
-- 
cgit v1.2.3


From 477120dfa8090f808ce17267896456c082714203 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 18 Oct 2014 19:09:49 +0200
Subject: Fixed logging issue with coords values

---
 module/plugins/crypter/NCryptIn.py      | 21 +++++++++++++++++++--
 module/plugins/crypter/ShareLinksBiz.py | 21 +++++++++++++++++++--
 2 files changed, 38 insertions(+), 4 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 64ce973e8..22fd53384 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -13,7 +13,7 @@ from module.plugins.internal.CaptchaService import ReCaptcha
 class NCryptIn(Crypter):
     __name__ = "NCryptIn"
     __type__ = "crypter"
-    __version__ = "1.32"
+    __version__ = "1.33"
 
     __pattern__ = r'http://(?:www\.)?ncrypt\.in/(?P<type>folder|link|frame)-([^/\?]+)'
 
@@ -36,6 +36,7 @@ class NCryptIn(Crypter):
         self.links_source_order = ["cnl2", "rsdf", "ccf", "dlc", "web"]
         self.protection_type = None
 
+
     def decrypt(self, pyfile):
         # Init
         self.package = pyfile.package()
@@ -77,13 +78,16 @@ class NCryptIn(Crypter):
             self.fail('Could not extract any links')
         self.packages = [(package_name, package_links, folder_name)]
 
+
     def isSingleLink(self):
         link_type = re.match(self.__pattern__, self.pyfile.url).group('type')
         return link_type in ("link", "frame")
 
+
     def requestFolderHome(self):
         return self.load(self.pyfile.url, decode=True)
 
+
     def removeHtmlCrap(self, content):
         patterns = (r'(type="hidden".*?(name=".*?")?.*?value=".*?")',
                     r'display:none;">(.*?)</(div|span)>',
@@ -95,12 +99,14 @@ class NCryptIn(Crypter):
             content = re.sub(rexpr, "", content)
         return content
 
+
     def isOnline(self):
         if "Your folder does not exist" in self.cleanedHtml:
             self.logDebug("File not m")
             return False
         return True
 
+
     def isProtected(self):
         form = re.search(r'<form.*?name.*?protected.*?>(.*?)</form>', self.cleanedHtml, re.DOTALL)
         if form is not None:
@@ -112,6 +118,7 @@ class NCryptIn(Crypter):
                     return True
         return False
 
+
     def getPackageInfo(self):
         m = re.search(self.NAME_PATTERN, self.html)
         if m:
@@ -123,6 +130,7 @@ class NCryptIn(Crypter):
             self.logDebug("Package info not m, defaulting to pyfile name [%s] and folder [%s]" % (name, folder))
         return name, folder
 
+
     def unlockProtection(self):
 
         postData = {}
@@ -158,7 +166,7 @@ class NCryptIn(Crypter):
             self.logDebug("CircleCaptcha protected")
             captcha_img_url = "http://ncrypt.in/classes/captcha/circlecaptcha.php"
             coords = self.decryptCaptcha(captcha_img_url, forceUser=True, imgtype="png", result_type='positional')
-            self.logDebug("Captcha resolved, coords [%s]" % coords)
+            self.logDebug("Captcha resolved, coords [%s]" % str(coords))
             postData['circle.x'] = coords[0]
             postData['circle.y'] = coords[1]
 
@@ -166,6 +174,7 @@ class NCryptIn(Crypter):
         postData['submit_protected'] = 'Continue to folder'
         return self.load(self.pyfile.url, post=postData, decode=True)
 
+
     def handleErrors(self):
         if self.protection_type == "password":
             if "This password is invalid!" in self.cleanedHtml:
@@ -180,6 +189,7 @@ class NCryptIn(Crypter):
             else:
                 self.correctCaptcha()
 
+
     def handleLinkSource(self, link_source_type):
         # Check for JS engine
         require_js_engine = link_source_type in ("cnl2", "rsdf", "ccf", "dlc")
@@ -199,6 +209,7 @@ class NCryptIn(Crypter):
         else:
             self.fail('unknown source type "%s" (this is probably a bug)' % link_source_type)
 
+
     def handleSingleLink(self):
 
         self.logDebug("Handling Single link")
@@ -211,6 +222,7 @@ class NCryptIn(Crypter):
 
         return package_links
 
+
     def handleCNL2(self):
 
         self.logDebug("Handling CNL2 links")
@@ -226,6 +238,7 @@ class NCryptIn(Crypter):
 
         return package_links
 
+
     def handleContainers(self):
 
         self.logDebug("Handling Container links")
@@ -240,6 +253,7 @@ class NCryptIn(Crypter):
 
         return package_links
 
+
     def handleWebLinks(self):
 
         self.logDebug("Handling Web links")
@@ -256,6 +270,7 @@ class NCryptIn(Crypter):
 
         return package_links
 
+
     def decryptLink(self, link):
         try:
             url = link.replace("link-", "frame-")
@@ -264,6 +279,7 @@ class NCryptIn(Crypter):
         except Exception, detail:
             self.logDebug("Error decrypting link %s, %s" % (link, detail))
 
+
     def _getCipherParams(self):
 
         pattern = r'<input.*?name="%s".*?value="(.*?)"'
@@ -280,6 +296,7 @@ class NCryptIn(Crypter):
         self.logDebug("Detected %d crypted blocks" % len(vcrypted))
         return vcrypted, vjk
 
+
     def _getLinks(self, crypted, jk):
         # Get key
         jreturn = self.js.eval("%s f()" % jk)
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 9d4cfbb43..6e187ed6f 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -11,7 +11,7 @@ from module.plugins.Crypter import Crypter
 class ShareLinksBiz(Crypter):
     __name__ = "ShareLinksBiz"
     __type__ = "crypter"
-    __version__ = "1.13"
+    __version__ = "1.14"
 
     __pattern__ = r'http://(?:www\.)?(share-links|s2l)\.biz/(?P<ID>_?\w+)'
 
@@ -27,6 +27,7 @@ class ShareLinksBiz(Crypter):
         self.html = None
         self.captcha = False
 
+
     def decrypt(self, pyfile):
         # Init
         self.initFile(pyfile)
@@ -61,6 +62,7 @@ class ShareLinksBiz(Crypter):
         # Pack
         self.packages = [(package_name, package_links, package_folder)]
 
+
     def initFile(self, pyfile):
         url = pyfile.url
         if 's2l.biz' in url:
@@ -69,29 +71,34 @@ class ShareLinksBiz(Crypter):
         self.fileId = re.match(self.__pattern__, url).group('ID')
         self.package = pyfile.package()
 
+
     def isOnline(self):
         if "No usable content was found" in self.html:
             self.logDebug("File not found")
             return False
         return True
 
+
     def isPasswordProtected(self):
         if re.search(r'''<form.*?id="passwordForm".*?>''', self.html):
             self.logDebug("Links are protected")
             return True
         return False
 
+
     def isCaptchaProtected(self):
         if '<map id="captchamap"' in self.html:
             self.logDebug("Links are captcha protected")
             return True
         return False
 
+
     def unblockServer(self):
         imgs = re.findall(r"(/template/images/.*?\.gif)", self.html)
         for img in imgs:
             self.load(self.baseUrl + img)
 
+
     def unlockPasswordProtection(self):
         password = self.getPassword()
         self.logDebug("Submitting password [%s] for protected links" % password)
@@ -99,6 +106,7 @@ class ShareLinksBiz(Crypter):
         url = self.baseUrl + '/' + self.fileId
         self.html = self.load(url, post=post, decode=True)
 
+
     def unlockCaptchaProtection(self):
         # Get captcha map
         captchaMap = self._getCaptchaMap()
@@ -109,7 +117,7 @@ class ShareLinksBiz(Crypter):
         captchaUrl = self.baseUrl + '/captcha.gif?d=%s&PHPSESSID=%s' % (m.group(1), m.group(2))
         self.logDebug("Waiting user for correct position")
         coords = self.decryptCaptcha(captchaUrl, forceUser=True, imgtype="gif", result_type='positional')
-        self.logDebug("Captcha resolved, coords [%s]" % coords)
+        self.logDebug("Captcha resolved, coords [%s]" % str(coords))
 
         # Resolve captcha
         href = self._resolveCoords(coords, captchaMap)
@@ -122,6 +130,7 @@ class ShareLinksBiz(Crypter):
         url = self.baseUrl + href
         self.html = self.load(url, decode=True)
 
+
     def _getCaptchaMap(self):
         mapp = {}
         for m in re.finditer(r'<area shape="rect" coords="(.*?)" href="(.*?)"', self.html):
@@ -130,6 +139,7 @@ class ShareLinksBiz(Crypter):
             mapp[rect] = href
         return mapp
 
+
     def _resolveCoords(self, coords, captchaMap):
         x, y = coords
         for rect, href in captchaMap.items():
@@ -137,6 +147,7 @@ class ShareLinksBiz(Crypter):
             if (x >= x1 and x <= x2) and (y >= y1 and y <= y2):
                 return href
 
+
     def handleErrors(self):
         if "The inserted password was wrong" in self.html:
             self.logDebug("Incorrect password, please set right password on 'Edit package' form and retry")
@@ -152,6 +163,7 @@ class ShareLinksBiz(Crypter):
             else:
                 self.correctCaptcha()
 
+
     def getPackageInfo(self):
         name = folder = None
 
@@ -173,6 +185,7 @@ class ShareLinksBiz(Crypter):
         # Return package info
         return name, folder
 
+
     def handleWebLinks(self):
         package_links = []
         self.logDebug("Handling Web links")
@@ -200,6 +213,7 @@ class ShareLinksBiz(Crypter):
                 self.logDebug("Error decrypting Web link [%s], %s" % (ID, detail))
         return package_links
 
+
     def handleContainers(self):
         package_links = []
         self.logDebug("Handling Container links")
@@ -212,6 +226,7 @@ class ShareLinksBiz(Crypter):
             package_links.append(link)
         return package_links
 
+
     def handleCNL2(self):
         package_links = []
         self.logDebug("Handling CNL2 links")
@@ -224,6 +239,7 @@ class ShareLinksBiz(Crypter):
                 self.fail("Unable to decrypt CNL2 links")
         return package_links
 
+
     def _getCipherParams(self):
         # Request CNL2
         code = re.search(r'ClicknLoad.swf\?code=(.*?)"', self.html).group(1)
@@ -244,6 +260,7 @@ class ShareLinksBiz(Crypter):
         # Log and return
         return crypted, jk
 
+
     def _getLinks(self, crypted, jk):
         # Get key
         jreturn = self.js.eval("%s f()" % jk)
-- 
cgit v1.2.3


From 1f48f481740863c7697064bde286a78e977e4a1b Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 19 Oct 2014 15:12:06 +0200
Subject: Update other plugins to support self.error

---
 module/plugins/crypter/DuckCryptInfo.py | 4 ++--
 module/plugins/crypter/SexuriaCom.py    | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index ff7b0a07a..29eeb4453 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -42,7 +42,7 @@ class DuckCryptInfo(Crypter):
         cryptlinks = soup.findAll("div", attrs={"class": "folderbox"})
         self.logDebug("Redirectet to " + str(cryptlinks))
         if not cryptlinks:
-            self.fail('no links m - (Plugin out of date?)')
+            self.error("no links m")
         for clink in cryptlinks:
             if clink.find("a"):
                 self.handleLink(clink.find("a")['href'])
@@ -52,4 +52,4 @@ class DuckCryptInfo(Crypter):
         soup = BeautifulSoup(src)
         self.urls = [soup.find("iframe")['src']]
         if not self.urls:
-            self.logDebug("No link found - (Plugin out of date?)")
+            self.logInfo("No link found")
diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py
index c7939e332..55b6adef4 100644
--- a/module/plugins/crypter/SexuriaCom.py
+++ b/module/plugins/crypter/SexuriaCom.py
@@ -92,7 +92,7 @@ class SexuriaCom(Crypter):
 
         # Inform the user if no link could been extracted
         if linklist == []:
-            self.fail("Could not extract any links (out of date?)")
+            self.error("Could not extract any links")
 
         # Debug log
         self.logDebug("%d supported links" % len(linklist))
-- 
cgit v1.2.3


From 99fcb5c59bcb95311e0eb2213bcf23943d57769c Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 20 Oct 2014 02:10:06 +0200
Subject: [SafelinkingNet] Better way to retrieve password

---
 module/plugins/crypter/SafelinkingNet.py | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index 33b3d73ab..9ef4529cb 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -38,14 +38,12 @@ class SafelinkingNet(Crypter):
                 self.fail("Couldn't find forwarded Link")
 
         else:
-            password = ""
             postData = {"post-protect": "1"}
 
             self.html = self.load(url)
 
             if "link-password" in self.html:
-                password = pyfile.package().password
-                postData['link-password'] = password
+                postData['link-password'] = self.getPassword()
 
             if "altcaptcha" in self.html:
                 for _ in xrange(5):
-- 
cgit v1.2.3


From dabee359dd8c3870e0302e99457e6dd1bb93d736 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 21 Oct 2014 16:01:05 +0200
Subject: Remove needless self.html

---
 module/plugins/crypter/LinkSaveIn.py    | 1 -
 module/plugins/crypter/NCryptIn.py      | 1 -
 module/plugins/crypter/OneKhDe.py       | 1 -
 module/plugins/crypter/RelinkUs.py      | 1 -
 module/plugins/crypter/SexuriaCom.py    | 4 ----
 module/plugins/crypter/ShareLinksBiz.py | 1 -
 6 files changed, 9 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 81768e457..3e37f3610 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -33,7 +33,6 @@ class LinkSaveIn(SimpleCrypter):
 
 
     def setup(self):
-        self.html = None
         self.fileid = None
         self.captcha = False
         self.package = None
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 22fd53384..28a0735a5 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -31,7 +31,6 @@ class NCryptIn(Crypter):
 
     def setup(self):
         self.package = None
-        self.html = None
         self.cleanedHtml = None
         self.links_source_order = ["cnl2", "rsdf", "ccf", "dlc", "web"]
         self.protection_type = None
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index 3b072b3d7..7a2aefe83 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -21,7 +21,6 @@ class OneKhDe(Crypter):
     def __init__(self, parent):
         Crypter.__init__(self, parent)
         self.parent = parent
-        self.html = None
 
     def file_exists(self):
         """ returns True or False
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index dc97fca74..09b83b82b 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -55,7 +55,6 @@ class RelinkUs(Crypter):
         self.fileid = None
         self.package = None
         self.password = None
-        self.html = None
         self.captcha = False
 
 
diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py
index 55b6adef4..68a404f46 100644
--- a/module/plugins/crypter/SexuriaCom.py
+++ b/module/plugins/crypter/SexuriaCom.py
@@ -26,10 +26,6 @@ class SexuriaCom(Crypter):
     PATTERN_REDIRECT_LINKS     = re.compile(r'value="(http://sexuria\.com/out\.php\?id=\d+\&part=\d+\&link=\d+)" readonly', flags=re.I)
 
 
-    def setup(self):
-        self.html = None
-
-
     def decrypt(self, pyfile):
         # Init
         self.pyfile = pyfile
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 6e187ed6f..126a7e5dc 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -24,7 +24,6 @@ class ShareLinksBiz(Crypter):
         self.baseUrl = None
         self.fileId = None
         self.package = None
-        self.html = None
         self.captcha = False
 
 
-- 
cgit v1.2.3


From 0eb6e7ec4a1144dcca824d8add049787d3da1762 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Wed, 22 Oct 2014 19:44:59 +0200
Subject: Two space before function declaration

---
 module/plugins/crypter/DDLMusicOrg.py       | 1 +
 module/plugins/crypter/DailymotionBatch.py  | 6 ++++++
 module/plugins/crypter/DuckCryptInfo.py     | 2 ++
 module/plugins/crypter/EmbeduploadCom.py    | 1 +
 module/plugins/crypter/HoerbuchIn.py        | 1 +
 module/plugins/crypter/LinkdecrypterCom.py  | 5 ++---
 module/plugins/crypter/NCryptIn.py          | 6 ------
 module/plugins/crypter/NetfolderIn.py       | 3 +++
 module/plugins/crypter/OneKhDe.py           | 2 ++
 module/plugins/crypter/TurbobitNetFolder.py | 1 +
 module/plugins/crypter/YoutubeBatch.py      | 7 +++++++
 11 files changed, 26 insertions(+), 9 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py
index a78794b6d..bd5560ed1 100644
--- a/module/plugins/crypter/DDLMusicOrg.py
+++ b/module/plugins/crypter/DDLMusicOrg.py
@@ -22,6 +22,7 @@ class DDLMusicOrg(Crypter):
     def setup(self):
         self.multiDL = False
 
+
     def decrypt(self, pyfile):
         html = self.load(pyfile.url, cookies=True)
 
diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py
index a0ed0e80f..5d2f53b38 100644
--- a/module/plugins/crypter/DailymotionBatch.py
+++ b/module/plugins/crypter/DailymotionBatch.py
@@ -26,6 +26,7 @@ class DailymotionBatch(Crypter):
         page = self.load(url, get=req)
         return json_loads(page)
 
+
     def getPlaylistInfo(self, id):
         ref = "playlist/" + id
         req = {"fields": "name,owner.screenname"}
@@ -38,6 +39,7 @@ class DailymotionBatch(Crypter):
         owner = playlist['owner.screenname']
         return name, owner
 
+
     def _getPlaylists(self, user_id, page=1):
         ref = "user/%s/playlists" % user_id
         req = {"fields": "id", "page": page, "limit": 100}
@@ -53,9 +55,11 @@ class DailymotionBatch(Crypter):
             for item in self._getPlaylists(user_id, page + 1):
                 yield item
 
+
     def getPlaylists(self, user_id):
         return [(id,) + self.getPlaylistInfo(id) for id in self._getPlaylists(user_id)]
 
+
     def _getVideos(self, id, page=1):
         ref = "playlist/%s/videos" % id
         req = {"fields": "url", "page": page, "limit": 100}
@@ -71,9 +75,11 @@ class DailymotionBatch(Crypter):
             for item in self._getVideos(id, page + 1):
                 yield item
 
+
     def getVideos(self, playlist_id):
         return list(self._getVideos(playlist_id))[::-1]
 
+
     def decrypt(self, pyfile):
         m = re.match(self.__pattern__, pyfile.url)
         m_id = m.group("ID")
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 29eeb4453..737ed59ec 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -33,6 +33,7 @@ class DuckCryptInfo(Crypter):
         else:
             self.handleFolder(m)
 
+
     def handleFolder(self, m):
         src = self.load("http://duckcrypt.info/ajax/auth.php?hash=" + str(m.group(2)))
         m = re.match(self.__pattern__, src)
@@ -47,6 +48,7 @@ class DuckCryptInfo(Crypter):
             if clink.find("a"):
                 self.handleLink(clink.find("a")['href'])
 
+
     def handleLink(self, url):
         src = self.load(url)
         soup = BeautifulSoup(src)
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 71c4d5778..8e4f5da07 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -44,6 +44,7 @@ class EmbeduploadCom(Crypter):
         if not self.urls:
             self.fail('Could not extract any links')
 
+
     def getLocation(self, tmp_links):
         new_links = []
         for link in tmp_links:
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index 34e124d82..773e0bf8b 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -40,6 +40,7 @@ class HoerbuchIn(Crypter):
         else:
             self.urls = self.decryptFolder(pyfile.url)
 
+
     def decryptFolder(self, url):
         m = self.protection.search(url)
         if m is None:
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index c72092a5f..0358d1308 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -24,7 +24,6 @@ class LinkdecrypterCom(Crypter):
 
 
     def decrypt(self, pyfile):
-
         self.passwords = self.getPassword().splitlines()
 
         # API not working anymore
@@ -32,8 +31,8 @@ class LinkdecrypterCom(Crypter):
         if not self.urls:
             self.fail('Could not extract any links')
 
-    def decryptAPI(self):
 
+    def decryptAPI(self):
         get_dict = {"t": "link", "url": self.pyfile.url, "lcache": "1"}
         self.html = self.load('http://linkdecrypter.com/api', get=get_dict)
         if self.html.startswith('http://'):
@@ -51,8 +50,8 @@ class LinkdecrypterCom(Crypter):
 
         return None
 
-    def decryptHTML(self):
 
+    def decryptHTML(self):
         retries = 5
 
         post_dict = {"link_cache": "on", "pro_links": self.pyfile.url, "modo_links": "text"}
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 28a0735a5..ef696dbd8 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -131,7 +131,6 @@ class NCryptIn(Crypter):
 
 
     def unlockProtection(self):
-
         postData = {}
 
         form = re.search(r'<form name="protected"(.*?)</form>', self.cleanedHtml, re.DOTALL).group(1)
@@ -210,7 +209,6 @@ class NCryptIn(Crypter):
 
 
     def handleSingleLink(self):
-
         self.logDebug("Handling Single link")
         package_links = []
 
@@ -223,7 +221,6 @@ class NCryptIn(Crypter):
 
 
     def handleCNL2(self):
-
         self.logDebug("Handling CNL2 links")
         package_links = []
 
@@ -239,7 +236,6 @@ class NCryptIn(Crypter):
 
 
     def handleContainers(self):
-
         self.logDebug("Handling Container links")
         package_links = []
 
@@ -254,7 +250,6 @@ class NCryptIn(Crypter):
 
 
     def handleWebLinks(self):
-
         self.logDebug("Handling Web links")
         pattern = r'(http://ncrypt\.in/link-.*?=)'
         links = re.findall(pattern, self.html)
@@ -280,7 +275,6 @@ class NCryptIn(Crypter):
 
 
     def _getCipherParams(self):
-
         pattern = r'<input.*?name="%s".*?value="(.*?)"'
 
         # Get jk
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 027503bd2..03c62ba14 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -40,12 +40,14 @@ class NetfolderIn(SimpleCrypter):
         # Set package
         self.packages = [(package_name, package_links, folder_name)]
 
+
     def isPasswordProtected(self):
         if '<input type="password" name="password"' in self.html:
             self.logDebug("Links are password protected")
             return True
         return False
 
+
     def submitPassword(self):
         # Gather data
         try:
@@ -69,6 +71,7 @@ class NetfolderIn(SimpleCrypter):
 
         return html
 
+
     def getLinks(self):
         links = re.search(r'name="list" value="(.*?)"', self.html).group(1).split(",")
         self.logDebug("Package has %d links" % len(links))
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index 7a2aefe83..188a0a0ef 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -22,11 +22,13 @@ class OneKhDe(Crypter):
         Crypter.__init__(self, parent)
         self.parent = parent
 
+
     def file_exists(self):
         """ returns True or False
         """
         return True
 
+
     def proceed(self, url, location):
         url = self.parent.url
         self.html = self.load(url)
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index 390520d88..1158c5cc1 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -35,6 +35,7 @@ class TurbobitNetFolder(SimpleCrypter):
         else:
             return
 
+
     def getLinks(self):
         id = re.match(self.__pattern__, self.pyfile.url).group("ID")
         fixurl = lambda id: "http://turbobit.net/%s.html" % id
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index e5fd83c4f..e70003ab1 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -33,6 +33,7 @@ class YoutubeBatch(Crypter):
         page = self.load(url, get=req)
         return json_loads(page)
 
+
     def getChannel(self, user):
         channels = self.api_response("channels", {"part": "id,snippet,contentDetails", "forUsername": user, "maxResults": "50"})
         if channels['items']:
@@ -42,6 +43,7 @@ class YoutubeBatch(Crypter):
                     "relatedPlaylists": channel['contentDetails']['relatedPlaylists'],
                     "user": user}  # One lone channel for user?
 
+
     def getPlaylist(self, p_id):
         playlists = self.api_response("playlists", {"part": "snippet", "id": p_id})
         if playlists['items']:
@@ -51,6 +53,7 @@ class YoutubeBatch(Crypter):
                     "channelId": playlist['snippet']['channelId'],
                     "channelTitle": playlist['snippet']['channelTitle']}
 
+
     def _getPlaylists(self, id, token=None):
         req = {"part": "id", "maxResults": "50", "channelId": id}
         if token:
@@ -65,9 +68,11 @@ class YoutubeBatch(Crypter):
             for item in self._getPlaylists(id, playlists['nextPageToken']):
                 yield item
 
+
     def getPlaylists(self, ch_id):
         return map(self.getPlaylist, self._getPlaylists(ch_id))
 
+
     def _getVideosId(self, id, token=None):
         req = {"part": "contentDetails", "maxResults": "50", "playlistId": id}
         if token:
@@ -82,9 +87,11 @@ class YoutubeBatch(Crypter):
             for item in self._getVideosId(id, playlist['nextPageToken']):
                 yield item
 
+
     def getVideosId(self, p_id):
         return list(self._getVideosId(p_id))
 
+
     def decrypt(self, pyfile):
         m = re.match(self.__pattern__, pyfile.url)
         m_id = m.group("ID")
-- 
cgit v1.2.3


From 8cde8385b0224f8fa26758f6c2b6b782e5fb3663 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Thu, 23 Oct 2014 22:34:36 +0200
Subject: Call error instead fail in some plugins

---
 module/plugins/crypter/LinkSaveIn.py | 4 ++--
 module/plugins/crypter/NCryptIn.py   | 2 +-
 module/plugins/crypter/RelinkUs.py   | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 3e37f3610..e601e8173 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -140,7 +140,7 @@ class LinkSaveIn(SimpleCrypter):
         elif type_ == "web":
             return self.handleWebLinks()
         else:
-            self.fail('unknown source type "%s" (this is probably a bug)' % type_)
+            self.error('unknown source type "%s" (this is probably a bug)' % type_)
 
 
     def handleWebLinks(self):
@@ -176,7 +176,7 @@ class LinkSaveIn(SimpleCrypter):
         type_ = type_.lower()
         self.logDebug("Seach for %s Container links" % type_.upper())
         if not type_.isalnum():  # check to prevent broken re-pattern (cnl2,rsdf,ccf,dlc,web are all alpha-numeric)
-            self.fail('unknown container type "%s" (this is probably a bug)' % type_)
+            self.error('unknown container type "%s" (this is probably a bug)' % type_)
         pattern = r'\(\'%s_link\'\).href=unescape\(\'(.*?\.%s)\'\)' % (type_, type_)
         containersLinks = re.findall(pattern, self.html)
         self.logDebug("Found %d %s Container links" % (len(containersLinks), type_.upper()))
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index ef696dbd8..54b6eeba2 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -205,7 +205,7 @@ class NCryptIn(Crypter):
         elif link_source_type == "web":
             return self.handleWebLinks()
         else:
-            self.fail('unknown source type "%s" (this is probably a bug)' % link_source_type)
+            self.error('unknown source type "%s" (this is probably a bug)' % link_source_type)
 
 
     def handleSingleLink(self):
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 09b83b82b..b4ee31568 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -188,7 +188,7 @@ class RelinkUs(Crypter):
         elif source == 'web':
             return self.handleWEBLinks()
         else:
-            self.fail('Unknown source [%s] (this is probably a bug)' % source)
+            self.error('Unknown source [%s] (this is probably a bug)' % source)
 
 
     def handleCNL2Links(self):
-- 
cgit v1.2.3


From 4da90891eb2544ac15a7d512aba8cb357f68ee5f Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 25 Oct 2014 01:11:29 +0200
Subject: Spare code cosmetics

---
 module/plugins/crypter/CzshareComFolder.py   | 2 +-
 module/plugins/crypter/DuckCryptInfo.py      | 2 +-
 module/plugins/crypter/FileserveComFolder.py | 2 +-
 module/plugins/crypter/FreetexthostCom.py    | 2 +-
 module/plugins/crypter/LetitbitNetFolder.py  | 2 +-
 module/plugins/crypter/LinkSaveIn.py         | 5 ++---
 module/plugins/crypter/LinkdecrypterCom.py   | 2 +-
 module/plugins/crypter/LixIn.py              | 6 +++---
 module/plugins/crypter/NCryptIn.py           | 9 ++++-----
 module/plugins/crypter/QuickshareCzFolder.py | 2 +-
 module/plugins/crypter/RelinkUs.py           | 7 +++----
 module/plugins/crypter/SafelinkingNet.py     | 2 +-
 module/plugins/crypter/ShareLinksBiz.py      | 6 ++----
 module/plugins/crypter/UlozToFolder.py       | 2 +-
 14 files changed, 23 insertions(+), 28 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index 9a3881617..2b4d736b7 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -23,7 +23,7 @@ class CzshareComFolder(Crypter):
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
-        m = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
+        m = re.search(self.FOLDER_PATTERN, html, re.S)
         if m is None:
             self.fail("Parse error (FOLDER)")
 
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 737ed59ec..54a2bd8b9 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -43,7 +43,7 @@ class DuckCryptInfo(Crypter):
         cryptlinks = soup.findAll("div", attrs={"class": "folderbox"})
         self.logDebug("Redirectet to " + str(cryptlinks))
         if not cryptlinks:
-            self.error("no links m")
+            self.error("No link found")
         for clink in cryptlinks:
             if clink.find("a"):
                 self.handleLink(clink.find("a")['href'])
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index bdb07cbdc..fd4c28918 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -26,7 +26,7 @@ class FileserveComFolder(Crypter):
 
         new_links = []
 
-        folder = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
+        folder = re.search(self.FOLDER_PATTERN, html, re.S)
         if folder is None:
             self.fail("Parse error (FOLDER)")
 
diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py
index 35ee7791c..402a04c22 100644
--- a/module/plugins/crypter/FreetexthostCom.py
+++ b/module/plugins/crypter/FreetexthostCom.py
@@ -18,7 +18,7 @@ class FreetexthostCom(SimpleCrypter):
 
 
     def getLinks(self):
-        m = re.search(r'<div id="contentsinner">\s*(.+)<div class="viewcount">', self.html, re.DOTALL)
+        m = re.search(r'<div id="contentsinner">\s*(.+)<div class="viewcount">', self.html, re.S)
         if m is None:
             self.fail('Unable to extract links | Plugin may be out-of-date')
         links = m.group(1)
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index c7f6fc738..7f1f8f3d0 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -24,7 +24,7 @@ class LetitbitNetFolder(Crypter):
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
-        folder = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
+        folder = re.search(self.FOLDER_PATTERN, html, re.S)
         if folder is None:
             self.fail("Parse error (FOLDER)")
 
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index e601e8173..b22d87f38 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -125,7 +125,6 @@ class LinkSaveIn(SimpleCrypter):
 
         if self.captcha:
             if "Wrong code. Please retry" in self.html:
-                self.logDebug("Invalid captcha, retrying")
                 self.invalidCaptcha()
                 self.retry()
             else:
@@ -140,7 +139,7 @@ class LinkSaveIn(SimpleCrypter):
         elif type_ == "web":
             return self.handleWebLinks()
         else:
-            self.error('unknown source type "%s" (this is probably a bug)' % type_)
+            self.error('Unknown source type "%s" (this is probably a bug)' % type_)
 
 
     def handleWebLinks(self):
@@ -176,7 +175,7 @@ class LinkSaveIn(SimpleCrypter):
         type_ = type_.lower()
         self.logDebug("Seach for %s Container links" % type_.upper())
         if not type_.isalnum():  # check to prevent broken re-pattern (cnl2,rsdf,ccf,dlc,web are all alpha-numeric)
-            self.error('unknown container type "%s" (this is probably a bug)' % type_)
+            self.error('Unknown container type "%s" (this is probably a bug)' % type_)
         pattern = r'\(\'%s_link\'\).href=unescape\(\'(.*?\.%s)\'\)' % (type_, type_)
         containersLinks = re.findall(pattern, self.html)
         self.logDebug("Found %d %s Container links" % (len(containersLinks), type_.upper()))
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 0358d1308..98efd3d84 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -58,7 +58,7 @@ class LinkdecrypterCom(Crypter):
         self.html = self.load('http://linkdecrypter.com/', post=post_dict, cookies=True, decode=True)
 
         while self.passwords or retries:
-            m = re.search(self.TEXTAREA_PATTERN, self.html, flags=re.DOTALL)
+            m = re.search(self.TEXTAREA_PATTERN, self.html, flags=re.S)
             if m:
                 return [x for x in m.group(1).splitlines() if '[LINK-ERROR]' not in x]
 
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index 32423e228..744066d19 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -27,7 +27,7 @@ class LixIn(Crypter):
 
         m = re.match(self.__pattern__, url)
         if m is None:
-            self.fail("couldn't identify file id")
+            self.error("Unable to identify file ID")
 
         id = m.group("ID")
         self.logDebug("File id is %s" % id)
@@ -36,7 +36,7 @@ class LixIn(Crypter):
 
         m = re.search(self.SUBMIT_PATTERN, self.html)
         if m is None:
-            self.fail("link doesn't seem valid")
+            self.error("Link doesn't seem valid")
 
         m = re.search(self.CAPTCHA_PATTERN, self.html)
         if m:
@@ -54,7 +54,7 @@ class LixIn(Crypter):
 
         m = re.search(self.LINK_PATTERN, self.html)
         if m is None:
-            self.fail("can't find destination url")
+            self.error("Unable to find destination url")
         else:
             self.urls = [m.group("link")]
             self.logDebug("Found link %s, adding to package" % self.urls[0])
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 54b6eeba2..6c31a19f1 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -94,7 +94,7 @@ class NCryptIn(Crypter):
                     r'<table class="global">(.*?)</table>',
                     r'<iframe\s+style="display:none(.*?)</iframe>')
         for pattern in patterns:
-            rexpr = re.compile(pattern, re.DOTALL)
+            rexpr = re.compile(pattern, re.S)
             content = re.sub(rexpr, "", content)
         return content
 
@@ -107,7 +107,7 @@ class NCryptIn(Crypter):
 
 
     def isProtected(self):
-        form = re.search(r'<form.*?name.*?protected.*?>(.*?)</form>', self.cleanedHtml, re.DOTALL)
+        form = re.search(r'<form.*?name.*?protected.*?>(.*?)</form>', self.cleanedHtml, re.S)
         if form is not None:
             content = form.group(1)
             for keyword in ("password", "captcha"):
@@ -133,7 +133,7 @@ class NCryptIn(Crypter):
     def unlockProtection(self):
         postData = {}
 
-        form = re.search(r'<form name="protected"(.*?)</form>', self.cleanedHtml, re.DOTALL).group(1)
+        form = re.search(r'<form name="protected"(.*?)</form>', self.cleanedHtml, re.S).group(1)
 
         # Submit package password
         if "password" in form:
@@ -181,7 +181,6 @@ class NCryptIn(Crypter):
 
         if self.protection_type == "captcha":
             if "The securitycheck was wrong!" in self.cleanedHtml:
-                self.logDebug("Invalid captcha, retrying")
                 self.invalidCaptcha()
                 self.retry()
             else:
@@ -205,7 +204,7 @@ class NCryptIn(Crypter):
         elif link_source_type == "web":
             return self.handleWebLinks()
         else:
-            self.error('unknown source type "%s" (this is probably a bug)' % link_source_type)
+            self.error('Unknown source type "%s" (this is probably a bug)' % link_source_type)
 
 
     def handleSingleLink(self):
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index 60c2d1a40..c368353f7 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -23,7 +23,7 @@ class QuickshareCzFolder(Crypter):
     def decrypt(self, pyfile):
         html = self.load(pyfile.url)
 
-        m = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
+        m = re.search(self.FOLDER_PATTERN, html, re.S)
         if m is None:
             self.fail("Parse error (FOLDER)")
         self.urls.extend(re.findall(self.LINK_PATTERN, m.group(1)))
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index b4ee31568..5c9d9e5ca 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -173,7 +173,6 @@ class RelinkUs(Crypter):
 
         if self.captcha:
             if self.CAPTCHA_ERROR_ROKEN in self.html:
-                self.logDebug("Invalid captcha, retrying")
                 self.invalidCaptcha()
                 self.retry()
             else:
@@ -194,7 +193,7 @@ class RelinkUs(Crypter):
     def handleCNL2Links(self):
         self.logDebug("Search for CNL2 links")
         package_links = []
-        m = re.search(self.CNL2_FORM_REGEX, self.html, re.DOTALL)
+        m = re.search(self.CNL2_FORM_REGEX, self.html, re.S)
         if m is not None:
             cnl2_form = m.group(1)
             try:
@@ -248,11 +247,11 @@ class RelinkUs(Crypter):
     def _getCipherParams(self, cnl2_form):
         # Get jk
         jk_re = self.CNL2_FORMINPUT_REGEX % self.CNL2_JK_KEY
-        vjk = re.findall(jk_re, cnl2_form, re.IGNORECASE)
+        vjk = re.findall(jk_re, cnl2_form, re.I)
 
         # Get crypted
         crypted_re = self.CNL2_FORMINPUT_REGEX % RelinkUs.CNL2_CRYPTED_KEY
-        vcrypted = re.findall(crypted_re, cnl2_form, re.IGNORECASE)
+        vcrypted = re.findall(crypted_re, cnl2_form, re.I)
 
         # Log and return
         self.logDebug("Detected %d crypted blocks" % len(vcrypted))
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index 9ef4529cb..fcc48ca22 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -31,7 +31,7 @@ class SafelinkingNet(Crypter):
         if re.match(self.__pattern__, url).group(1) == "d":
             self.req.http.c.setopt(FOLLOWLOCATION, 0)
             self.load(url)
-            m = re.search("^Location: (.+)$", self.req.http.header, re.MULTILINE)
+            m = re.search("^Location: (.+)$", self.req.http.header, re.M)
             if m:
                 self.urls = [m.group(1)]
             else:
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 126a7e5dc..bc79c5f70 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -121,7 +121,6 @@ class ShareLinksBiz(Crypter):
         # Resolve captcha
         href = self._resolveCoords(coords, captchaMap)
         if href is None:
-            self.logDebug("Invalid captcha resolving, retrying")
             self.invalidCaptcha()
             self.setWait(5, False)
             self.wait()
@@ -154,7 +153,6 @@ class ShareLinksBiz(Crypter):
 
         if self.captcha:
             if "Your choice was wrong" in self.html:
-                self.logDebug("Invalid captcha, retrying")
                 self.invalidCaptcha()
                 self.setWait(5)
                 self.wait()
@@ -168,7 +166,7 @@ class ShareLinksBiz(Crypter):
 
         # Extract from web package header
         title_re = r'<h2><img.*?/>(.*)</h2>'
-        m = re.search(title_re, self.html, re.DOTALL)
+        m = re.search(title_re, self.html, re.S)
         if m is not None:
             title = m.group(1).strip()
             if 'unnamed' not in title:
@@ -202,7 +200,7 @@ class ShareLinksBiz(Crypter):
                 fwLink = self.baseUrl + "/get/frm/" + code
                 response = self.load(fwLink)
                 jscode = re.search(r'<script language="javascript">\s*eval\((.*)\)\s*</script>', response,
-                                   re.DOTALL).group(1)
+                                   re.S).group(1)
                 jscode = self.js.eval("f = %s" % jscode)
                 jslauncher = "window=''; parent={frames:{Main:{location:{href:''}}},location:''}; %s; parent.frames.Main.location.href"
                 dlLink = self.js.eval(jslauncher % jscode)
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index bc8571f7c..241f382ad 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -27,7 +27,7 @@ class UlozToFolder(Crypter):
         new_links = []
         for i in xrange(1, 100):
             self.logInfo("Fetching links from page %i" % i)
-            m = re.search(self.FOLDER_PATTERN, html, re.DOTALL)
+            m = re.search(self.FOLDER_PATTERN, html, re.S)
             if m is None:
                 self.fail("Parse error (FOLDER)")
 
-- 
cgit v1.2.3


From e3f5280529921100f48bb8a79853bf480c7611e4 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 25 Oct 2014 02:53:05 +0200
Subject: Replace single quotes with doubles in self.error and self.fail msg

---
 module/plugins/crypter/ChipDe.py             | 2 +-
 module/plugins/crypter/CzshareComFolder.py   | 2 +-
 module/plugins/crypter/DataHuFolder.py       | 2 +-
 module/plugins/crypter/DuckCryptInfo.py      | 2 +-
 module/plugins/crypter/EmbeduploadCom.py     | 2 +-
 module/plugins/crypter/FileserveComFolder.py | 2 +-
 module/plugins/crypter/FreetexthostCom.py    | 2 +-
 module/plugins/crypter/GooGl.py              | 2 +-
 module/plugins/crypter/LetitbitNetFolder.py  | 2 +-
 module/plugins/crypter/LinkSaveIn.py         | 2 +-
 module/plugins/crypter/LinkdecrypterCom.py   | 2 +-
 module/plugins/crypter/MediafireComFolder.py | 2 +-
 module/plugins/crypter/MultiloadCz.py        | 2 +-
 module/plugins/crypter/NCryptIn.py           | 2 +-
 module/plugins/crypter/QuickshareCzFolder.py | 2 +-
 module/plugins/crypter/RelinkUs.py           | 4 ++--
 module/plugins/crypter/UlozToFolder.py       | 2 +-
 module/plugins/crypter/UploadedToFolder.py   | 2 +-
 module/plugins/crypter/XupPl.py              | 2 +-
 19 files changed, 20 insertions(+), 20 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index 317f73e4c..4ef476895 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -21,7 +21,7 @@ class ChipDe(Crypter):
         try:
             f = re.search(r'"(http://video\.chip\.de/.+)"', self.html)
         except:
-            self.fail('Failed to find the URL')
+            self.fail("Failed to find the URL")
         else:
             self.urls = [f.group(1)]
             self.logDebug("The file URL is %s" % self.urls[0])
diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index 2b4d736b7..8cca84e42 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -29,4 +29,4 @@ class CzshareComFolder(Crypter):
 
         self.urls.extend(re.findall(self.LINK_PATTERN, m.group(1)))
         if not self.urls:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 86e816c04..303b5835c 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -42,4 +42,4 @@ class DataHuFolder(SimpleCrypter):
         if package_links:
             self.packages = [(package_name, package_links, folder_name)]
         else:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 54a2bd8b9..41c245c00 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -27,7 +27,7 @@ class DuckCryptInfo(Crypter):
 
         m = re.match(self.__pattern__, url)
         if m is None:
-            self.fail('Weird error in link')
+            self.fail("Weird error in link")
         if str(m.group(1)) == "link":
             self.handleLink(url)
         else:
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 8e4f5da07..54c8d2df0 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -42,7 +42,7 @@ class EmbeduploadCom(Crypter):
                 self.urls = self.getLocation(tmp_links)
 
         if not self.urls:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
 
 
     def getLocation(self, tmp_links):
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index fd4c28918..42d0f3829 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -35,4 +35,4 @@ class FileserveComFolder(Crypter):
         if new_links:
             self.urls = [map(lambda s: "http://fileserve.com%s" % s, new_links)]
         else:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py
index 402a04c22..73a5c98dc 100644
--- a/module/plugins/crypter/FreetexthostCom.py
+++ b/module/plugins/crypter/FreetexthostCom.py
@@ -20,6 +20,6 @@ class FreetexthostCom(SimpleCrypter):
     def getLinks(self):
         m = re.search(r'<div id="contentsinner">\s*(.+)<div class="viewcount">', self.html, re.S)
         if m is None:
-            self.fail('Unable to extract links | Plugin may be out-of-date')
+            self.fail("Unable to extract links | Plugin may be out-of-date")
         links = m.group(1)
         return links.strip().split("<br />\r\n")
diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py
index 29c5a5f5e..4f551aa42 100644
--- a/module/plugins/crypter/GooGl.py
+++ b/module/plugins/crypter/GooGl.py
@@ -27,4 +27,4 @@ class GooGl(Crypter):
         if 'longUrl' in rep:
             self.urls = [rep['longUrl']]
         else:
-            self.fail('Unable to expand shortened link')
+            self.fail("Unable to expand shortened link")
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index 7f1f8f3d0..af10f248c 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -31,4 +31,4 @@ class LetitbitNetFolder(Crypter):
         self.urls.extend(re.findall(self.LINK_PATTERN, folder.group(0)))
 
         if not self.urls:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index b22d87f38..96d737382 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -74,7 +74,7 @@ class LinkSaveIn(SimpleCrypter):
         if package_links:
             self.packages = [(package_name, package_links, folder_name)]
         else:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
 
 
     def isOnline(self):
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 98efd3d84..8731d1d0f 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -29,7 +29,7 @@ class LinkdecrypterCom(Crypter):
         # API not working anymore
         self.urls = self.decryptHTML()
         if not self.urls:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
 
 
     def decryptAPI(self):
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index fce8be8d6..607c630e4 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -54,4 +54,4 @@ class MediafireComFolder(Crypter):
             self.urls.append(url)
 
         if not self.urls:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index 0c0291147..54e9343e5 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -40,4 +40,4 @@ class MultiloadCz(Crypter):
                     self.urls.extend([x[1] for x in m if x[0] not in ignored_set])
 
         if not self.urls:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 6c31a19f1..a9f04f45f 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -74,7 +74,7 @@ class NCryptIn(Crypter):
 
         # Pack and return links
         if not package_links:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
         self.packages = [(package_name, package_links, folder_name)]
 
 
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index c368353f7..cb6bd4696 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -29,4 +29,4 @@ class QuickshareCzFolder(Crypter):
         self.urls.extend(re.findall(self.LINK_PATTERN, m.group(1)))
 
         if not self.urls:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 5c9d9e5ca..184e1a38e 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -94,7 +94,7 @@ class RelinkUs(Crypter):
         if package_links:
             self.packages = [(package_name, package_links, folder_name)]
         else:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
 
 
     def initPackage(self, pyfile):
@@ -187,7 +187,7 @@ class RelinkUs(Crypter):
         elif source == 'web':
             return self.handleWEBLinks()
         else:
-            self.error('Unknown source [%s] (this is probably a bug)' % source)
+            self.error('Unknown source type "%s" (this is probably a bug)' % source)
 
 
     def handleCNL2Links(self):
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index 241f382ad..8b763dd82 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -43,4 +43,4 @@ class UlozToFolder(Crypter):
         if new_links:
             self.urls = [map(lambda s: "http://ulozto.net/%s" % s, new_links)]
         else:
-            self.fail('Could not extract any links')
+            self.fail("Could not extract any links")
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index a2ceccc68..94afe98ea 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -30,7 +30,7 @@ class UploadedToFolder(SimpleCrypter):
         if m:
             plain_link = 'http://uploaded.net/' + m.group('plain')
         else:
-            self.fail('Parse error - Unable to find plain url list')
+            self.fail("Parse error - Unable to find plain url list")
 
         self.html = self.load(plain_link)
         package_links = self.html.split('\n')[:-1]
diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py
index 5a42a1d1e..1cb1b0b10 100644
--- a/module/plugins/crypter/XupPl.py
+++ b/module/plugins/crypter/XupPl.py
@@ -20,4 +20,4 @@ class XupPl(Crypter):
         if 'location' in header:
             self.urls = [header['location']]
         else:
-            self.fail('Unable to find link')
+            self.fail("Unable to find link")
-- 
cgit v1.2.3


From 1c4bf83881d2a22da3773666a580d51f6b57bfd1 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 25 Oct 2014 03:07:21 +0200
Subject: Avoid gettext conflict due variable `_`

---
 module/plugins/crypter/LixIn.py          | 2 +-
 module/plugins/crypter/SafelinkingNet.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index 744066d19..0c20f6499 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -40,7 +40,7 @@ class LixIn(Crypter):
 
         m = re.search(self.CAPTCHA_PATTERN, self.html)
         if m:
-            for _ in xrange(5):
+            for _i in xrange(5):
                 m = re.search(self.CAPTCHA_PATTERN, self.html)
                 if m:
                     self.logDebug("Trying captcha")
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index fcc48ca22..d9b511cf5 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -46,7 +46,7 @@ class SafelinkingNet(Crypter):
                 postData['link-password'] = self.getPassword()
 
             if "altcaptcha" in self.html:
-                for _ in xrange(5):
+                for _i in xrange(5):
                     m = re.search(self.SOLVEMEDIA_PATTERN, self.html)
                     if m:
                         captchaKey = m.group(1)
-- 
cgit v1.2.3


From 9f2ebe486a3e155fb6a60e07cccb77ab6a772eb2 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 26 Oct 2014 02:31:54 +0200
Subject: Extend translation support in plugins + a lot of code cosmetics and
 typo fixes

---
 module/plugins/crypter/ChipDe.py             |  2 +-
 module/plugins/crypter/CzshareComFolder.py   |  4 ++--
 module/plugins/crypter/DailymotionBatch.py   |  2 +-
 module/plugins/crypter/DataHuFolder.py       |  6 +++---
 module/plugins/crypter/DlProtectCom.py       |  2 +-
 module/plugins/crypter/DuckCryptInfo.py      |  6 +++---
 module/plugins/crypter/EmbeduploadCom.py     |  2 +-
 module/plugins/crypter/FileserveComFolder.py |  4 ++--
 module/plugins/crypter/FreetexthostCom.py    |  2 +-
 module/plugins/crypter/GooGl.py              |  2 +-
 module/plugins/crypter/HoerbuchIn.py         |  2 +-
 module/plugins/crypter/LetitbitNetFolder.py  |  4 ++--
 module/plugins/crypter/LinkSaveIn.py         |  6 +++---
 module/plugins/crypter/LinkdecrypterCom.py   | 10 +++++-----
 module/plugins/crypter/LixIn.py              |  6 +++---
 module/plugins/crypter/MediafireComFolder.py |  2 +-
 module/plugins/crypter/MultiloadCz.py        |  2 +-
 module/plugins/crypter/NCryptIn.py           |  6 +++---
 module/plugins/crypter/NetfolderIn.py        |  2 +-
 module/plugins/crypter/QuickshareCzFolder.py |  4 ++--
 module/plugins/crypter/RelinkUs.py           |  4 ++--
 module/plugins/crypter/SafelinkingNet.py     |  6 +++---
 module/plugins/crypter/SexuriaCom.py         |  2 +-
 module/plugins/crypter/ShareLinksBiz.py      |  4 ++--
 module/plugins/crypter/UlozToFolder.py       |  8 ++++----
 module/plugins/crypter/UploadedToFolder.py   |  2 +-
 module/plugins/crypter/XupPl.py              |  2 +-
 module/plugins/crypter/YoutubeBatch.py       |  2 +-
 28 files changed, 53 insertions(+), 53 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index 4ef476895..26805b5b8 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -21,7 +21,7 @@ class ChipDe(Crypter):
         try:
             f = re.search(r'"(http://video\.chip\.de/.+)"', self.html)
         except:
-            self.fail("Failed to find the URL")
+            self.fail(_("Failed to find the URL"))
         else:
             self.urls = [f.group(1)]
             self.logDebug("The file URL is %s" % self.urls[0])
diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index 8cca84e42..002d9a9c3 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -25,8 +25,8 @@ class CzshareComFolder(Crypter):
 
         m = re.search(self.FOLDER_PATTERN, html, re.S)
         if m is None:
-            self.fail("Parse error (FOLDER)")
+            self.error(_("FOLDER_PATTERN not found"))
 
         self.urls.extend(re.findall(self.LINK_PATTERN, m.group(1)))
         if not self.urls:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py
index 5d2f53b38..3b9b82a0c 100644
--- a/module/plugins/crypter/DailymotionBatch.py
+++ b/module/plugins/crypter/DailymotionBatch.py
@@ -95,7 +95,7 @@ class DailymotionBatch(Crypter):
             self.logDebug("%s playlist\s found on channel \"%s\"" % (len(playlists), m_id))
 
         if not playlists:
-            self.fail("No playlist available")
+            self.fail(_("No playlist available"))
 
         for p_id, p_name, p_owner in playlists:
             p_videos = self.getVideos(p_id)
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 303b5835c..8cea48062 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -28,11 +28,11 @@ class DataHuFolder(SimpleCrypter):
         if u'K\xe9rlek add meg a jelsz\xf3t' in self.html:  # Password protected
             password = self.getPassword()
             if password is '':
-                self.fail("No password specified, please set right password on Add package form and retry")
+                self.fail(_("No password specified, please set right password on Add package form and retry"))
             self.logDebug("The folder is password protected', 'Using password: " + password)
             self.html = self.load(pyfile.url, post={'mappa_pass': password}, decode=True)
             if u'Hib\xe1s jelsz\xf3' in self.html:  # Wrong password
-                self.fail("Incorrect password, please set right password on Add package form and retry")
+                self.fail(_("Incorrect password, please set right password on Add package form and retry"))
 
         package_name, folder_name = self.getPackageNameAndFolder()
 
@@ -42,4 +42,4 @@ class DataHuFolder(SimpleCrypter):
         if package_links:
             self.packages = [(package_name, package_links, folder_name)]
         else:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index e31c62185..4b5f8fc95 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -57,7 +57,7 @@ class DlProtectCom(SimpleCrypter):
 
         for errmsg in (">The password is incorrect", ">The security code is incorrect"):
             if errmsg in self.html:
-                self.fail(errmsg[1:])
+                self.fail(_(errmsg[1:]))
 
         pattern = r'<a href="([^/].+?)" target="_blank">'
         return re.findall(pattern, self.html)
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 41c245c00..126a1f544 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -27,7 +27,7 @@ class DuckCryptInfo(Crypter):
 
         m = re.match(self.__pattern__, url)
         if m is None:
-            self.fail("Weird error in link")
+            self.fail(_("Weird error in link"))
         if str(m.group(1)) == "link":
             self.handleLink(url)
         else:
@@ -43,7 +43,7 @@ class DuckCryptInfo(Crypter):
         cryptlinks = soup.findAll("div", attrs={"class": "folderbox"})
         self.logDebug("Redirectet to " + str(cryptlinks))
         if not cryptlinks:
-            self.error("No link found")
+            self.error(_("No link found"))
         for clink in cryptlinks:
             if clink.find("a"):
                 self.handleLink(clink.find("a")['href'])
@@ -54,4 +54,4 @@ class DuckCryptInfo(Crypter):
         soup = BeautifulSoup(src)
         self.urls = [soup.find("iframe")['src']]
         if not self.urls:
-            self.logInfo("No link found")
+            self.logInfo(_("No link found"))
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 54c8d2df0..6af3194df 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -42,7 +42,7 @@ class EmbeduploadCom(Crypter):
                 self.urls = self.getLocation(tmp_links)
 
         if not self.urls:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
 
 
     def getLocation(self, tmp_links):
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index 42d0f3829..826350f6c 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -28,11 +28,11 @@ class FileserveComFolder(Crypter):
 
         folder = re.search(self.FOLDER_PATTERN, html, re.S)
         if folder is None:
-            self.fail("Parse error (FOLDER)")
+            self.error(_("FOLDER_PATTERN not found"))
 
         new_links.extend(re.findall(self.LINK_PATTERN, folder.group(1)))
 
         if new_links:
             self.urls = [map(lambda s: "http://fileserve.com%s" % s, new_links)]
         else:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py
index 73a5c98dc..3fe51b913 100644
--- a/module/plugins/crypter/FreetexthostCom.py
+++ b/module/plugins/crypter/FreetexthostCom.py
@@ -20,6 +20,6 @@ class FreetexthostCom(SimpleCrypter):
     def getLinks(self):
         m = re.search(r'<div id="contentsinner">\s*(.+)<div class="viewcount">', self.html, re.S)
         if m is None:
-            self.fail("Unable to extract links | Plugin may be out-of-date")
+            self.error(_("Unable to extract links"))
         links = m.group(1)
         return links.strip().split("<br />\r\n")
diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py
index 4f551aa42..c831fb2de 100644
--- a/module/plugins/crypter/GooGl.py
+++ b/module/plugins/crypter/GooGl.py
@@ -27,4 +27,4 @@ class GooGl(Crypter):
         if 'longUrl' in rep:
             self.urls = [rep['longUrl']]
         else:
-            self.fail("Unable to expand shortened link")
+            self.fail(_("Unable to expand shortened link"))
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index 773e0bf8b..d35b2d8bc 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -44,7 +44,7 @@ class HoerbuchIn(Crypter):
     def decryptFolder(self, url):
         m = self.protection.search(url)
         if m is None:
-            self.fail("Bad URL")
+            self.fail(_("Bad URL"))
         url = m.group(0)
 
         self.pyfile.url = url
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index af10f248c..3a31903ae 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -26,9 +26,9 @@ class LetitbitNetFolder(Crypter):
 
         folder = re.search(self.FOLDER_PATTERN, html, re.S)
         if folder is None:
-            self.fail("Parse error (FOLDER)")
+            self.error(_("FOLDER_PATTERN not found"))
 
         self.urls.extend(re.findall(self.LINK_PATTERN, folder.group(0)))
 
         if not self.urls:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 96d737382..aa340f873 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -74,7 +74,7 @@ class LinkSaveIn(SimpleCrypter):
         if package_links:
             self.packages = [(package_name, package_links, folder_name)]
         else:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
 
 
     def isOnline(self):
@@ -121,7 +121,7 @@ class LinkSaveIn(SimpleCrypter):
     def handleErrors(self):
         if "The visitorpassword you have entered is wrong" in self.html:
             self.logDebug("Incorrect password, please set right password on 'Edit package' form and retry")
-            self.fail("Incorrect password, please set right password on 'Edit package' form and retry")
+            self.fail(_("Incorrect password, please set right password on 'Edit package' form and retry"))
 
         if self.captcha:
             if "Wrong code. Please retry" in self.html:
@@ -196,7 +196,7 @@ class LinkSaveIn(SimpleCrypter):
                 for (crypted, jk) in zip(vcrypted, vjk):
                     package_links.extend(self._getLinks(crypted, jk))
             except:
-                self.fail("Unable to decrypt CNL2 links")
+                self.fail(_("Unable to decrypt CNL2 links"))
         return package_links
 
 
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 8731d1d0f..0848338ec 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -29,7 +29,7 @@ class LinkdecrypterCom(Crypter):
         # API not working anymore
         self.urls = self.decryptHTML()
         if not self.urls:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
 
 
     def decryptAPI(self):
@@ -46,7 +46,7 @@ class LinkdecrypterCom(Crypter):
 
         self.logError("API", self.html)
         if self.html == 'INTERRUPTION(PASSWORD)':
-            self.fail("No or incorrect password")
+            self.fail(_("No or incorrect password"))
 
         return None
 
@@ -69,7 +69,7 @@ class LinkdecrypterCom(Crypter):
 
                 m = re.search(r"<p><i><b>([^<]+)</b></i></p>", self.html)
                 msg = m.group(1) if m else ""
-                self.logInfo("Captcha protected link", result_type, msg)
+                self.logInfo(_("Captcha protected link"), result_type, msg)
 
                 captcha = self.decryptCaptcha(captcha_url, result_type=result_type)
                 if result_type == "positional":
@@ -80,10 +80,10 @@ class LinkdecrypterCom(Crypter):
             elif self.PASSWORD_PATTERN in self.html:
                 if self.passwords:
                     password = self.passwords.pop(0)
-                    self.logInfo("Password protected link, trying " + password)
+                    self.logInfo(_("Password protected link, trying ") + password)
                     self.html = self.load('http://linkdecrypter.com/', post={'password': password}, decode=True)
                 else:
-                    self.fail("No or incorrect password")
+                    self.fail(_("No or incorrect password"))
 
             else:
                 retries -= 1
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index 0c20f6499..4a9dc7769 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -27,7 +27,7 @@ class LixIn(Crypter):
 
         m = re.match(self.__pattern__, url)
         if m is None:
-            self.error("Unable to identify file ID")
+            self.error(_("Unable to identify file ID"))
 
         id = m.group("ID")
         self.logDebug("File id is %s" % id)
@@ -36,7 +36,7 @@ class LixIn(Crypter):
 
         m = re.search(self.SUBMIT_PATTERN, self.html)
         if m is None:
-            self.error("Link doesn't seem valid")
+            self.error(_("Link doesn't seem valid"))
 
         m = re.search(self.CAPTCHA_PATTERN, self.html)
         if m:
@@ -54,7 +54,7 @@ class LixIn(Crypter):
 
         m = re.search(self.LINK_PATTERN, self.html)
         if m is None:
-            self.error("Unable to find destination url")
+            self.error(_("Unable to find destination url"))
         else:
             self.urls = [m.group("link")]
             self.logDebug("Found link %s, adding to package" % self.urls[0])
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index 607c630e4..ae8f3fd44 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -54,4 +54,4 @@ class MediafireComFolder(Crypter):
             self.urls.append(url)
 
         if not self.urls:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index 54e9343e5..e894c8c5d 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -40,4 +40,4 @@ class MultiloadCz(Crypter):
                     self.urls.extend([x[1] for x in m if x[0] not in ignored_set])
 
         if not self.urls:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index a9f04f45f..801afc50b 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -74,7 +74,7 @@ class NCryptIn(Crypter):
 
         # Pack and return links
         if not package_links:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
         self.packages = [(package_name, package_links, folder_name)]
 
 
@@ -177,7 +177,7 @@ class NCryptIn(Crypter):
         if self.protection_type == "password":
             if "This password is invalid!" in self.cleanedHtml:
                 self.logDebug("Incorrect password, please set right password on 'Edit package' form and retry")
-                self.fail("Incorrect password, please set right password on 'Edit package' form and retry")
+                self.fail(_("Incorrect password, please set right password on 'Edit package' form and retry"))
 
         if self.protection_type == "captcha":
             if "The securitycheck was wrong!" in self.cleanedHtml:
@@ -229,7 +229,7 @@ class NCryptIn(Crypter):
                 for (crypted, jk) in zip(vcrypted, vjk):
                     package_links.extend(self._getLinks(crypted, jk))
             except:
-                self.fail("Unable to decrypt CNL2 links")
+                self.fail(_("Unable to decrypt CNL2 links"))
 
         return package_links
 
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 03c62ba14..01774362c 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -29,7 +29,7 @@ class NetfolderIn(SimpleCrypter):
         if self.isPasswordProtected():
             self.html = self.submitPassword()
             if not self.html:
-                self.fail("Incorrect password, please set right password on Add package form and retry")
+                self.fail(_("Incorrect password, please set right password on Add package form and retry"))
 
         # Get package name and folder
         (package_name, folder_name) = self.getPackageNameAndFolder()
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index cb6bd4696..7b2d336b3 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -25,8 +25,8 @@ class QuickshareCzFolder(Crypter):
 
         m = re.search(self.FOLDER_PATTERN, html, re.S)
         if m is None:
-            self.fail("Parse error (FOLDER)")
+            self.error(_("FOLDER_PATTERN not found"))
         self.urls.extend(re.findall(self.LINK_PATTERN, m.group(1)))
 
         if not self.urls:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 184e1a38e..a71c736b5 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -94,7 +94,7 @@ class RelinkUs(Crypter):
         if package_links:
             self.packages = [(package_name, package_links, folder_name)]
         else:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
 
 
     def initPackage(self, pyfile):
@@ -169,7 +169,7 @@ class RelinkUs(Crypter):
         if self.PASSWORD_ERROR_ROKEN in self.html:
             msg = "Incorrect password, please set right password on 'Edit package' form and retry"
             self.logDebug(msg)
-            self.fail(msg)
+            self.fail(_(msg))
 
         if self.captcha:
             if self.CAPTCHA_ERROR_ROKEN in self.html:
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index d9b511cf5..fbeaa406c 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -35,7 +35,7 @@ class SafelinkingNet(Crypter):
             if m:
                 self.urls = [m.group(1)]
             else:
-                self.fail("Couldn't find forwarded Link")
+                self.fail(_("Couldn't find forwarded Link"))
 
         else:
             postData = {"post-protect": "1"}
@@ -53,7 +53,7 @@ class SafelinkingNet(Crypter):
                         captcha = SolveMedia(self)
                         captchaProvider = "Solvemedia"
                     else:
-                        self.fail("Error parsing captcha")
+                        self.fail(_("Error parsing captcha"))
 
                     challenge, response = captcha.challenge(captchaKey)
                     postData['adcopy_challenge'] = challenge
@@ -61,7 +61,7 @@ class SafelinkingNet(Crypter):
 
                     self.html = self.load(url, post=postData)
                     if "The password you entered was incorrect" in self.html:
-                        self.fail("Incorrect Password")
+                        self.fail(_("Incorrect Password"))
                     if not "The CAPTCHA code you entered was wrong" in self.html:
                         break
 
diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py
index 68a404f46..6b9b2c5f6 100644
--- a/module/plugins/crypter/SexuriaCom.py
+++ b/module/plugins/crypter/SexuriaCom.py
@@ -88,7 +88,7 @@ class SexuriaCom(Crypter):
 
         # Inform the user if no link could been extracted
         if linklist == []:
-            self.error("Could not extract any links")
+            self.error(_("Could not extract any links"))
 
         # Debug log
         self.logDebug("%d supported links" % len(linklist))
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index bc79c5f70..8e89c98f9 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -149,7 +149,7 @@ class ShareLinksBiz(Crypter):
     def handleErrors(self):
         if "The inserted password was wrong" in self.html:
             self.logDebug("Incorrect password, please set right password on 'Edit package' form and retry")
-            self.fail("Incorrect password, please set right password on 'Edit package' form and retry")
+            self.fail(_("Incorrect password, please set right password on 'Edit package' form and retry"))
 
         if self.captcha:
             if "Your choice was wrong" in self.html:
@@ -233,7 +233,7 @@ class ShareLinksBiz(Crypter):
                 (crypted, jk) = self._getCipherParams()
                 package_links.extend(self._getLinks(crypted, jk))
             except:
-                self.fail("Unable to decrypt CNL2 links")
+                self.fail(_("Unable to decrypt CNL2 links"))
         return package_links
 
 
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index 8b763dd82..acb360ee4 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -26,10 +26,10 @@ class UlozToFolder(Crypter):
 
         new_links = []
         for i in xrange(1, 100):
-            self.logInfo("Fetching links from page %i" % i)
+            self.logInfo(_("Fetching links from page %i") % i)
             m = re.search(self.FOLDER_PATTERN, html, re.S)
             if m is None:
-                self.fail("Parse error (FOLDER)")
+                self.error(_("FOLDER_PATTERN not found"))
 
             new_links.extend(re.findall(self.LINK_PATTERN, m.group(1)))
             m = re.search(self.NEXT_PAGE_PATTERN, html)
@@ -38,9 +38,9 @@ class UlozToFolder(Crypter):
             else:
                 break
         else:
-            self.logInfo("Limit of 99 pages reached, aborting")
+            self.logInfo(_("Limit of 99 pages reached, aborting"))
 
         if new_links:
             self.urls = [map(lambda s: "http://ulozto.net/%s" % s, new_links)]
         else:
-            self.fail("Could not extract any links")
+            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index 94afe98ea..8f50f80aa 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -30,7 +30,7 @@ class UploadedToFolder(SimpleCrypter):
         if m:
             plain_link = 'http://uploaded.net/' + m.group('plain')
         else:
-            self.fail("Parse error - Unable to find plain url list")
+            self.error(_("Unable to find plain url list"))
 
         self.html = self.load(plain_link)
         package_links = self.html.split('\n')[:-1]
diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py
index 1cb1b0b10..3323d0ff4 100644
--- a/module/plugins/crypter/XupPl.py
+++ b/module/plugins/crypter/XupPl.py
@@ -20,4 +20,4 @@ class XupPl(Crypter):
         if 'location' in header:
             self.urls = [header['location']]
         else:
-            self.fail("Unable to find link")
+            self.fail(_("Unable to find link"))
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index e70003ab1..c5bcdd72d 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -123,7 +123,7 @@ class YoutubeBatch(Crypter):
             playlists = [self.getPlaylist(m_id)]
 
         if not playlists:
-            self.fail("No playlist available")
+            self.fail(_("No playlist available"))
 
         addedvideos = []
         urlize = lambda x: "https://www.youtube.com/watch?v=" + x
-- 
cgit v1.2.3


From 146fe1e309c33ab149bfaf58ad86c0dd4fb9b156 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 27 Oct 2014 01:18:45 +0100
Subject: Spare code cosmetics

---
 module/plugins/crypter/EmbeduploadCom.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 6af3194df..b968bb86d 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -30,14 +30,18 @@ class EmbeduploadCom(Crypter):
         if m:
             prefered_set = set(self.getConfig("preferedHoster").split('|'))
             prefered_set = map(lambda s: s.lower().split('.')[0], prefered_set)
-            print "PF", prefered_set
+
+            self.logDebug("PF: %s" % prefered_set)
+
             tmp_links.extend([x[1] for x in m if x[0] in prefered_set])
             self.urls = self.getLocation(tmp_links)
 
             if not self.urls:
                 ignored_set = set(self.getConfig("ignoredHoster").split('|'))
                 ignored_set = map(lambda s: s.lower().split('.')[0], ignored_set)
-                print "IG", ignored_set
+
+                self.logDebug("IG: %s" % ignored_set)
+
                 tmp_links.extend([x[1] for x in m if x[0] not in ignored_set])
                 self.urls = self.getLocation(tmp_links)
 
-- 
cgit v1.2.3


From aa0751bcfd995e308bcd586a6965c75e68b1274b Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 27 Oct 2014 23:05:13 +0100
Subject: Code cosmetics

---
 module/plugins/crypter/CzshareComFolder.py   | 2 --
 module/plugins/crypter/DataHuFolder.py       | 2 --
 module/plugins/crypter/EmbeduploadCom.py     | 3 ---
 module/plugins/crypter/FileserveComFolder.py | 2 --
 module/plugins/crypter/LetitbitNetFolder.py  | 3 ---
 module/plugins/crypter/LinkSaveIn.py         | 2 --
 module/plugins/crypter/LinkdecrypterCom.py   | 2 --
 module/plugins/crypter/MediafireComFolder.py | 3 ---
 module/plugins/crypter/MultiloadCz.py        | 3 ---
 module/plugins/crypter/NCryptIn.py           | 5 ++---
 module/plugins/crypter/QuickshareCzFolder.py | 3 ---
 module/plugins/crypter/RelinkUs.py           | 2 --
 module/plugins/crypter/SexuriaCom.py         | 4 ----
 module/plugins/crypter/UlozToFolder.py       | 2 --
 14 files changed, 2 insertions(+), 36 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index 002d9a9c3..f88693eb0 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -28,5 +28,3 @@ class CzshareComFolder(Crypter):
             self.error(_("FOLDER_PATTERN not found"))
 
         self.urls.extend(re.findall(self.LINK_PATTERN, m.group(1)))
-        if not self.urls:
-            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 8cea48062..525e201ce 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -41,5 +41,3 @@ class DataHuFolder(SimpleCrypter):
 
         if package_links:
             self.packages = [(package_name, package_links, folder_name)]
-        else:
-            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index b968bb86d..ea29891b9 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -45,9 +45,6 @@ class EmbeduploadCom(Crypter):
                 tmp_links.extend([x[1] for x in m if x[0] not in ignored_set])
                 self.urls = self.getLocation(tmp_links)
 
-        if not self.urls:
-            self.fail(_("Could not extract any links"))
-
 
     def getLocation(self, tmp_links):
         new_links = []
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index 826350f6c..d30ccb6c1 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -34,5 +34,3 @@ class FileserveComFolder(Crypter):
 
         if new_links:
             self.urls = [map(lambda s: "http://fileserve.com%s" % s, new_links)]
-        else:
-            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index 3a31903ae..ba40ded99 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -29,6 +29,3 @@ class LetitbitNetFolder(Crypter):
             self.error(_("FOLDER_PATTERN not found"))
 
         self.urls.extend(re.findall(self.LINK_PATTERN, folder.group(0)))
-
-        if not self.urls:
-            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index aa340f873..644245e25 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -73,8 +73,6 @@ class LinkSaveIn(SimpleCrypter):
         # Pack
         if package_links:
             self.packages = [(package_name, package_links, folder_name)]
-        else:
-            self.fail(_("Could not extract any links"))
 
 
     def isOnline(self):
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 0848338ec..7cedf4d91 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -28,8 +28,6 @@ class LinkdecrypterCom(Crypter):
 
         # API not working anymore
         self.urls = self.decryptHTML()
-        if not self.urls:
-            self.fail(_("Could not extract any links"))
 
 
     def decryptAPI(self):
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index ae8f3fd44..69bfe4092 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -52,6 +52,3 @@ class MediafireComFolder(Crypter):
             self.offline()
         else:
             self.urls.append(url)
-
-        if not self.urls:
-            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index e894c8c5d..5ee17225b 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -38,6 +38,3 @@ class MultiloadCz(Crypter):
                 if not self.urls:
                     ignored_set = set(self.getConfig("ignoredHoster").split('|'))
                     self.urls.extend([x[1] for x in m if x[0] not in ignored_set])
-
-        if not self.urls:
-            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 801afc50b..7d82cba7a 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -73,9 +73,8 @@ class NCryptIn(Crypter):
             package_links = set(package_links)
 
         # Pack and return links
-        if not package_links:
-            self.fail(_("Could not extract any links"))
-        self.packages = [(package_name, package_links, folder_name)]
+        if package_links:
+            self.packages = [(package_name, package_links, folder_name)]
 
 
     def isSingleLink(self):
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index 7b2d336b3..d9048655e 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -27,6 +27,3 @@ class QuickshareCzFolder(Crypter):
         if m is None:
             self.error(_("FOLDER_PATTERN not found"))
         self.urls.extend(re.findall(self.LINK_PATTERN, m.group(1)))
-
-        if not self.urls:
-            self.fail(_("Could not extract any links"))
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index a71c736b5..135268dcc 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -93,8 +93,6 @@ class RelinkUs(Crypter):
         # Pack
         if package_links:
             self.packages = [(package_name, package_links, folder_name)]
-        else:
-            self.fail(_("Could not extract any links"))
 
 
     def initPackage(self, pyfile):
diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py
index 6b9b2c5f6..20559e9d7 100644
--- a/module/plugins/crypter/SexuriaCom.py
+++ b/module/plugins/crypter/SexuriaCom.py
@@ -86,10 +86,6 @@ class SexuriaCom(Crypter):
                     else:
                         linklist.append(finallink)
 
-        # Inform the user if no link could been extracted
-        if linklist == []:
-            self.error(_("Could not extract any links"))
-
         # Debug log
         self.logDebug("%d supported links" % len(linklist))
         for i, link in enumerate(linklist):
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index acb360ee4..feaec2e8d 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -42,5 +42,3 @@ class UlozToFolder(Crypter):
 
         if new_links:
             self.urls = [map(lambda s: "http://ulozto.net/%s" % s, new_links)]
-        else:
-            self.fail(_("Could not extract any links"))
-- 
cgit v1.2.3


From 885f8ed782e64d9e73367905e642a84d0a8999f1 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 28 Oct 2014 04:01:38 +0100
Subject: Update __config__

---
 module/plugins/crypter/BitshareComFolder.py       | 2 ++
 module/plugins/crypter/C1neonCom.py               | 1 +
 module/plugins/crypter/ChipDe.py                  | 2 ++
 module/plugins/crypter/CrockoComFolder.py         | 2 ++
 module/plugins/crypter/CryptItCom.py              | 1 +
 module/plugins/crypter/CzshareComFolder.py        | 2 ++
 module/plugins/crypter/DDLMusicOrg.py             | 2 ++
 module/plugins/crypter/DailymotionBatch.py        | 2 ++
 module/plugins/crypter/DataHuFolder.py            | 2 ++
 module/plugins/crypter/DdlstorageComFolder.py     | 1 +
 module/plugins/crypter/DepositfilesComFolder.py   | 2 ++
 module/plugins/crypter/Dereferer.py               | 2 ++
 module/plugins/crypter/DevhostStFolder.py         | 2 ++
 module/plugins/crypter/DlProtectCom.py            | 2 ++
 module/plugins/crypter/DontKnowMe.py              | 2 ++
 module/plugins/crypter/DuckCryptInfo.py           | 2 ++
 module/plugins/crypter/DuploadOrgFolder.py        | 2 ++
 module/plugins/crypter/EasybytezComFolder.py      | 2 ++
 module/plugins/crypter/EmbeduploadCom.py          | 6 ++++--
 module/plugins/crypter/FilebeerInfoFolder.py      | 1 +
 module/plugins/crypter/FilecloudIoFolder.py       | 2 ++
 module/plugins/crypter/FilefactoryComFolder.py    | 2 ++
 module/plugins/crypter/FilerNetFolder.py          | 2 ++
 module/plugins/crypter/FileserveComFolder.py      | 2 ++
 module/plugins/crypter/FilestubeCom.py            | 2 ++
 module/plugins/crypter/FiletramCom.py             | 2 ++
 module/plugins/crypter/FiredriveComFolder.py      | 1 +
 module/plugins/crypter/FourChanOrg.py             | 2 ++
 module/plugins/crypter/FreakhareComFolder.py      | 2 ++
 module/plugins/crypter/FreetexthostCom.py         | 2 ++
 module/plugins/crypter/FshareVnFolder.py          | 2 ++
 module/plugins/crypter/GooGl.py                   | 2 ++
 module/plugins/crypter/HoerbuchIn.py              | 2 ++
 module/plugins/crypter/HotfileComFolder.py        | 1 +
 module/plugins/crypter/ILoadTo.py                 | 1 +
 module/plugins/crypter/ImgurComAlbum.py           | 2 ++
 module/plugins/crypter/JunocloudMeFolder.py       | 2 ++
 module/plugins/crypter/LetitbitNetFolder.py       | 2 ++
 module/plugins/crypter/LinkSaveIn.py              | 2 ++
 module/plugins/crypter/LinkdecrypterCom.py        | 2 ++
 module/plugins/crypter/LixIn.py                   | 2 ++
 module/plugins/crypter/LofCc.py                   | 1 +
 module/plugins/crypter/MBLinkInfo.py              | 1 +
 module/plugins/crypter/MediafireComFolder.py      | 2 ++
 module/plugins/crypter/MegaRapidCzFolder.py       | 2 ++
 module/plugins/crypter/Movie2kTo.py               | 1 +
 module/plugins/crypter/MultiUpOrg.py              | 2 ++
 module/plugins/crypter/MultiloadCz.py             | 6 ++++--
 module/plugins/crypter/MultiuploadCom.py          | 1 +
 module/plugins/crypter/NCryptIn.py                | 2 ++
 module/plugins/crypter/NetfolderIn.py             | 2 ++
 module/plugins/crypter/NosvideoCom.py             | 2 ++
 module/plugins/crypter/OneKhDe.py                 | 2 ++
 module/plugins/crypter/OronComFolder.py           | 1 +
 module/plugins/crypter/PastebinCom.py             | 2 ++
 module/plugins/crypter/QuickshareCzFolder.py      | 2 ++
 module/plugins/crypter/RSLayerCom.py              | 1 +
 module/plugins/crypter/RapidfileshareNetFolder.py | 2 ++
 module/plugins/crypter/RelinkUs.py                | 2 ++
 module/plugins/crypter/SafelinkingNet.py          | 2 ++
 module/plugins/crypter/SecuredIn.py               | 1 +
 module/plugins/crypter/SexuriaCom.py              | 2 ++
 module/plugins/crypter/ShareLinksBiz.py           | 2 ++
 module/plugins/crypter/SpeedLoadOrgFolder.py      | 1 +
 module/plugins/crypter/StealthTo.py               | 1 +
 module/plugins/crypter/TnyCz.py                   | 2 ++
 module/plugins/crypter/TrailerzoneInfo.py         | 1 +
 module/plugins/crypter/TurbobitNetFolder.py       | 2 ++
 module/plugins/crypter/TusfilesNetFolder.py       | 2 ++
 module/plugins/crypter/UlozToFolder.py            | 2 ++
 module/plugins/crypter/UploadableChFolder.py      | 2 ++
 module/plugins/crypter/UploadedToFolder.py        | 2 ++
 module/plugins/crypter/WiiReloadedOrg.py          | 1 +
 module/plugins/crypter/XFileSharingProFolder.py   | 2 ++
 module/plugins/crypter/XupPl.py                   | 2 ++
 module/plugins/crypter/YoutubeBatch.py            | 4 +++-
 76 files changed, 139 insertions(+), 5 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py
index b5c380356..aa0422249 100644
--- a/module/plugins/crypter/BitshareComFolder.py
+++ b/module/plugins/crypter/BitshareComFolder.py
@@ -9,6 +9,8 @@ class BitshareComFolder(SimpleCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?bitshare\.com/\?d=\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Bitshare.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/C1neonCom.py b/module/plugins/crypter/C1neonCom.py
index f01bf890d..09f5d64b9 100644
--- a/module/plugins/crypter/C1neonCom.py
+++ b/module/plugins/crypter/C1neonCom.py
@@ -9,6 +9,7 @@ class C1neonCom(DeadCrypter):
     __version__ = "0.05"
 
     __pattern__ = r'http://(?:www\.)?c1neon\.com/.*?'
+    __config__  = []
 
     __description__ = """C1neon.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index 26805b5b8..befa9ddc2 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -10,6 +10,8 @@ class ChipDe(Crypter):
     __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?chip\.de/video/.*\.html'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Chip.de decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/CrockoComFolder.py b/module/plugins/crypter/CrockoComFolder.py
index d101ccb84..ba19ae201 100644
--- a/module/plugins/crypter/CrockoComFolder.py
+++ b/module/plugins/crypter/CrockoComFolder.py
@@ -9,6 +9,8 @@ class CrockoComFolder(SimpleCrypter):
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?crocko\.com/f/.*'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Crocko.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/CryptItCom.py b/module/plugins/crypter/CryptItCom.py
index 372938119..88de6b83c 100644
--- a/module/plugins/crypter/CryptItCom.py
+++ b/module/plugins/crypter/CryptItCom.py
@@ -9,6 +9,7 @@ class CryptItCom(DeadCrypter):
     __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?crypt-it\.com/(s|e|d|c)/\w+'
+    __config__  = []
 
     __description__ = """Crypt-it.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index f88693eb0..53e9e7c36 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -10,6 +10,8 @@ class CzshareComFolder(Crypter):
     __version__ = "0.2"
 
     __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/folders/.*'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Czshare.com folder decrypter plugin, now Sdilej.cz"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py
index bd5560ed1..ccd48cfac 100644
--- a/module/plugins/crypter/DDLMusicOrg.py
+++ b/module/plugins/crypter/DDLMusicOrg.py
@@ -13,6 +13,8 @@ class DDLMusicOrg(Crypter):
     __version__ = "0.3"
 
     __pattern__ = r'http://(?:www\.)?ddl-music\.org/captcha/ddlm_cr\d\.php\?\d+\?\d+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Ddl-music.org decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py
index 3b9b82a0c..928746745 100644
--- a/module/plugins/crypter/DailymotionBatch.py
+++ b/module/plugins/crypter/DailymotionBatch.py
@@ -15,6 +15,8 @@ class DailymotionBatch(Crypter):
     __version__ = "0.01"
 
     __pattern__ = r'https?://(?:www\.)?dailymotion\.com/((playlists/)?(?P<TYPE>playlist|user)/)?(?P<ID>[\w^_]+)(?(TYPE)|#)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Dailymotion.com channel & playlist decrypter"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 525e201ce..13266e984 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -11,6 +11,8 @@ class DataHuFolder(SimpleCrypter):
     __version__ = "0.04"
 
     __pattern__ = r'http://(?:www\.)?data\.hu/dir/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Data.hu folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DdlstorageComFolder.py b/module/plugins/crypter/DdlstorageComFolder.py
index e3fd88084..f82ec054b 100644
--- a/module/plugins/crypter/DdlstorageComFolder.py
+++ b/module/plugins/crypter/DdlstorageComFolder.py
@@ -9,6 +9,7 @@ class DdlstorageComFolder(DeadCrypter):
     __version__ = "0.03"
 
     __pattern__ = r'https?://(?:www\.)?ddlstorage\.com/folder/\w+'
+    __config__  = []
 
     __description__ = """DDLStorage.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DepositfilesComFolder.py b/module/plugins/crypter/DepositfilesComFolder.py
index 4a15fcef9..05a259daa 100644
--- a/module/plugins/crypter/DepositfilesComFolder.py
+++ b/module/plugins/crypter/DepositfilesComFolder.py
@@ -9,6 +9,8 @@ class DepositfilesComFolder(SimpleCrypter):
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?depositfiles\.com/folders/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Depositfiles.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py
index b6e269000..711a8201a 100644
--- a/module/plugins/crypter/Dereferer.py
+++ b/module/plugins/crypter/Dereferer.py
@@ -13,6 +13,8 @@ class Dereferer(Crypter):
     __version__ = "0.1"
 
     __pattern__ = r'https?://([^/]+)/.*?(?P<url>(ht|f)tps?(://|%3A%2F%2F).*)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Crypter for dereferers"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py
index 1839257e0..8734b4dcc 100644
--- a/module/plugins/crypter/DevhostStFolder.py
+++ b/module/plugins/crypter/DevhostStFolder.py
@@ -16,6 +16,8 @@ class DevhostStFolder(SimpleCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?d-h\.st/users/(?P<USER>\w+)(/\?fld_id=(?P<ID>\d+))?'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """d-h.st folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index 4b5f8fc95..40bf521a8 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -14,6 +14,8 @@ class DlProtectCom(SimpleCrypter):
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?dl-protect\.com/((en|fr)/)?(?P<ID>\w+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Dl-protect.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index 962e56bfd..89a0be6c4 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -13,6 +13,8 @@ class DontKnowMe(Crypter):
     __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?dontknow\.me/at/\?.+$'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """DontKnow.me decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 126a1f544..3bbdb0180 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -13,6 +13,8 @@ class DuckCryptInfo(Crypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?duckcrypt\.info/(folder|wait|link)/(\w+)/?(\w*)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """DuckCrypt.info decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/DuploadOrgFolder.py b/module/plugins/crypter/DuploadOrgFolder.py
index d7d009b56..69da36e5b 100644
--- a/module/plugins/crypter/DuploadOrgFolder.py
+++ b/module/plugins/crypter/DuploadOrgFolder.py
@@ -9,6 +9,8 @@ class DuploadOrgFolder(SimpleCrypter):
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?dupload\.org/folder/\d+/'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Dupload.org folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index 4ced45355..e89444271 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -9,6 +9,8 @@ class EasybytezComFolder(XFSPCrypter):
     __version__ = "0.09"
 
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Easybytez.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index ea29891b9..4d862c7e0 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -11,8 +11,10 @@ class EmbeduploadCom(Crypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?embedupload\.com/\?d=.*'
-    __config__ = [("preferedHoster", "str", "Prefered hoster list (bar-separated) ", "embedupload"),
-                  ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
+    __config__ = [("use_subfolder", "bool", "Save package to subfolder", True),
+                  ("subfolder_per_package", "bool", "Create a subfolder for each package", True),
+                  ("preferedHoster", "str", "Prefered hoster list (bar-separated)", "embedupload"),
+                  ("ignoredHoster", "str", "Ignored hoster list (bar-separated)", "")]
 
     __description__ = """EmbedUpload.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FilebeerInfoFolder.py b/module/plugins/crypter/FilebeerInfoFolder.py
index 833616747..f2b839baa 100644
--- a/module/plugins/crypter/FilebeerInfoFolder.py
+++ b/module/plugins/crypter/FilebeerInfoFolder.py
@@ -9,6 +9,7 @@ class FilebeerInfoFolder(DeadCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?filebeer\.info/(\d+~f).*'
+    __config__  = []
 
     __description__ = """Filebeer.info folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
index c7d9e6d8a..40522d0f4 100644
--- a/module/plugins/crypter/FilecloudIoFolder.py
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -9,6 +9,8 @@ class FilecloudIoFolder(SimpleCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Filecloud.io folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index 438ed533b..55ca7ddb0 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -9,6 +9,8 @@ class FilefactoryComFolder(SimpleCrypter):
     __version__ = "0.3"
 
     __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Filefactory.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
index fc9623d40..d37530a15 100644
--- a/module/plugins/crypter/FilerNetFolder.py
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -9,6 +9,8 @@ class FilerNetFolder(SimpleCrypter):
     __version__ = "0.4"
 
     __pattern__ = r'https?://filer\.net/folder/\w{16}'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Filer.net decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index d30ccb6c1..ce19657ae 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -11,6 +11,8 @@ class FileserveComFolder(Crypter):
     __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?fileserve\.com/list/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """FileServe.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py
index 097655316..c94bf3410 100644
--- a/module/plugins/crypter/FilestubeCom.py
+++ b/module/plugins/crypter/FilestubeCom.py
@@ -9,6 +9,8 @@ class FilestubeCom(SimpleCrypter):
     __version__ = "0.04"
 
     __pattern__ = r'http://(?:www\.)?filestube\.(?:com|to)/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Filestube.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index ad5307d83..1cd1203e8 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -9,6 +9,8 @@ class FiletramCom(SimpleCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?filetram\.com/[^/]+/.+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Filetram.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py
index 335c41ad3..71f0cacbd 100644
--- a/module/plugins/crypter/FiredriveComFolder.py
+++ b/module/plugins/crypter/FiredriveComFolder.py
@@ -9,6 +9,7 @@ class FiredriveComFolder(DeadCrypter):
     __version__ = "0.03"
 
     __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/share/.+'
+    __config__  = []
 
     __description__ = """Firedrive.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FourChanOrg.py b/module/plugins/crypter/FourChanOrg.py
index a07760e2d..5126d65f3 100644
--- a/module/plugins/crypter/FourChanOrg.py
+++ b/module/plugins/crypter/FourChanOrg.py
@@ -13,6 +13,8 @@ class FourChanOrg(Crypter):
     __version__ = "0.3"
 
     __pattern__ = r'http://(?:www\.)?boards\.4chan\.org/\w+/res/(\d+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """4chan.org folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py
index 8d3870247..b06ffafa2 100644
--- a/module/plugins/crypter/FreakhareComFolder.py
+++ b/module/plugins/crypter/FreakhareComFolder.py
@@ -11,6 +11,8 @@ class FreakhareComFolder(SimpleCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?freakshare\.com/folder/.+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Freakhare.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py
index 3fe51b913..b2a19e624 100644
--- a/module/plugins/crypter/FreetexthostCom.py
+++ b/module/plugins/crypter/FreetexthostCom.py
@@ -11,6 +11,8 @@ class FreetexthostCom(SimpleCrypter):
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?freetexthost\.com/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Freetexthost.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/FshareVnFolder.py b/module/plugins/crypter/FshareVnFolder.py
index 46375a6ae..df6ccc91b 100644
--- a/module/plugins/crypter/FshareVnFolder.py
+++ b/module/plugins/crypter/FshareVnFolder.py
@@ -9,6 +9,8 @@ class FshareVnFolder(SimpleCrypter):
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?fshare\.vn/folder/.*'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Fshare.vn folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py
index c831fb2de..d9713ddce 100644
--- a/module/plugins/crypter/GooGl.py
+++ b/module/plugins/crypter/GooGl.py
@@ -10,6 +10,8 @@ class GooGl(Crypter):
     __version__ = "0.01"
 
     __pattern__ = r'https?://(?:www\.)?goo\.gl/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Goo.gl decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index d35b2d8bc..c943ffc29 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -13,6 +13,8 @@ class HoerbuchIn(Crypter):
     __version__ = "0.6"
 
     __pattern__ = r'http://(?:www\.)?hoerbuch\.in/(wp/horbucher/\d+/.+/|tp/out\.php\?.+|protection/folder_\d+\.html)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Hoerbuch.in decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/HotfileComFolder.py b/module/plugins/crypter/HotfileComFolder.py
index c2c999275..b716db3ef 100644
--- a/module/plugins/crypter/HotfileComFolder.py
+++ b/module/plugins/crypter/HotfileComFolder.py
@@ -9,6 +9,7 @@ class HotfileComFolder(DeadCrypter):
     __version__ = "0.3"
 
     __pattern__ = r'https?://(?:www\.)?hotfile\.com/list/\w+/\w+'
+    __config__  = []
 
     __description__ = """Hotfile.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py
index 184b71d04..10d39ecda 100644
--- a/module/plugins/crypter/ILoadTo.py
+++ b/module/plugins/crypter/ILoadTo.py
@@ -9,6 +9,7 @@ class ILoadTo(DeadCrypter):
     __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?iload\.to/go/\d+-[\w.-]+/'
+    __config__  = []
 
     __description__ = """Iload.to decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index 3fd8b9b21..03bb51105 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -10,6 +10,8 @@ class ImgurComAlbum(SimpleCrypter):
     __version__ = "0.5"
 
     __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Imgur.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/JunocloudMeFolder.py b/module/plugins/crypter/JunocloudMeFolder.py
index 32c68e191..ff54f9ab3 100644
--- a/module/plugins/crypter/JunocloudMeFolder.py
+++ b/module/plugins/crypter/JunocloudMeFolder.py
@@ -9,6 +9,8 @@ class JunocloudMeFolder(XFSPCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?junocloud\.me/folders/(?P<ID>\d+/\w+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Junocloud.me folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index ba40ded99..520e5828b 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -10,6 +10,8 @@ class LetitbitNetFolder(Crypter):
     __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?letitbit\.net/folder/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Letitbit.net folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 644245e25..6db2e0109 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -19,6 +19,8 @@ class LinkSaveIn(SimpleCrypter):
     __version__ = "2.02"
 
     __pattern__ = r'http://(?:www\.)?linksave\.in/(?P<id>\w+)$'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """LinkSave.in decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 7cedf4d91..152d4fe29 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -10,6 +10,8 @@ class LinkdecrypterCom(Crypter):
     __version__ = "0.27"
 
     __pattern__ = None
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Linkdecrypter.com"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index 4a9dc7769..44831b2db 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -11,6 +11,8 @@ class LixIn(Crypter):
     __version__ = "0.22"
 
     __pattern__ = r'http://(?:www\.)?lix\.in/(?P<ID>.+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Lix.in decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/LofCc.py b/module/plugins/crypter/LofCc.py
index 720357a87..ffb9ec22e 100644
--- a/module/plugins/crypter/LofCc.py
+++ b/module/plugins/crypter/LofCc.py
@@ -9,6 +9,7 @@ class LofCc(DeadCrypter):
     __version__ = "0.21"
 
     __pattern__ = r'http://(?:www\.)?lof\.cc/(.*)'
+    __config__  = []
 
     __description__ = """Lof.cc decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/MBLinkInfo.py b/module/plugins/crypter/MBLinkInfo.py
index 3d03e6e13..38bbdfe9c 100644
--- a/module/plugins/crypter/MBLinkInfo.py
+++ b/module/plugins/crypter/MBLinkInfo.py
@@ -9,6 +9,7 @@ class MBLinkInfo(DeadCrypter):
     __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?mblink\.info/?\?id=(\d+)'
+    __config__  = []
 
     __description__ = """MBLink.info decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index 69bfe4092..cf50ca176 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -12,6 +12,8 @@ class MediafireComFolder(Crypter):
     __version__ = "0.14"
 
     __pattern__ = r'http://(?:www\.)?mediafire\.com/(folder/|\?sharekey=|\?\w{13}($|[/#]))'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Mediafire.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/MegaRapidCzFolder.py b/module/plugins/crypter/MegaRapidCzFolder.py
index a9d6a2dc6..68393a533 100644
--- a/module/plugins/crypter/MegaRapidCzFolder.py
+++ b/module/plugins/crypter/MegaRapidCzFolder.py
@@ -9,6 +9,8 @@ class MegaRapidCzFolder(SimpleCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?(share|mega)rapid\.cz/slozka/\d+/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Share-Rapid.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/Movie2kTo.py b/module/plugins/crypter/Movie2kTo.py
index 019105428..0a8b3e5d2 100644
--- a/module/plugins/crypter/Movie2kTo.py
+++ b/module/plugins/crypter/Movie2kTo.py
@@ -9,6 +9,7 @@ class Movie2kTo(DeadCrypter):
     __version__ = "0.51"
 
     __pattern__ = r'http://(?:www\.)?movie2k\.to/(.*)\.html'
+    __config__  = []
 
     __description__ = """Movie2k.to decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index bf0e49a4c..607ef6e87 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -12,6 +12,8 @@ class MultiUpOrg(SimpleCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?multiup\.org/(en|fr)/(?P<TYPE>project|download|miror)/\w+(/\w+)?'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """MultiUp.org crypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index 5ee17225b..1a5b91ea9 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -10,8 +10,10 @@ class MultiloadCz(Crypter):
     __version__ = "0.4"
 
     __pattern__ = r'http://(?:[^/]*\.)?multiload\.cz/(stahnout|slozka)/.*'
-    __config__ = [("usedHoster", "str", "Prefered hoster list (bar-separated) ", ""),
-                  ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
+    __config__ = [("use_subfolder", "bool", "Save package to subfolder", True),
+                  ("subfolder_per_package", "bool", "Create a subfolder for each package", True),
+                  ("usedHoster", "str", "Prefered hoster list (bar-separated)", ""),
+                  ("ignoredHoster", "str", "Ignored hoster list (bar-separated)", "")]
 
     __description__ = """Multiload.cz decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/MultiuploadCom.py b/module/plugins/crypter/MultiuploadCom.py
index 0701a50ff..1ad21464d 100644
--- a/module/plugins/crypter/MultiuploadCom.py
+++ b/module/plugins/crypter/MultiuploadCom.py
@@ -9,6 +9,7 @@ class MultiuploadCom(DeadCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?multiupload\.(com|nl)/\w+'
+    __config__  = []
 
     __description__ = """ MultiUpload.com decrypter plugin """
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 7d82cba7a..9687e75c1 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -16,6 +16,8 @@ class NCryptIn(Crypter):
     __version__ = "1.33"
 
     __pattern__ = r'http://(?:www\.)?ncrypt\.in/(?P<type>folder|link|frame)-([^/\?]+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """NCrypt.in decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 01774362c..25c4d5d19 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -11,6 +11,8 @@ class NetfolderIn(SimpleCrypter):
     __version__ = "0.7"
 
     __pattern__ = r'http://(?:www\.)?netfolder\.in/((?P<id1>\w+)/\w+|folder\.php\?folder_id=(?P<id2>\w+))'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """NetFolder.in decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index 982c4538c..a961f27c3 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -9,6 +9,8 @@ class NosvideoCom(SimpleCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?nosvideo\.com/\?v=\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Nosvideo.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index 188a0a0ef..3b0cb5eb8 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -12,6 +12,8 @@ class OneKhDe(Crypter):
     __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?1kh\.de/f/'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """1kh.de decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/OronComFolder.py b/module/plugins/crypter/OronComFolder.py
index d6474f641..0478f9ac4 100755
--- a/module/plugins/crypter/OronComFolder.py
+++ b/module/plugins/crypter/OronComFolder.py
@@ -9,6 +9,7 @@ class OronComFolder(DeadCrypter):
     __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?oron\.com/folder/\w+'
+    __config__  = []
 
     __description__ = """Oron.com folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py
index 375b84f50..60b05e3ec 100644
--- a/module/plugins/crypter/PastebinCom.py
+++ b/module/plugins/crypter/PastebinCom.py
@@ -9,6 +9,8 @@ class PastebinCom(SimpleCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?pastebin\.com/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Pastebin.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index d9048655e..cd95ac365 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -10,6 +10,8 @@ class QuickshareCzFolder(Crypter):
     __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?quickshare\.cz/slozka-\d+.*'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Quickshare.cz folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/RSLayerCom.py b/module/plugins/crypter/RSLayerCom.py
index f86d6dfec..bfa7cd036 100644
--- a/module/plugins/crypter/RSLayerCom.py
+++ b/module/plugins/crypter/RSLayerCom.py
@@ -9,6 +9,7 @@ class RSLayerCom(DeadCrypter):
     __version__ = "0.21"
 
     __pattern__ = r'http://(?:www\.)?rs-layer\.com/directory-'
+    __config__  = []
 
     __description__ = """RS-Layer.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/RapidfileshareNetFolder.py b/module/plugins/crypter/RapidfileshareNetFolder.py
index cca52db20..437beae85 100644
--- a/module/plugins/crypter/RapidfileshareNetFolder.py
+++ b/module/plugins/crypter/RapidfileshareNetFolder.py
@@ -9,6 +9,8 @@ class RapidfileshareNetFolder(XFSPCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?rapidfileshare\.net/users/\w+/\d+/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Rapidfileshare.net folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 135268dcc..1a3d47cf8 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -15,6 +15,8 @@ class RelinkUs(Crypter):
     __version__ = "3.1"
 
     __pattern__ = r'http://(?:www\.)?relink\.us/(f/|((view|go)\.php\?id=))(?P<id>.+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Relink.us decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index fbeaa406c..37bb4d37e 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -17,6 +17,8 @@ class SafelinkingNet(Crypter):
     __version__ = "0.1"
 
     __pattern__ = r'https?://(?:www\.)?safelinking\.net/([pd])/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Safelinking.net decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/SecuredIn.py b/module/plugins/crypter/SecuredIn.py
index 2ad7819d8..b52be810f 100644
--- a/module/plugins/crypter/SecuredIn.py
+++ b/module/plugins/crypter/SecuredIn.py
@@ -9,6 +9,7 @@ class SecuredIn(DeadCrypter):
     __version__ = "0.21"
 
     __pattern__ = r'http://(?:www\.)?secured\.in/download-[\d]+-\w{8}\.html'
+    __config__  = []
 
     __description__ = """Secured.in decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py
index 20559e9d7..c086a86ff 100644
--- a/module/plugins/crypter/SexuriaCom.py
+++ b/module/plugins/crypter/SexuriaCom.py
@@ -11,6 +11,8 @@ class SexuriaCom(Crypter):
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?sexuria\.com/(v1/)?(Pornos_Kostenlos_.+?_(\d+)\.html|dl_links_\d+_\d+\.html|id=\d+\&part=\d+\&link=\d+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Sexuria.com decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 8e89c98f9..bac222d3f 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -14,6 +14,8 @@ class ShareLinksBiz(Crypter):
     __version__ = "1.14"
 
     __pattern__ = r'http://(?:www\.)?(share-links|s2l)\.biz/(?P<ID>_?\w+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Share-Links.biz decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/SpeedLoadOrgFolder.py b/module/plugins/crypter/SpeedLoadOrgFolder.py
index 4b77b8f22..596ce3e85 100644
--- a/module/plugins/crypter/SpeedLoadOrgFolder.py
+++ b/module/plugins/crypter/SpeedLoadOrgFolder.py
@@ -9,6 +9,7 @@ class SpeedLoadOrgFolder(DeadCrypter):
     __version__ = "0.3"
 
     __pattern__ = r'http://(?:www\.)?speedload\.org/(\d+~f$|folder/\d+/)'
+    __config__  = []
 
     __description__ = """Speedload decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/StealthTo.py b/module/plugins/crypter/StealthTo.py
index 50a7d561f..e4c11b916 100644
--- a/module/plugins/crypter/StealthTo.py
+++ b/module/plugins/crypter/StealthTo.py
@@ -9,6 +9,7 @@ class StealthTo(DeadCrypter):
     __version__ = "0.2"
 
     __pattern__ = r'http://(?:www\.)?stealth\.to/folder/.+'
+    __config__  = []
 
     __description__ = """Stealth.to decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py
index b3e049a37..19f08c6cd 100644
--- a/module/plugins/crypter/TnyCz.py
+++ b/module/plugins/crypter/TnyCz.py
@@ -11,6 +11,8 @@ class TnyCz(SimpleCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?tny\.cz/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Tny.cz decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/TrailerzoneInfo.py b/module/plugins/crypter/TrailerzoneInfo.py
index 4b197c728..9d086b036 100644
--- a/module/plugins/crypter/TrailerzoneInfo.py
+++ b/module/plugins/crypter/TrailerzoneInfo.py
@@ -9,6 +9,7 @@ class TrailerzoneInfo(DeadCrypter):
     __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?trailerzone\.info/.*?'
+    __config__  = []
 
     __description__ = """TrailerZone.info decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index 1158c5cc1..1996d7255 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -12,6 +12,8 @@ class TurbobitNetFolder(SimpleCrypter):
     __version__ = "0.04"
 
     __pattern__ = r'http://(?:www\.)?turbobit\.net/download/folder/(?P<ID>\w+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Turbobit.net folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index fb0842b63..3a9ab3ba9 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -13,6 +13,8 @@ class TusfilesNetFolder(XFSPCrypter):
     __version__ = "0.04"
 
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Tusfiles.net folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index feaec2e8d..d212b34bd 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -10,6 +10,8 @@ class UlozToFolder(Crypter):
     __version__ = "0.2"
 
     __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj\.cz|zachowajto\.pl)/(m|soubory)/.*'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Uloz.to folder decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/UploadableChFolder.py b/module/plugins/crypter/UploadableChFolder.py
index 9e1e3aba8..c69cf1f92 100644
--- a/module/plugins/crypter/UploadableChFolder.py
+++ b/module/plugins/crypter/UploadableChFolder.py
@@ -9,6 +9,8 @@ class UploadableChFolder(SimpleCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?uploadable\.ch/list/\w+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """ Uploadable.ch folder decrypter plugin """
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index 8f50f80aa..1d3c67df6 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -11,6 +11,8 @@ class UploadedToFolder(SimpleCrypter):
     __version__ = "0.4"
 
     __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P<id>\w+)'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """UploadedTo decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/WiiReloadedOrg.py b/module/plugins/crypter/WiiReloadedOrg.py
index 3b28faf4f..2e99c2de7 100644
--- a/module/plugins/crypter/WiiReloadedOrg.py
+++ b/module/plugins/crypter/WiiReloadedOrg.py
@@ -9,6 +9,7 @@ class WiiReloadedOrg(DeadCrypter):
     __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?wii-reloaded\.org/protect/get\.php\?i=.+'
+    __config__  = []
 
     __description__ = """Wii-Reloaded.org decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/XFileSharingProFolder.py b/module/plugins/crypter/XFileSharingProFolder.py
index e6fb2a7a5..a4144a257 100644
--- a/module/plugins/crypter/XFileSharingProFolder.py
+++ b/module/plugins/crypter/XFileSharingProFolder.py
@@ -11,6 +11,8 @@ class XFileSharingProFolder(XFSPCrypter):
     __version__ = "0.02"
 
     __pattern__ = r'^unmatchable$'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """XFileSharingPro dummy folder decrypter plugin for hook"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py
index 3323d0ff4..6cb8601e3 100644
--- a/module/plugins/crypter/XupPl.py
+++ b/module/plugins/crypter/XupPl.py
@@ -9,6 +9,8 @@ class XupPl(Crypter):
     __version__ = "0.1"
 
     __pattern__ = r'https?://(?:[^/]*\.)?xup\.pl/.*'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Xup.pl decrypter plugin"""
     __license__ = "GPLv3"
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index c5bcdd72d..09a3466b5 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -15,7 +15,9 @@ class YoutubeBatch(Crypter):
     __version__ = "1.01"
 
     __pattern__ = r'https?://(?:www\.|m\.)?youtube\.com/(?P<TYPE>user|playlist|view_play_list)(/|.*?[?&](?:list|p)=)(?P<ID>[\w-]+)'
-    __config__ = [("likes", "bool", "Grab user (channel) liked videos", False),
+    __config__ = [("use_subfolder", "bool", "Save package to subfolder", True),
+                  ("subfolder_per_package", "bool", "Create a subfolder for each package", True),
+                  ("likes", "bool", "Grab user (channel) liked videos", False),
                   ("favorites", "bool", "Grab user (channel) favorite videos", False),
                   ("uploads", "bool", "Grab channel unplaylisted videos", True)]
 
-- 
cgit v1.2.3


From 302616d94f76ab8794b58d3d54b780cc58e86b06 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 28 Oct 2014 04:58:47 +0100
Subject: Code cosmetics: items() -> iteritems()

---
 module/plugins/crypter/ShareLinksBiz.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index bac222d3f..f45aa4570 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -142,7 +142,7 @@ class ShareLinksBiz(Crypter):
 
     def _resolveCoords(self, coords, captchaMap):
         x, y = coords
-        for rect, href in captchaMap.items():
+        for rect, href in captchaMap.iteritems():
             x1, y1, x2, y2 = rect
             if (x >= x1 and x <= x2) and (y >= y1 and y <= y2):
                 return href
-- 
cgit v1.2.3


From 8b3589dd394d81177bf4680dddb5bdb9506b89ea Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 28 Oct 2014 16:04:10 +0100
Subject: Update plugins to last changes

---
 module/plugins/crypter/ShareLinksBiz.py | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index f45aa4570..7c4d769c6 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -124,9 +124,7 @@ class ShareLinksBiz(Crypter):
         href = self._resolveCoords(coords, captchaMap)
         if href is None:
             self.invalidCaptcha()
-            self.setWait(5, False)
-            self.wait()
-            self.retry()
+            self.retry(wait_time=5)
         url = self.baseUrl + href
         self.html = self.load(url, decode=True)
 
@@ -156,9 +154,7 @@ class ShareLinksBiz(Crypter):
         if self.captcha:
             if "Your choice was wrong" in self.html:
                 self.invalidCaptcha()
-                self.setWait(5)
-                self.wait()
-                self.retry()
+                self.retry(wait_time=5)
             else:
                 self.correctCaptcha()
 
-- 
cgit v1.2.3


From 34984dae733c3f3d47b41a0acfba3724d53c65a1 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 28 Oct 2014 16:52:10 +0100
Subject: Code cosmetics: plugin class attributes

---
 module/plugins/crypter/BitshareComFolder.py       |  8 ++++----
 module/plugins/crypter/C1neonCom.py               |  8 ++++----
 module/plugins/crypter/ChipDe.py                  |  8 ++++----
 module/plugins/crypter/CrockoComFolder.py         |  8 ++++----
 module/plugins/crypter/CryptItCom.py              |  8 ++++----
 module/plugins/crypter/CzshareComFolder.py        |  8 ++++----
 module/plugins/crypter/DDLMusicOrg.py             |  8 ++++----
 module/plugins/crypter/DailymotionBatch.py        |  8 ++++----
 module/plugins/crypter/DataHuFolder.py            | 10 +++++-----
 module/plugins/crypter/DdlstorageComFolder.py     | 10 +++++-----
 module/plugins/crypter/DepositfilesComFolder.py   |  8 ++++----
 module/plugins/crypter/Dereferer.py               |  8 ++++----
 module/plugins/crypter/DevhostStFolder.py         | 10 +++++-----
 module/plugins/crypter/DlProtectCom.py            |  8 ++++----
 module/plugins/crypter/DontKnowMe.py              |  8 ++++----
 module/plugins/crypter/DuckCryptInfo.py           |  8 ++++----
 module/plugins/crypter/DuploadOrgFolder.py        |  8 ++++----
 module/plugins/crypter/EasybytezComFolder.py      |  8 ++++----
 module/plugins/crypter/EmbeduploadCom.py          |  8 ++++----
 module/plugins/crypter/FilebeerInfoFolder.py      |  8 ++++----
 module/plugins/crypter/FilecloudIoFolder.py       |  8 ++++----
 module/plugins/crypter/FilefactoryComFolder.py    |  8 ++++----
 module/plugins/crypter/FilerNetFolder.py          | 10 +++++-----
 module/plugins/crypter/FileserveComFolder.py      |  8 ++++----
 module/plugins/crypter/FilestubeCom.py            |  8 ++++----
 module/plugins/crypter/FiletramCom.py             | 10 +++++-----
 module/plugins/crypter/FiredriveComFolder.py      |  8 ++++----
 module/plugins/crypter/FourChanOrg.py             |  8 ++++----
 module/plugins/crypter/FreakhareComFolder.py      |  8 ++++----
 module/plugins/crypter/FreetexthostCom.py         |  8 ++++----
 module/plugins/crypter/FshareVnFolder.py          |  8 ++++----
 module/plugins/crypter/GooGl.py                   |  8 ++++----
 module/plugins/crypter/HoerbuchIn.py              | 10 +++++-----
 module/plugins/crypter/HotfileComFolder.py        |  8 ++++----
 module/plugins/crypter/ILoadTo.py                 |  8 ++++----
 module/plugins/crypter/ImgurComAlbum.py           |  8 ++++----
 module/plugins/crypter/JunocloudMeFolder.py       |  8 ++++----
 module/plugins/crypter/LetitbitNetFolder.py       | 10 +++++-----
 module/plugins/crypter/LinkSaveIn.py              |  8 ++++----
 module/plugins/crypter/LinkdecrypterCom.py        | 10 +++++-----
 module/plugins/crypter/LixIn.py                   |  8 ++++----
 module/plugins/crypter/LofCc.py                   |  8 ++++----
 module/plugins/crypter/MBLinkInfo.py              | 10 +++++-----
 module/plugins/crypter/MediafireComFolder.py      |  8 ++++----
 module/plugins/crypter/MegaRapidCzFolder.py       |  8 ++++----
 module/plugins/crypter/Movie2kTo.py               |  8 ++++----
 module/plugins/crypter/MultiUpOrg.py              |  8 ++++----
 module/plugins/crypter/MultiloadCz.py             |  8 ++++----
 module/plugins/crypter/MultiuploadCom.py          |  8 ++++----
 module/plugins/crypter/NCryptIn.py                | 10 +++++-----
 module/plugins/crypter/NetfolderIn.py             | 10 +++++-----
 module/plugins/crypter/NosvideoCom.py             |  8 ++++----
 module/plugins/crypter/OneKhDe.py                 |  8 ++++----
 module/plugins/crypter/OronComFolder.py           |  8 ++++----
 module/plugins/crypter/PastebinCom.py             |  8 ++++----
 module/plugins/crypter/QuickshareCzFolder.py      |  8 ++++----
 module/plugins/crypter/RSLayerCom.py              |  8 ++++----
 module/plugins/crypter/RapidfileshareNetFolder.py |  8 ++++----
 module/plugins/crypter/RelinkUs.py                | 10 +++++-----
 module/plugins/crypter/SafelinkingNet.py          |  8 ++++----
 module/plugins/crypter/SecuredIn.py               |  8 ++++----
 module/plugins/crypter/SexuriaCom.py              |  8 ++++----
 module/plugins/crypter/ShareLinksBiz.py           |  8 ++++----
 module/plugins/crypter/SpeedLoadOrgFolder.py      |  8 ++++----
 module/plugins/crypter/StealthTo.py               |  8 ++++----
 module/plugins/crypter/TnyCz.py                   |  8 ++++----
 module/plugins/crypter/TrailerzoneInfo.py         |  8 ++++----
 module/plugins/crypter/TurbobitNetFolder.py       | 10 +++++-----
 module/plugins/crypter/TusfilesNetFolder.py       | 10 +++++-----
 module/plugins/crypter/UlozToFolder.py            |  8 ++++----
 module/plugins/crypter/UploadableChFolder.py      | 10 +++++-----
 module/plugins/crypter/UploadedToFolder.py        |  8 ++++----
 module/plugins/crypter/WiiReloadedOrg.py          |  8 ++++----
 module/plugins/crypter/XFileSharingProFolder.py   |  8 ++++----
 module/plugins/crypter/XupPl.py                   |  8 ++++----
 module/plugins/crypter/YoutubeBatch.py            |  8 ++++----
 76 files changed, 319 insertions(+), 319 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py
index aa0422249..90829203a 100644
--- a/module/plugins/crypter/BitshareComFolder.py
+++ b/module/plugins/crypter/BitshareComFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class BitshareComFolder(SimpleCrypter):
-    __name__ = "BitshareComFolder"
-    __type__ = "crypter"
+    __name__    = "BitshareComFolder"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?bitshare\.com/\?d=\w+'
@@ -13,8 +13,8 @@ class BitshareComFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Bitshare.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
     LINK_PATTERN = r'<a href="(http://bitshare\.com/files/.+)">.+</a></td>'
diff --git a/module/plugins/crypter/C1neonCom.py b/module/plugins/crypter/C1neonCom.py
index 09f5d64b9..18c0f1e73 100644
--- a/module/plugins/crypter/C1neonCom.py
+++ b/module/plugins/crypter/C1neonCom.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class C1neonCom(DeadCrypter):
-    __name__ = "C1neonCom"
-    __type__ = "crypter"
+    __name__    = "C1neonCom"
+    __type__    = "crypter"
     __version__ = "0.05"
 
     __pattern__ = r'http://(?:www\.)?c1neon\.com/.*?'
     __config__  = []
 
     __description__ = """C1neon.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("godofdream", "soilfiction@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("godofdream", "soilfiction@gmail.com")]
diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index befa9ddc2..59ed6559e 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -5,8 +5,8 @@ from module.plugins.Crypter import Crypter
 
 
 class ChipDe(Crypter):
-    __name__ = "ChipDe"
-    __type__ = "crypter"
+    __name__    = "ChipDe"
+    __type__    = "crypter"
     __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?chip\.de/video/.*\.html'
@@ -14,8 +14,8 @@ class ChipDe(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Chip.de decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("4Christopher", "4Christopher@gmx.de")]
+    __license__     = "GPLv3"
+    __authors__     = [("4Christopher", "4Christopher@gmx.de")]
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/CrockoComFolder.py b/module/plugins/crypter/CrockoComFolder.py
index ba19ae201..64a1f8bce 100644
--- a/module/plugins/crypter/CrockoComFolder.py
+++ b/module/plugins/crypter/CrockoComFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class CrockoComFolder(SimpleCrypter):
-    __name__ = "CrockoComFolder"
-    __type__ = "crypter"
+    __name__    = "CrockoComFolder"
+    __type__    = "crypter"
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?crocko\.com/f/.*'
@@ -13,8 +13,8 @@ class CrockoComFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Crocko.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     LINK_PATTERN = r'<td class="last"><a href="([^"]+)">download</a>'
diff --git a/module/plugins/crypter/CryptItCom.py b/module/plugins/crypter/CryptItCom.py
index 88de6b83c..2c91535bd 100644
--- a/module/plugins/crypter/CryptItCom.py
+++ b/module/plugins/crypter/CryptItCom.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class CryptItCom(DeadCrypter):
-    __name__ = "CryptItCom"
-    __type__ = "crypter"
+    __name__    = "CryptItCom"
+    __type__    = "crypter"
     __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?crypt-it\.com/(s|e|d|c)/\w+'
     __config__  = []
 
     __description__ = """Crypt-it.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("jeix", "jeix@hasnomail.de")]
+    __license__     = "GPLv3"
+    __authors__     = [("jeix", "jeix@hasnomail.de")]
diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index 53e9e7c36..669f469b2 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -5,8 +5,8 @@ from module.plugins.Crypter import Crypter
 
 
 class CzshareComFolder(Crypter):
-    __name__ = "CzshareComFolder"
-    __type__ = "crypter"
+    __name__    = "CzshareComFolder"
+    __type__    = "crypter"
     __version__ = "0.2"
 
     __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/folders/.*'
@@ -14,8 +14,8 @@ class CzshareComFolder(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Czshare.com folder decrypter plugin, now Sdilej.cz"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     FOLDER_PATTERN = r'<tr class="subdirectory">\s*<td>\s*<table>(.*?)</table>'
diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py
index ccd48cfac..c2524b180 100644
--- a/module/plugins/crypter/DDLMusicOrg.py
+++ b/module/plugins/crypter/DDLMusicOrg.py
@@ -8,8 +8,8 @@ from module.plugins.Crypter import Crypter
 
 
 class DDLMusicOrg(Crypter):
-    __name__ = "DDLMusicOrg"
-    __type__ = "crypter"
+    __name__    = "DDLMusicOrg"
+    __type__    = "crypter"
     __version__ = "0.3"
 
     __pattern__ = r'http://(?:www\.)?ddl-music\.org/captcha/ddlm_cr\d\.php\?\d+\?\d+'
@@ -17,8 +17,8 @@ class DDLMusicOrg(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Ddl-music.org decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("mkaay", "mkaay@mkaay.de")]
+    __license__     = "GPLv3"
+    __authors__     = [("mkaay", "mkaay@mkaay.de")]
 
 
     def setup(self):
diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py
index 928746745..28e01c084 100644
--- a/module/plugins/crypter/DailymotionBatch.py
+++ b/module/plugins/crypter/DailymotionBatch.py
@@ -10,8 +10,8 @@ from module.utils import save_join
 
 
 class DailymotionBatch(Crypter):
-    __name__ = "DailymotionBatch"
-    __type__ = "crypter"
+    __name__    = "DailymotionBatch"
+    __type__    = "crypter"
     __version__ = "0.01"
 
     __pattern__ = r'https?://(?:www\.)?dailymotion\.com/((playlists/)?(?P<TYPE>playlist|user)/)?(?P<ID>[\w^_]+)(?(TYPE)|#)'
@@ -19,8 +19,8 @@ class DailymotionBatch(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Dailymotion.com channel & playlist decrypter"""
-    __license__ = "GPLv3"
-    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
     def api_response(self, ref, req=None):
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 13266e984..9b52fbdda 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -6,8 +6,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class DataHuFolder(SimpleCrypter):
-    __name__ = "DataHuFolder"
-    __type__ = "crypter"
+    __name__    = "DataHuFolder"
+    __type__    = "crypter"
     __version__ = "0.04"
 
     __pattern__ = r'http://(?:www\.)?data\.hu/dir/\w+'
@@ -15,9 +15,9 @@ class DataHuFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Data.hu folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("crash", None),
-                   ("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("crash", None),
+                       ("stickell", "l.stickell@yahoo.it")]
 
 
     LINK_PATTERN = r'<a href=\'(http://data\.hu/get/.+)\' target=\'_blank\'>\1</a>'
diff --git a/module/plugins/crypter/DdlstorageComFolder.py b/module/plugins/crypter/DdlstorageComFolder.py
index f82ec054b..6ad586434 100644
--- a/module/plugins/crypter/DdlstorageComFolder.py
+++ b/module/plugins/crypter/DdlstorageComFolder.py
@@ -4,17 +4,17 @@ from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class DdlstorageComFolder(DeadCrypter):
-    __name__ = "DdlstorageComFolder"
-    __type__ = "crypter"
+    __name__    = "DdlstorageComFolder"
+    __type__    = "crypter"
     __version__ = "0.03"
 
     __pattern__ = r'https?://(?:www\.)?ddlstorage\.com/folder/\w+'
     __config__  = []
 
     __description__ = """DDLStorage.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("godofdream", "soilfiction@gmail.com"),
-                   ("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("godofdream", "soilfiction@gmail.com"),
+                       ("stickell", "l.stickell@yahoo.it")]
 
 
 getInfo = create_getInfo(SpeedLoadOrg)
diff --git a/module/plugins/crypter/DepositfilesComFolder.py b/module/plugins/crypter/DepositfilesComFolder.py
index 05a259daa..79c31c97a 100644
--- a/module/plugins/crypter/DepositfilesComFolder.py
+++ b/module/plugins/crypter/DepositfilesComFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class DepositfilesComFolder(SimpleCrypter):
-    __name__ = "DepositfilesComFolder"
-    __type__ = "crypter"
+    __name__    = "DepositfilesComFolder"
+    __type__    = "crypter"
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?depositfiles\.com/folders/\w+'
@@ -13,8 +13,8 @@ class DepositfilesComFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Depositfiles.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     LINK_PATTERN = r'<div class="progressName"[^>]*>\s*<a href="([^"]+)" title="[^"]*" target="_blank">'
diff --git a/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py
index 711a8201a..70b42b00c 100644
--- a/module/plugins/crypter/Dereferer.py
+++ b/module/plugins/crypter/Dereferer.py
@@ -8,8 +8,8 @@ from module.plugins.Crypter import Crypter
 
 
 class Dereferer(Crypter):
-    __name__ = "Dereferer"
-    __type__ = "crypter"
+    __name__    = "Dereferer"
+    __type__    = "crypter"
     __version__ = "0.1"
 
     __pattern__ = r'https?://([^/]+)/.*?(?P<url>(ht|f)tps?(://|%3A%2F%2F).*)'
@@ -17,8 +17,8 @@ class Dereferer(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Crypter for dereferers"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py
index 8734b4dcc..397a72ac4 100644
--- a/module/plugins/crypter/DevhostStFolder.py
+++ b/module/plugins/crypter/DevhostStFolder.py
@@ -11,8 +11,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class DevhostStFolder(SimpleCrypter):
-    __name__ = "DevhostStFolder"
-    __type__ = "crypter"
+    __name__    = "DevhostStFolder"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?d-h\.st/users/(?P<USER>\w+)(/\?fld_id=(?P<ID>\d+))?'
@@ -20,9 +20,9 @@ class DevhostStFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """d-h.st folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zapp-brannigan", "fuerst.reinje@web.de"),
-                   ("Walter Purcaro", "vuolter@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("zapp-brannigan", "fuerst.reinje@web.de"),
+                       ("Walter Purcaro", "vuolter@gmail.com")]
 
 
     LINK_PATTERN = r'(?:/> |;">)<a href="(.+?)"(?!>Back to \w+<)'
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index 40bf521a8..5efb03c15 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -9,8 +9,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class DlProtectCom(SimpleCrypter):
-    __name__ = "DlProtectCom"
-    __type__ = "crypter"
+    __name__    = "DlProtectCom"
+    __type__    = "crypter"
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?dl-protect\.com/((en|fr)/)?(?P<ID>\w+)'
@@ -18,8 +18,8 @@ class DlProtectCom(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Dl-protect.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
     OFFLINE_PATTERN = r'>Unfortunately, the link you are looking for is not found'
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index 89a0be6c4..6783abd7c 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -8,8 +8,8 @@ from module.plugins.Crypter import Crypter
 
 
 class DontKnowMe(Crypter):
-    __name__ = "DontKnowMe"
-    __type__ = "crypter"
+    __name__    = "DontKnowMe"
+    __type__    = "crypter"
     __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?dontknow\.me/at/\?.+$'
@@ -17,8 +17,8 @@ class DontKnowMe(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """DontKnow.me decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("selaux", None)]
+    __license__     = "GPLv3"
+    __authors__     = [("selaux", None)]
 
 
     LINK_PATTERN = r'http://dontknow\.me/at/\?(.+)$'
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 3bbdb0180..5bd20711e 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -8,8 +8,8 @@ from module.plugins.Crypter import Crypter
 
 
 class DuckCryptInfo(Crypter):
-    __name__ = "DuckCryptInfo"
-    __type__ = "crypter"
+    __name__    = "DuckCryptInfo"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?duckcrypt\.info/(folder|wait|link)/(\w+)/?(\w*)'
@@ -17,8 +17,8 @@ class DuckCryptInfo(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """DuckCrypt.info decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("godofdream", "soilfiction@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("godofdream", "soilfiction@gmail.com")]
 
 
     TIMER_PATTERN = r'<span id="timer">(.*)</span>'
diff --git a/module/plugins/crypter/DuploadOrgFolder.py b/module/plugins/crypter/DuploadOrgFolder.py
index 69da36e5b..0daf009af 100644
--- a/module/plugins/crypter/DuploadOrgFolder.py
+++ b/module/plugins/crypter/DuploadOrgFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class DuploadOrgFolder(SimpleCrypter):
-    __name__ = "DuploadOrgFolder"
-    __type__ = "crypter"
+    __name__    = "DuploadOrgFolder"
+    __type__    = "crypter"
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?dupload\.org/folder/\d+/'
@@ -13,8 +13,8 @@ class DuploadOrgFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Dupload.org folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
     LINK_PATTERN = r'<td style="[^"]+"><a href="(http://[^"]+)" target="_blank">[^<]+</a></td>'
diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index e89444271..5f8daf55c 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.XFSPCrypter import XFSPCrypter
 
 
 class EasybytezComFolder(XFSPCrypter):
-    __name__ = "EasybytezComFolder"
-    __type__ = "crypter"
+    __name__    = "EasybytezComFolder"
+    __type__    = "crypter"
     __version__ = "0.09"
 
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
@@ -13,8 +13,8 @@ class EasybytezComFolder(XFSPCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Easybytez.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
     HOSTER_NAME = "easybytez.com"
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 4d862c7e0..7f06c99bd 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -6,8 +6,8 @@ from module.network.HTTPRequest import BadHeader
 
 
 class EmbeduploadCom(Crypter):
-    __name__ = "EmbeduploadCom"
-    __type__ = "crypter"
+    __name__    = "EmbeduploadCom"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?embedupload\.com/\?d=.*'
@@ -17,8 +17,8 @@ class EmbeduploadCom(Crypter):
                   ("ignoredHoster", "str", "Ignored hoster list (bar-separated)", "")]
 
     __description__ = """EmbedUpload.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     LINK_PATTERN = r'<div id="([^"]+)"[^>]*>\s*<a href="([^"]+)" target="_blank" (?:class="DownloadNow"|style="color:red")>'
diff --git a/module/plugins/crypter/FilebeerInfoFolder.py b/module/plugins/crypter/FilebeerInfoFolder.py
index f2b839baa..fd2843873 100644
--- a/module/plugins/crypter/FilebeerInfoFolder.py
+++ b/module/plugins/crypter/FilebeerInfoFolder.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class FilebeerInfoFolder(DeadCrypter):
-    __name__ = "FilebeerInfoFolder"
-    __type__ = "crypter"
+    __name__    = "FilebeerInfoFolder"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?filebeer\.info/(\d+~f).*'
     __config__  = []
 
     __description__ = """Filebeer.info folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
index 40522d0f4..c78dcb490 100644
--- a/module/plugins/crypter/FilecloudIoFolder.py
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class FilecloudIoFolder(SimpleCrypter):
-    __name__ = "FilecloudIoFolder"
-    __type__ = "crypter"
+    __name__    = "FilecloudIoFolder"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+'
@@ -13,8 +13,8 @@ class FilecloudIoFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Filecloud.io folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
     LINK_PATTERN = r'href="(http://filecloud\.io/\w+)" title'
diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index 55ca7ddb0..996e24f05 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class FilefactoryComFolder(SimpleCrypter):
-    __name__ = "FilefactoryComFolder"
-    __type__ = "crypter"
+    __name__    = "FilefactoryComFolder"
+    __type__    = "crypter"
     __version__ = "0.3"
 
     __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+'
@@ -13,8 +13,8 @@ class FilefactoryComFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Filefactory.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
     LINK_PATTERN = r'<td><a href="([^"]+)">'
diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
index d37530a15..2def580a4 100644
--- a/module/plugins/crypter/FilerNetFolder.py
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class FilerNetFolder(SimpleCrypter):
-    __name__ = "FilerNetFolder"
-    __type__ = "crypter"
+    __name__    = "FilerNetFolder"
+    __type__    = "crypter"
     __version__ = "0.4"
 
     __pattern__ = r'https?://filer\.net/folder/\w{16}'
@@ -13,9 +13,9 @@ class FilerNetFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Filer.net decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("nath_schwarz", "nathan.notwhite@gmail.com"),
-                   ("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("nath_schwarz", "nathan.notwhite@gmail.com"),
+                       ("stickell", "l.stickell@yahoo.it")]
 
 
     LINK_PATTERN = r'href="(/get/\w{16})">(?!<)'
diff --git a/module/plugins/crypter/FileserveComFolder.py b/module/plugins/crypter/FileserveComFolder.py
index ce19657ae..e6b35fd36 100644
--- a/module/plugins/crypter/FileserveComFolder.py
+++ b/module/plugins/crypter/FileserveComFolder.py
@@ -6,8 +6,8 @@ from module.plugins.Crypter import Crypter
 
 
 class FileserveComFolder(Crypter):
-    __name__ = "FileserveComFolder"
-    __type__ = "crypter"
+    __name__    = "FileserveComFolder"
+    __type__    = "crypter"
     __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?fileserve\.com/list/\w+'
@@ -15,8 +15,8 @@ class FileserveComFolder(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """FileServe.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("fionnc", "fionnc@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("fionnc", "fionnc@gmail.com")]
 
 
     FOLDER_PATTERN = r'<table class="file_list">(.*?)</table>'
diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py
index c94bf3410..ccbacef8b 100644
--- a/module/plugins/crypter/FilestubeCom.py
+++ b/module/plugins/crypter/FilestubeCom.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class FilestubeCom(SimpleCrypter):
-    __name__ = "FilestubeCom"
-    __type__ = "crypter"
+    __name__    = "FilestubeCom"
+    __type__    = "crypter"
     __version__ = "0.04"
 
     __pattern__ = r'http://(?:www\.)?filestube\.(?:com|to)/\w+'
@@ -13,8 +13,8 @@ class FilestubeCom(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Filestube.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
     LINK_PATTERN = r'<a class=\"file-link-main(?: noref)?\" [^>]* href=\"(http://[^\"]+)'
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index 1cd1203e8..f48d56201 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class FiletramCom(SimpleCrypter):
-    __name__ = "FiletramCom"
-    __type__ = "crypter"
+    __name__    = "FiletramCom"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?filetram\.com/[^/]+/.+'
@@ -13,9 +13,9 @@ class FiletramCom(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Filetram.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("igel", "igelkun@myopera.com"),
-                   ("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("igel", "igelkun@myopera.com"),
+                       ("stickell", "l.stickell@yahoo.it")]
 
 
     LINK_PATTERN = r'\s+(http://.+)'
diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py
index 71f0cacbd..b6b22a4e1 100644
--- a/module/plugins/crypter/FiredriveComFolder.py
+++ b/module/plugins/crypter/FiredriveComFolder.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class FiredriveComFolder(DeadCrypter):
-    __name__ = "FiredriveComFolder"
-    __type__ = "crypter"
+    __name__    = "FiredriveComFolder"
+    __type__    = "crypter"
     __version__ = "0.03"
 
     __pattern__ = r'https?://(?:www\.)?(firedrive|putlocker)\.com/share/.+'
     __config__  = []
 
     __description__ = """Firedrive.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
diff --git a/module/plugins/crypter/FourChanOrg.py b/module/plugins/crypter/FourChanOrg.py
index 5126d65f3..48592d30a 100644
--- a/module/plugins/crypter/FourChanOrg.py
+++ b/module/plugins/crypter/FourChanOrg.py
@@ -8,8 +8,8 @@ from module.plugins.Crypter import Crypter
 
 
 class FourChanOrg(Crypter):
-    __name__ = "FourChanOrg"
-    __type__ = "crypter"
+    __name__    = "FourChanOrg"
+    __type__    = "crypter"
     __version__ = "0.3"
 
     __pattern__ = r'http://(?:www\.)?boards\.4chan\.org/\w+/res/(\d+)'
@@ -17,8 +17,8 @@ class FourChanOrg(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """4chan.org folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = []
+    __license__     = "GPLv3"
+    __authors__     = []
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py
index b06ffafa2..d7a1387d5 100644
--- a/module/plugins/crypter/FreakhareComFolder.py
+++ b/module/plugins/crypter/FreakhareComFolder.py
@@ -6,8 +6,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class FreakhareComFolder(SimpleCrypter):
-    __name__ = "FreakhareComFolder"
-    __type__ = "crypter"
+    __name__    = "FreakhareComFolder"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?freakshare\.com/folder/.+'
@@ -15,8 +15,8 @@ class FreakhareComFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Freakhare.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
     LINK_PATTERN = r'<a href="(http://freakshare\.com/files/[^"]+)" target="_blank">'
diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py
index b2a19e624..36bc61d35 100644
--- a/module/plugins/crypter/FreetexthostCom.py
+++ b/module/plugins/crypter/FreetexthostCom.py
@@ -6,8 +6,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class FreetexthostCom(SimpleCrypter):
-    __name__ = "FreetexthostCom"
-    __type__ = "crypter"
+    __name__    = "FreetexthostCom"
+    __type__    = "crypter"
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?freetexthost\.com/\w+'
@@ -15,8 +15,8 @@ class FreetexthostCom(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Freetexthost.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/FshareVnFolder.py b/module/plugins/crypter/FshareVnFolder.py
index df6ccc91b..e6e67ea13 100644
--- a/module/plugins/crypter/FshareVnFolder.py
+++ b/module/plugins/crypter/FshareVnFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class FshareVnFolder(SimpleCrypter):
-    __name__ = "FshareVnFolder"
-    __type__ = "crypter"
+    __name__    = "FshareVnFolder"
+    __type__    = "crypter"
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?fshare\.vn/folder/.*'
@@ -13,8 +13,8 @@ class FshareVnFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Fshare.vn folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     LINK_PATTERN = r'<li class="w_80pc"><a href="([^"]+)" target="_blank">'
diff --git a/module/plugins/crypter/GooGl.py b/module/plugins/crypter/GooGl.py
index d9713ddce..d548a3375 100644
--- a/module/plugins/crypter/GooGl.py
+++ b/module/plugins/crypter/GooGl.py
@@ -5,8 +5,8 @@ from module.common.json_layer import json_loads
 
 
 class GooGl(Crypter):
-    __name__ = "GooGl"
-    __type__ = "crypter"
+    __name__    = "GooGl"
+    __type__    = "crypter"
     __version__ = "0.01"
 
     __pattern__ = r'https?://(?:www\.)?goo\.gl/\w+'
@@ -14,8 +14,8 @@ class GooGl(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Goo.gl decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
     API_URL = "https://www.googleapis.com/urlshortener/v1/url"
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index c943ffc29..ed4adef58 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -8,8 +8,8 @@ from module.plugins.Crypter import Crypter
 
 
 class HoerbuchIn(Crypter):
-    __name__ = "HoerbuchIn"
-    __type__ = "crypter"
+    __name__    = "HoerbuchIn"
+    __type__    = "crypter"
     __version__ = "0.6"
 
     __pattern__ = r'http://(?:www\.)?hoerbuch\.in/(wp/horbucher/\d+/.+/|tp/out\.php\?.+|protection/folder_\d+\.html)'
@@ -17,9 +17,9 @@ class HoerbuchIn(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Hoerbuch.in decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("spoob", "spoob@pyload.org"),
-                   ("mkaay", "mkaay@mkaay.de")]
+    __license__     = "GPLv3"
+    __authors__     = [("spoob", "spoob@pyload.org"),
+                       ("mkaay", "mkaay@mkaay.de")]
 
 
     article = re.compile("http://(?:www\.)?hoerbuch\.in/wp/horbucher/\d+/.+/")
diff --git a/module/plugins/crypter/HotfileComFolder.py b/module/plugins/crypter/HotfileComFolder.py
index b716db3ef..3fc8f6f63 100644
--- a/module/plugins/crypter/HotfileComFolder.py
+++ b/module/plugins/crypter/HotfileComFolder.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class HotfileComFolder(DeadCrypter):
-    __name__ = "HotfileComFolder"
-    __type__ = "crypter"
+    __name__    = "HotfileComFolder"
+    __type__    = "crypter"
     __version__ = "0.3"
 
     __pattern__ = r'https?://(?:www\.)?hotfile\.com/list/\w+/\w+'
     __config__  = []
 
     __description__ = """Hotfile.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("RaNaN", "RaNaN@pyload.org")]
+    __license__     = "GPLv3"
+    __authors__     = [("RaNaN", "RaNaN@pyload.org")]
diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py
index 10d39ecda..3dc806b06 100644
--- a/module/plugins/crypter/ILoadTo.py
+++ b/module/plugins/crypter/ILoadTo.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class ILoadTo(DeadCrypter):
-    __name__ = "ILoadTo"
-    __type__ = "crypter"
+    __name__    = "ILoadTo"
+    __type__    = "crypter"
     __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?iload\.to/go/\d+-[\w.-]+/'
     __config__  = []
 
     __description__ = """Iload.to decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("hzpz", None)]
+    __license__     = "GPLv3"
+    __authors__     = [("hzpz", None)]
diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index 03bb51105..cfe887baf 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -5,8 +5,8 @@ from module.utils import uniqify
 
 
 class ImgurComAlbum(SimpleCrypter):
-    __name__ = "ImgurComAlbum"
-    __type__ = "crypter"
+    __name__    = "ImgurComAlbum"
+    __type__    = "crypter"
     __version__ = "0.5"
 
     __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}'
@@ -14,8 +14,8 @@ class ImgurComAlbum(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Imgur.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("nath_schwarz", "nathan.notwhite@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("nath_schwarz", "nathan.notwhite@gmail.com")]
 
 
     TITLE_PATTERN = r'(.+?) - Imgur'
diff --git a/module/plugins/crypter/JunocloudMeFolder.py b/module/plugins/crypter/JunocloudMeFolder.py
index ff54f9ab3..1e08fc352 100644
--- a/module/plugins/crypter/JunocloudMeFolder.py
+++ b/module/plugins/crypter/JunocloudMeFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.XFSPCrypter import XFSPCrypter
 
 
 class JunocloudMeFolder(XFSPCrypter):
-    __name__ = "JunocloudMeFolder"
-    __type__ = "crypter"
+    __name__    = "JunocloudMeFolder"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?junocloud\.me/folders/(?P<ID>\d+/\w+)'
@@ -13,8 +13,8 @@ class JunocloudMeFolder(XFSPCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Junocloud.me folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("guidobelix", "guidobelix@hotmail.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("guidobelix", "guidobelix@hotmail.it")]
 
 
     HOSTER_NAME = "junocloud.me"
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index 520e5828b..e3848e2ab 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -5,8 +5,8 @@ from module.plugins.Crypter import Crypter
 
 
 class LetitbitNetFolder(Crypter):
-    __name__ = "LetitbitNetFolder"
-    __type__ = "crypter"
+    __name__    = "LetitbitNetFolder"
+    __type__    = "crypter"
     __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?letitbit\.net/folder/\w+'
@@ -14,9 +14,9 @@ class LetitbitNetFolder(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Letitbit.net folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("DHMH", "webmaster@pcProfil.de"),
-                   ("z00nx", "z00nx0@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("DHMH", "webmaster@pcProfil.de"),
+                       ("z00nx", "z00nx0@gmail.com")]
 
 
     FOLDER_PATTERN = r'<table>(.*)</table>'
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 6db2e0109..72ce32810 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -14,8 +14,8 @@ from module.unescape import unescape
 
 
 class LinkSaveIn(SimpleCrypter):
-    __name__ = "LinkSaveIn"
-    __type__ = "crypter"
+    __name__    = "LinkSaveIn"
+    __type__    = "crypter"
     __version__ = "2.02"
 
     __pattern__ = r'http://(?:www\.)?linksave\.in/(?P<id>\w+)$'
@@ -23,8 +23,8 @@ class LinkSaveIn(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """LinkSave.in decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
+    __license__     = "GPLv3"
+    __authors__     = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
 
     COOKIES = [(".linksave.in", "Linksave_Language", "english")]
diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 152d4fe29..f858da9d8 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -5,8 +5,8 @@ from module.plugins.Crypter import Crypter
 
 
 class LinkdecrypterCom(Crypter):
-    __name__ = "LinkdecrypterCom"
-    __type__ = "crypter"
+    __name__    = "LinkdecrypterCom"
+    __type__    = "crypter"
     __version__ = "0.27"
 
     __pattern__ = None
@@ -14,9 +14,9 @@ class LinkdecrypterCom(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Linkdecrypter.com"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz"),
-                   ("flowlee", None)]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz"),
+                       ("flowlee", None)]
 
 
     TEXTAREA_PATTERN = r'<textarea name="links" wrap="off" readonly="1" class="caja_des">(.+)</textarea>'
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index 44831b2db..50ad217d4 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -6,8 +6,8 @@ from module.plugins.Crypter import Crypter
 
 
 class LixIn(Crypter):
-    __name__ = "LixIn"
-    __type__ = "crypter"
+    __name__    = "LixIn"
+    __type__    = "crypter"
     __version__ = "0.22"
 
     __pattern__ = r'http://(?:www\.)?lix\.in/(?P<ID>.+)'
@@ -15,8 +15,8 @@ class LixIn(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Lix.in decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("spoob", "spoob@pyload.org")]
+    __license__     = "GPLv3"
+    __authors__     = [("spoob", "spoob@pyload.org")]
 
 
     CAPTCHA_PATTERN = r'<img src="(?P<image>captcha_img\.php\?.*?)"'
diff --git a/module/plugins/crypter/LofCc.py b/module/plugins/crypter/LofCc.py
index ffb9ec22e..5819e0375 100644
--- a/module/plugins/crypter/LofCc.py
+++ b/module/plugins/crypter/LofCc.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class LofCc(DeadCrypter):
-    __name__ = "LofCc"
-    __type__ = "crypter"
+    __name__    = "LofCc"
+    __type__    = "crypter"
     __version__ = "0.21"
 
     __pattern__ = r'http://(?:www\.)?lof\.cc/(.*)'
     __config__  = []
 
     __description__ = """Lof.cc decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("mkaay", "mkaay@mkaay.de")]
+    __license__     = "GPLv3"
+    __authors__     = [("mkaay", "mkaay@mkaay.de")]
diff --git a/module/plugins/crypter/MBLinkInfo.py b/module/plugins/crypter/MBLinkInfo.py
index 38bbdfe9c..680aa49c0 100644
--- a/module/plugins/crypter/MBLinkInfo.py
+++ b/module/plugins/crypter/MBLinkInfo.py
@@ -4,14 +4,14 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class MBLinkInfo(DeadCrypter):
-    __name__ = "MBLinkInfo"
-    __type__ = "crypter"
+    __name__    = "MBLinkInfo"
+    __type__    = "crypter"
     __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?mblink\.info/?\?id=(\d+)'
     __config__  = []
 
     __description__ = """MBLink.info decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("Gummibaer", "Gummibaer@wiki-bierkiste.de"),
-                   ("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("Gummibaer", "Gummibaer@wiki-bierkiste.de"),
+                       ("stickell", "l.stickell@yahoo.it")]
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index cf50ca176..f4858e214 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -7,8 +7,8 @@ from module.common.json_layer import json_loads
 
 
 class MediafireComFolder(Crypter):
-    __name__ = "MediafireComFolder"
-    __type__ = "crypter"
+    __name__    = "MediafireComFolder"
+    __type__    = "crypter"
     __version__ = "0.14"
 
     __pattern__ = r'http://(?:www\.)?mediafire\.com/(folder/|\?sharekey=|\?\w{13}($|[/#]))'
@@ -16,8 +16,8 @@ class MediafireComFolder(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Mediafire.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     FOLDER_KEY_PATTERN = r'var afI= \'(\w+)'
diff --git a/module/plugins/crypter/MegaRapidCzFolder.py b/module/plugins/crypter/MegaRapidCzFolder.py
index 68393a533..d9fb828a8 100644
--- a/module/plugins/crypter/MegaRapidCzFolder.py
+++ b/module/plugins/crypter/MegaRapidCzFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class MegaRapidCzFolder(SimpleCrypter):
-    __name__ = "MegaRapidCzFolder"
-    __type__ = "crypter"
+    __name__    = "MegaRapidCzFolder"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?(share|mega)rapid\.cz/slozka/\d+/\w+'
@@ -13,8 +13,8 @@ class MegaRapidCzFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Share-Rapid.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     LINK_PATTERN = r'<td class="soubor"[^>]*><a href="([^"]+)">'
diff --git a/module/plugins/crypter/Movie2kTo.py b/module/plugins/crypter/Movie2kTo.py
index 0a8b3e5d2..2acaa5a28 100644
--- a/module/plugins/crypter/Movie2kTo.py
+++ b/module/plugins/crypter/Movie2kTo.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class Movie2kTo(DeadCrypter):
-    __name__ = "Movie2kTo"
-    __type__ = "crypter"
+    __name__    = "Movie2kTo"
+    __type__    = "crypter"
     __version__ = "0.51"
 
     __pattern__ = r'http://(?:www\.)?movie2k\.to/(.*)\.html'
     __config__  = []
 
     __description__ = """Movie2k.to decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("4Christopher", "4Christopher@gmx.de")]
+    __license__     = "GPLv3"
+    __authors__     = [("4Christopher", "4Christopher@gmx.de")]
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index 607ef6e87..25575a7f8 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -7,8 +7,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class MultiUpOrg(SimpleCrypter):
-    __name__ = "MultiUpOrg"
-    __type__ = "crypter"
+    __name__    = "MultiUpOrg"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?multiup\.org/(en|fr)/(?P<TYPE>project|download|miror)/\w+(/\w+)?'
@@ -16,8 +16,8 @@ class MultiUpOrg(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """MultiUp.org crypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
     TITLE_PATTERN = r'<title>.*(?:Project|Projet|ownload|élécharger) (.+?) (?:\(|- )'
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index 1a5b91ea9..127fe068a 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -5,8 +5,8 @@ from module.plugins.Crypter import Crypter
 
 
 class MultiloadCz(Crypter):
-    __name__ = "MultiloadCz"
-    __type__ = "crypter"
+    __name__    = "MultiloadCz"
+    __type__    = "crypter"
     __version__ = "0.4"
 
     __pattern__ = r'http://(?:[^/]*\.)?multiload\.cz/(stahnout|slozka)/.*'
@@ -16,8 +16,8 @@ class MultiloadCz(Crypter):
                   ("ignoredHoster", "str", "Ignored hoster list (bar-separated)", "")]
 
     __description__ = """Multiload.cz decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     FOLDER_PATTERN = r'<form action="" method="get"><textarea[^>]*>([^>]*)</textarea></form>'
diff --git a/module/plugins/crypter/MultiuploadCom.py b/module/plugins/crypter/MultiuploadCom.py
index 1ad21464d..2cfb9537f 100644
--- a/module/plugins/crypter/MultiuploadCom.py
+++ b/module/plugins/crypter/MultiuploadCom.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class MultiuploadCom(DeadCrypter):
-    __name__ = "MultiuploadCom"
-    __type__ = "crypter"
+    __name__    = "MultiuploadCom"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?multiupload\.(com|nl)/\w+'
     __config__  = []
 
     __description__ = """ MultiUpload.com decrypter plugin """
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 9687e75c1..3c08e26c1 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -11,8 +11,8 @@ from module.plugins.internal.CaptchaService import ReCaptcha
 
 
 class NCryptIn(Crypter):
-    __name__ = "NCryptIn"
-    __type__ = "crypter"
+    __name__    = "NCryptIn"
+    __type__    = "crypter"
     __version__ = "1.33"
 
     __pattern__ = r'http://(?:www\.)?ncrypt\.in/(?P<type>folder|link|frame)-([^/\?]+)'
@@ -20,9 +20,9 @@ class NCryptIn(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """NCrypt.in decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es"),
-                   ("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("fragonib", "fragonib[AT]yahoo[DOT]es"),
+                       ("stickell", "l.stickell@yahoo.it")]
 
 
     JK_KEY = "jk"
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 25c4d5d19..4309d30a1 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -6,8 +6,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class NetfolderIn(SimpleCrypter):
-    __name__ = "NetfolderIn"
-    __type__ = "crypter"
+    __name__    = "NetfolderIn"
+    __type__    = "crypter"
     __version__ = "0.7"
 
     __pattern__ = r'http://(?:www\.)?netfolder\.in/((?P<id1>\w+)/\w+|folder\.php\?folder_id=(?P<id2>\w+))'
@@ -15,9 +15,9 @@ class NetfolderIn(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """NetFolder.in decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("RaNaN", "RaNaN@pyload.org"),
-                   ("fragonib", "fragonib[AT]yahoo[DOT]es")]
+    __license__     = "GPLv3"
+    __authors__     = [("RaNaN", "RaNaN@pyload.org"),
+                       ("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
 
     TITLE_PATTERN = r'<div class="Text">Inhalt des Ordners <span.*>(.+)</span></div>'
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index a961f27c3..e3335adc7 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class NosvideoCom(SimpleCrypter):
-    __name__ = "NosvideoCom"
-    __type__ = "crypter"
+    __name__    = "NosvideoCom"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?nosvideo\.com/\?v=\w+'
@@ -13,8 +13,8 @@ class NosvideoCom(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Nosvideo.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("igel", "igelkun@myopera.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("igel", "igelkun@myopera.com")]
 
 
     LINK_PATTERN = r'href="(http://(?:w{3}\.)?nosupload\.com/\?d=\w+)"'
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index 3b0cb5eb8..540f14568 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -7,8 +7,8 @@ from module.plugins.Crypter import Crypter
 
 
 class OneKhDe(Crypter):
-    __name__ = "OneKhDe"
-    __type__ = "crypter"
+    __name__    = "OneKhDe"
+    __type__    = "crypter"
     __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?1kh\.de/f/'
@@ -16,8 +16,8 @@ class OneKhDe(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """1kh.de decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("spoob", "spoob@pyload.org")]
+    __license__     = "GPLv3"
+    __authors__     = [("spoob", "spoob@pyload.org")]
 
 
     def __init__(self, parent):
diff --git a/module/plugins/crypter/OronComFolder.py b/module/plugins/crypter/OronComFolder.py
index 0478f9ac4..30709ee60 100755
--- a/module/plugins/crypter/OronComFolder.py
+++ b/module/plugins/crypter/OronComFolder.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class OronComFolder(DeadCrypter):
-    __name__ = "OronComFolder"
-    __type__ = "crypter"
+    __name__    = "OronComFolder"
+    __type__    = "crypter"
     __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?oron\.com/folder/\w+'
     __config__  = []
 
     __description__ = """Oron.com folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("DHMH", "webmaster@pcProfil.de")]
+    __license__     = "GPLv3"
+    __authors__     = [("DHMH", "webmaster@pcProfil.de")]
diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py
index 60b05e3ec..185de1e47 100644
--- a/module/plugins/crypter/PastebinCom.py
+++ b/module/plugins/crypter/PastebinCom.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class PastebinCom(SimpleCrypter):
-    __name__ = "PastebinCom"
-    __type__ = "crypter"
+    __name__    = "PastebinCom"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?pastebin\.com/\w+'
@@ -13,8 +13,8 @@ class PastebinCom(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Pastebin.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
     LINK_PATTERN = r'<div class="de\d+">(https?://[^ <]+)(?:[^<]*)</div>'
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index cd95ac365..52d558af7 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -5,8 +5,8 @@ from module.plugins.Crypter import Crypter
 
 
 class QuickshareCzFolder(Crypter):
-    __name__ = "QuickshareCzFolder"
-    __type__ = "crypter"
+    __name__    = "QuickshareCzFolder"
+    __type__    = "crypter"
     __version__ = "0.1"
 
     __pattern__ = r'http://(?:www\.)?quickshare\.cz/slozka-\d+.*'
@@ -14,8 +14,8 @@ class QuickshareCzFolder(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Quickshare.cz folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     FOLDER_PATTERN = r'<textarea[^>]*>(.*?)</textarea>'
diff --git a/module/plugins/crypter/RSLayerCom.py b/module/plugins/crypter/RSLayerCom.py
index bfa7cd036..1bcfd05fe 100644
--- a/module/plugins/crypter/RSLayerCom.py
+++ b/module/plugins/crypter/RSLayerCom.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class RSLayerCom(DeadCrypter):
-    __name__ = "RSLayerCom"
-    __type__ = "crypter"
+    __name__    = "RSLayerCom"
+    __type__    = "crypter"
     __version__ = "0.21"
 
     __pattern__ = r'http://(?:www\.)?rs-layer\.com/directory-'
     __config__  = []
 
     __description__ = """RS-Layer.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("hzpz", None)]
+    __license__     = "GPLv3"
+    __authors__     = [("hzpz", None)]
diff --git a/module/plugins/crypter/RapidfileshareNetFolder.py b/module/plugins/crypter/RapidfileshareNetFolder.py
index 437beae85..43a3e34dd 100644
--- a/module/plugins/crypter/RapidfileshareNetFolder.py
+++ b/module/plugins/crypter/RapidfileshareNetFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.XFSPCrypter import XFSPCrypter
 
 
 class RapidfileshareNetFolder(XFSPCrypter):
-    __name__ = "RapidfileshareNetFolder"
-    __type__ = "crypter"
+    __name__    = "RapidfileshareNetFolder"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?rapidfileshare\.net/users/\w+/\d+/\w+'
@@ -13,8 +13,8 @@ class RapidfileshareNetFolder(XFSPCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Rapidfileshare.net folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("guidobelix", "guidobelix@hotmail.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("guidobelix", "guidobelix@hotmail.it")]
 
 
     HOSTER_NAME = "rapidfileshare.net"
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 1a3d47cf8..cdb699ae0 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -10,8 +10,8 @@ from module.plugins.Crypter import Crypter
 
 
 class RelinkUs(Crypter):
-    __name__ = "RelinkUs"
-    __type__ = "crypter"
+    __name__    = "RelinkUs"
+    __type__    = "crypter"
     __version__ = "3.1"
 
     __pattern__ = r'http://(?:www\.)?relink\.us/(f/|((view|go)\.php\?id=))(?P<id>.+)'
@@ -19,9 +19,9 @@ class RelinkUs(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Relink.us decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es"),
-                   ("AndroKev", "neureither.kevin@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("fragonib", "fragonib[AT]yahoo[DOT]es"),
+                       ("AndroKev", "neureither.kevin@gmail.com")]
 
 
     PREFERRED_LINK_SOURCES = ["cnl2", "dlc", "web"]
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index 37bb4d37e..1fbb6e137 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -12,8 +12,8 @@ from module.plugins.internal.CaptchaService import SolveMedia
 
 
 class SafelinkingNet(Crypter):
-    __name__ = "SafelinkingNet"
-    __type__ = "crypter"
+    __name__    = "SafelinkingNet"
+    __type__    = "crypter"
     __version__ = "0.1"
 
     __pattern__ = r'https?://(?:www\.)?safelinking\.net/([pd])/\w+'
@@ -21,8 +21,8 @@ class SafelinkingNet(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Safelinking.net decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("quareevo", "quareevo@arcor.de")]
+    __license__     = "GPLv3"
+    __authors__     = [("quareevo", "quareevo@arcor.de")]
 
 
     SOLVEMEDIA_PATTERN = "solvemediaApiKey = '([\w.-]+)';"
diff --git a/module/plugins/crypter/SecuredIn.py b/module/plugins/crypter/SecuredIn.py
index b52be810f..d2cd6ff4d 100644
--- a/module/plugins/crypter/SecuredIn.py
+++ b/module/plugins/crypter/SecuredIn.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class SecuredIn(DeadCrypter):
-    __name__ = "SecuredIn"
-    __type__ = "crypter"
+    __name__    = "SecuredIn"
+    __type__    = "crypter"
     __version__ = "0.21"
 
     __pattern__ = r'http://(?:www\.)?secured\.in/download-[\d]+-\w{8}\.html'
     __config__  = []
 
     __description__ = """Secured.in decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("mkaay", "mkaay@mkaay.de")]
+    __license__     = "GPLv3"
+    __authors__     = [("mkaay", "mkaay@mkaay.de")]
diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py
index c086a86ff..6166c2023 100644
--- a/module/plugins/crypter/SexuriaCom.py
+++ b/module/plugins/crypter/SexuriaCom.py
@@ -6,8 +6,8 @@ from module.plugins.Crypter import Crypter
 
 
 class SexuriaCom(Crypter):
-    __name__ = "SexuriaCom"
-    __type__ = "crypter"
+    __name__    = "SexuriaCom"
+    __type__    = "crypter"
     __version__ = "0.01"
 
     __pattern__ = r'http://(?:www\.)?sexuria\.com/(v1/)?(Pornos_Kostenlos_.+?_(\d+)\.html|dl_links_\d+_\d+\.html|id=\d+\&part=\d+\&link=\d+)'
@@ -15,8 +15,8 @@ class SexuriaCom(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Sexuria.com decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("NETHead", "NETHead.AT.gmx.DOT.net")]
+    __license__     = "GPLv3"
+    __authors__     = [("NETHead", "NETHead.AT.gmx.DOT.net")]
 
 
     PATTERN_SUPPORTED_MAIN     = re.compile(r'http://(www\.)?sexuria\.com/(v1/)?Pornos_Kostenlos_.+?_(\d+)\.html', flags=re.I)
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 7c4d769c6..26d05fee1 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -9,8 +9,8 @@ from module.plugins.Crypter import Crypter
 
 
 class ShareLinksBiz(Crypter):
-    __name__ = "ShareLinksBiz"
-    __type__ = "crypter"
+    __name__    = "ShareLinksBiz"
+    __type__    = "crypter"
     __version__ = "1.14"
 
     __pattern__ = r'http://(?:www\.)?(share-links|s2l)\.biz/(?P<ID>_?\w+)'
@@ -18,8 +18,8 @@ class ShareLinksBiz(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Share-Links.biz decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
+    __license__     = "GPLv3"
+    __authors__     = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
 
     def setup(self):
diff --git a/module/plugins/crypter/SpeedLoadOrgFolder.py b/module/plugins/crypter/SpeedLoadOrgFolder.py
index 596ce3e85..f11260345 100644
--- a/module/plugins/crypter/SpeedLoadOrgFolder.py
+++ b/module/plugins/crypter/SpeedLoadOrgFolder.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class SpeedLoadOrgFolder(DeadCrypter):
-    __name__ = "SpeedLoadOrgFolder"
-    __type__ = "crypter"
+    __name__    = "SpeedLoadOrgFolder"
+    __type__    = "crypter"
     __version__ = "0.3"
 
     __pattern__ = r'http://(?:www\.)?speedload\.org/(\d+~f$|folder/\d+/)'
     __config__  = []
 
     __description__ = """Speedload decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it")]
diff --git a/module/plugins/crypter/StealthTo.py b/module/plugins/crypter/StealthTo.py
index e4c11b916..a6e86fb8b 100644
--- a/module/plugins/crypter/StealthTo.py
+++ b/module/plugins/crypter/StealthTo.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class StealthTo(DeadCrypter):
-    __name__ = "StealthTo"
-    __type__ = "crypter"
+    __name__    = "StealthTo"
+    __type__    = "crypter"
     __version__ = "0.2"
 
     __pattern__ = r'http://(?:www\.)?stealth\.to/folder/.+'
     __config__  = []
 
     __description__ = """Stealth.to decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("spoob", "spoob@pyload.org")]
+    __license__     = "GPLv3"
+    __authors__     = [("spoob", "spoob@pyload.org")]
diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py
index 19f08c6cd..742b2f7ed 100644
--- a/module/plugins/crypter/TnyCz.py
+++ b/module/plugins/crypter/TnyCz.py
@@ -6,8 +6,8 @@ import re
 
 
 class TnyCz(SimpleCrypter):
-    __name__ = "TnyCz"
-    __type__ = "crypter"
+    __name__    = "TnyCz"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?tny\.cz/\w+'
@@ -15,8 +15,8 @@ class TnyCz(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Tny.cz decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
     TITLE_PATTERN = r'<title>(.+) - .+</title>'
diff --git a/module/plugins/crypter/TrailerzoneInfo.py b/module/plugins/crypter/TrailerzoneInfo.py
index 9d086b036..66a00bc74 100644
--- a/module/plugins/crypter/TrailerzoneInfo.py
+++ b/module/plugins/crypter/TrailerzoneInfo.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class TrailerzoneInfo(DeadCrypter):
-    __name__ = "TrailerzoneInfo"
-    __type__ = "crypter"
+    __name__    = "TrailerzoneInfo"
+    __type__    = "crypter"
     __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?trailerzone\.info/.*?'
     __config__  = []
 
     __description__ = """TrailerZone.info decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("godofdream", "soilfiction@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("godofdream", "soilfiction@gmail.com")]
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index 1996d7255..a737faf11 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -7,8 +7,8 @@ from module.common.json_layer import json_loads
 
 
 class TurbobitNetFolder(SimpleCrypter):
-    __name__ = "TurbobitNetFolder"
-    __type__ = "crypter"
+    __name__    = "TurbobitNetFolder"
+    __type__    = "crypter"
     __version__ = "0.04"
 
     __pattern__ = r'http://(?:www\.)?turbobit\.net/download/folder/(?P<ID>\w+)'
@@ -16,9 +16,9 @@ class TurbobitNetFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Turbobit.net folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it"),
-                   ("Walter Purcaro", "vuolter@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it"),
+                       ("Walter Purcaro", "vuolter@gmail.com")]
 
 
     TITLE_PATTERN = r'src=\'/js/lib/grid/icon/folder.png\'> <span>(.+?)</span>'
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index 3a9ab3ba9..73b8b6a2b 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -8,8 +8,8 @@ from module.plugins.internal.XFSPCrypter import XFSPCrypter
 
 
 class TusfilesNetFolder(XFSPCrypter):
-    __name__ = "TusfilesNetFolder"
-    __type__ = "crypter"
+    __name__    = "TusfilesNetFolder"
+    __type__    = "crypter"
     __version__ = "0.04"
 
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)'
@@ -17,9 +17,9 @@ class TusfilesNetFolder(XFSPCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Tusfiles.net folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("Walter Purcaro", "vuolter@gmail.com"),
-                   ("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com"),
+                       ("stickell", "l.stickell@yahoo.it")]
 
 
     HOSTER_NAME = "tusfiles.net"
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index d212b34bd..59c828174 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -5,8 +5,8 @@ from module.plugins.Crypter import Crypter
 
 
 class UlozToFolder(Crypter):
-    __name__ = "UlozToFolder"
-    __type__ = "crypter"
+    __name__    = "UlozToFolder"
+    __type__    = "crypter"
     __version__ = "0.2"
 
     __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj\.cz|zachowajto\.pl)/(m|soubory)/.*'
@@ -14,8 +14,8 @@ class UlozToFolder(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Uloz.to folder decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("zoidberg", "zoidberg@mujmail.cz")]
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
 
 
     FOLDER_PATTERN = r'<ul class="profile_files">(.*?)</ul>'
diff --git a/module/plugins/crypter/UploadableChFolder.py b/module/plugins/crypter/UploadableChFolder.py
index c69cf1f92..1a2178de4 100644
--- a/module/plugins/crypter/UploadableChFolder.py
+++ b/module/plugins/crypter/UploadableChFolder.py
@@ -4,8 +4,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class UploadableChFolder(SimpleCrypter):
-    __name__ = "UploadableChFolder"
-    __type__ = "crypter"
+    __name__    = "UploadableChFolder"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'http://(?:www\.)?uploadable\.ch/list/\w+'
@@ -13,9 +13,9 @@ class UploadableChFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """ Uploadable.ch folder decrypter plugin """
-    __license__ = "GPLv3"
-    __authors__ = [("guidobelix", "guidobelix@hotmail.it"),
-                   ("Walter Purcaro", "vuolter@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("guidobelix", "guidobelix@hotmail.it"),
+                       ("Walter Purcaro", "vuolter@gmail.com")]
 
 
     LINK_PATTERN = r'"(.+?)" class="icon_zipfile">'
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index 1d3c67df6..98922d4e2 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -6,8 +6,8 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class UploadedToFolder(SimpleCrypter):
-    __name__ = "UploadedToFolder"
-    __type__ = "crypter"
+    __name__    = "UploadedToFolder"
+    __type__    = "crypter"
     __version__ = "0.4"
 
     __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P<id>\w+)'
@@ -15,8 +15,8 @@ class UploadedToFolder(SimpleCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """UploadedTo decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("stickell", "l.stickell@yahoo.it")]
+    __license__     = "GPLv3"
+    __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
     PLAIN_PATTERN = r'<small class="date"><a href="(?P<plain>[\w/]+)" onclick='
diff --git a/module/plugins/crypter/WiiReloadedOrg.py b/module/plugins/crypter/WiiReloadedOrg.py
index 2e99c2de7..9d6f12174 100644
--- a/module/plugins/crypter/WiiReloadedOrg.py
+++ b/module/plugins/crypter/WiiReloadedOrg.py
@@ -4,13 +4,13 @@ from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
 class WiiReloadedOrg(DeadCrypter):
-    __name__ = "WiiReloadedOrg"
-    __type__ = "crypter"
+    __name__    = "WiiReloadedOrg"
+    __type__    = "crypter"
     __version__ = "0.11"
 
     __pattern__ = r'http://(?:www\.)?wii-reloaded\.org/protect/get\.php\?i=.+'
     __config__  = []
 
     __description__ = """Wii-Reloaded.org decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("hzpz", None)]
+    __license__     = "GPLv3"
+    __authors__     = [("hzpz", None)]
diff --git a/module/plugins/crypter/XFileSharingProFolder.py b/module/plugins/crypter/XFileSharingProFolder.py
index a4144a257..bc795186a 100644
--- a/module/plugins/crypter/XFileSharingProFolder.py
+++ b/module/plugins/crypter/XFileSharingProFolder.py
@@ -6,8 +6,8 @@ from module.plugins.internal.XFSPCrypter import XFSPCrypter
 
 
 class XFileSharingProFolder(XFSPCrypter):
-    __name__ = "XFileSharingProFolder"
-    __type__ = "crypter"
+    __name__    = "XFileSharingProFolder"
+    __type__    = "crypter"
     __version__ = "0.02"
 
     __pattern__ = r'^unmatchable$'
@@ -15,8 +15,8 @@ class XFileSharingProFolder(XFSPCrypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """XFileSharingPro dummy folder decrypter plugin for hook"""
-    __license__ = "GPLv3"
-    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
     def init(self):
diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py
index 6cb8601e3..c456723b3 100644
--- a/module/plugins/crypter/XupPl.py
+++ b/module/plugins/crypter/XupPl.py
@@ -4,8 +4,8 @@ from module.plugins.Crypter import Crypter
 
 
 class XupPl(Crypter):
-    __name__ = "XupPl"
-    __type__ = "crypter"
+    __name__    = "XupPl"
+    __type__    = "crypter"
     __version__ = "0.1"
 
     __pattern__ = r'https?://(?:[^/]*\.)?xup\.pl/.*'
@@ -13,8 +13,8 @@ class XupPl(Crypter):
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Xup.pl decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("z00nx", "z00nx0@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("z00nx", "z00nx0@gmail.com")]
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index 09a3466b5..c66f94753 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -10,8 +10,8 @@ from module.utils import save_join
 
 
 class YoutubeBatch(Crypter):
-    __name__ = "YoutubeBatch"
-    __type__ = "crypter"
+    __name__    = "YoutubeBatch"
+    __type__    = "crypter"
     __version__ = "1.01"
 
     __pattern__ = r'https?://(?:www\.|m\.)?youtube\.com/(?P<TYPE>user|playlist|view_play_list)(/|.*?[?&](?:list|p)=)(?P<ID>[\w-]+)'
@@ -22,8 +22,8 @@ class YoutubeBatch(Crypter):
                   ("uploads", "bool", "Grab channel unplaylisted videos", True)]
 
     __description__ = """Youtube.com channel & playlist decrypter plugin"""
-    __license__ = "GPLv3"
-    __authors__ = [("Walter Purcaro", "vuolter@gmail.com")]
+    __license__     = "GPLv3"
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
     API_KEY = "AIzaSyCKnWLNlkX-L4oD1aEzqqhRw1zczeD6_k0"
-- 
cgit v1.2.3


From b6a85c2f635a2f1d020d06920c5e4ac9f82a153d Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 28 Oct 2014 17:24:29 +0100
Subject: [DuploadOrgFolder] Mark dead

---
 module/plugins/crypter/DuploadOrgFolder.py | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DuploadOrgFolder.py b/module/plugins/crypter/DuploadOrgFolder.py
index 0daf009af..af83dffd0 100644
--- a/module/plugins/crypter/DuploadOrgFolder.py
+++ b/module/plugins/crypter/DuploadOrgFolder.py
@@ -1,20 +1,16 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter
 
 
-class DuploadOrgFolder(SimpleCrypter):
+class DuploadOrgFolder(DeadCrypter):
     __name__    = "DuploadOrgFolder"
     __type__    = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
-    __pattern__ = r'http://(?:www\.)?dupload\.org/folder/\d+/'
-    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
-                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
+    __pattern__ = r'http://(?:www\.)?dupload\.org/folder/\d+'
+    __config__  = []
 
     __description__ = """Dupload.org folder decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("stickell", "l.stickell@yahoo.it")]
-
-
-    LINK_PATTERN = r'<td style="[^"]+"><a href="(http://[^"]+)" target="_blank">[^<]+</a></td>'
-- 
cgit v1.2.3


From a98047d04df2790e63f5f5e6c1068821da1f36ae Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 2 Nov 2014 22:42:58 +0100
Subject: [XFileSharingPro] Fix hoster and crypter plugins

---
 module/plugins/crypter/XFileSharingProFolder.py | 33 ++++++++++++++++---------
 1 file changed, 22 insertions(+), 11 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/XFileSharingProFolder.py b/module/plugins/crypter/XFileSharingProFolder.py
index bc795186a..dffd8909c 100644
--- a/module/plugins/crypter/XFileSharingProFolder.py
+++ b/module/plugins/crypter/XFileSharingProFolder.py
@@ -2,13 +2,13 @@
 
 import re
 
-from module.plugins.internal.XFSPCrypter import XFSPCrypter
+from module.plugins.internal.XFSCrypter import XFSCrypter
 
 
-class XFileSharingProFolder(XFSPCrypter):
+class XFileSharingProFolder(XFSCrypter):
     __name__    = "XFileSharingProFolder"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'^unmatchable$'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -19,18 +19,29 @@ class XFileSharingProFolder(XFSPCrypter):
     __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
+    def _log(self, type, args):
+        msg = " | ".join([str(a).strip() for a in args if a])
+        logger = getattr(self.log, type)
+        logger("%s: %s: %s" % (self.__name__, self.HOSTER_NAME, msg or _("%s MARK" % type.upper())))
+
+
     def init(self):
+        super(XFileSharingProFolder, self).init()
+
         self.__pattern__ = self.core.pluginManager.crypterPlugins[self.__name__]['pattern']
-        self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower()
 
-        account_name = "".join([str.capitalize() for str in self.HOSTER_NAME.split('.')])
-        account = self.core.accountManager.getAccountPlugin(account_name)
+        self.HOSTER_DOMAIN = re.match(self.__pattern__, self.pyfile.url).group(1).lower()
+        self.HOSTER_NAME = "".join([str.capitalize() for str in self.HOSTER_DOMAIN.split('.')])
 
-        if account and account.canUse():
-            self.user, data = account.selectAccount()
-            self.req = account.getAccountRequest(self.user)
-            self.premium = account.isPremium(self.user)
+        account = self.core.accountManager.getAccountPlugin(self.HOSTER_NAME)
 
+        if account and account.canUse():
             self.account = account
+        elif self.account:
+            self.account.HOSTER_DOMAIN = self.HOSTER_DOMAIN
         else:
-            self.account.HOSTER_NAME = self.HOSTER_NAME
+            return
+
+        self.user, data = self.account.selectAccount()
+        self.req = self.account.getAccountRequest(self.user)
+        self.premium = self.account.isPremium(self.user)
-- 
cgit v1.2.3


From 772e47ef806d18fd209e910be0535bce7c07dc7b Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 2 Nov 2014 22:47:07 +0100
Subject: Update all other plugins

---
 module/plugins/crypter/BitshareComFolder.py       | 4 ++--
 module/plugins/crypter/DataHuFolder.py            | 4 ++--
 module/plugins/crypter/EasybytezComFolder.py      | 8 ++++----
 module/plugins/crypter/FilecloudIoFolder.py       | 4 ++--
 module/plugins/crypter/FilefactoryComFolder.py    | 4 ++--
 module/plugins/crypter/FilerNetFolder.py          | 4 ++--
 module/plugins/crypter/FilestubeCom.py            | 4 ++--
 module/plugins/crypter/FiletramCom.py             | 4 ++--
 module/plugins/crypter/FreakhareComFolder.py      | 4 ++--
 module/plugins/crypter/ImgurComAlbum.py           | 4 ++--
 module/plugins/crypter/JunocloudMeFolder.py       | 8 ++++----
 module/plugins/crypter/MediafireComFolder.py      | 4 ++--
 module/plugins/crypter/MultiUpOrg.py              | 4 ++--
 module/plugins/crypter/NetfolderIn.py             | 4 ++--
 module/plugins/crypter/NosvideoCom.py             | 4 ++--
 module/plugins/crypter/PastebinCom.py             | 4 ++--
 module/plugins/crypter/RapidfileshareNetFolder.py | 8 ++++----
 module/plugins/crypter/TnyCz.py                   | 4 ++--
 module/plugins/crypter/TurbobitNetFolder.py       | 4 ++--
 module/plugins/crypter/TusfilesNetFolder.py       | 8 ++++----
 module/plugins/crypter/UploadableChFolder.py      | 4 ++--
 module/plugins/crypter/UploadedToFolder.py        | 4 ++--
 22 files changed, 52 insertions(+), 52 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py
index 90829203a..e77870d26 100644
--- a/module/plugins/crypter/BitshareComFolder.py
+++ b/module/plugins/crypter/BitshareComFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class BitshareComFolder(SimpleCrypter):
     __name__    = "BitshareComFolder"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?bitshare\.com/\?d=\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -18,4 +18,4 @@ class BitshareComFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<a href="(http://bitshare\.com/files/.+)">.+</a></td>'
-    TITLE_PATTERN = r'View public folder "(.+)"</h1>'
+    NAME_PATTERN = r'View public folder "(.+)"</h1>'
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 9b52fbdda..39523c05d 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class DataHuFolder(SimpleCrypter):
     __name__    = "DataHuFolder"
     __type__    = "crypter"
-    __version__ = "0.04"
+    __version__ = "0.05"
 
     __pattern__ = r'http://(?:www\.)?data\.hu/dir/\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -21,7 +21,7 @@ class DataHuFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<a href=\'(http://data\.hu/get/.+)\' target=\'_blank\'>\1</a>'
-    TITLE_PATTERN = ur'<title>(.+) Let\xf6lt\xe9se</title>'
+    NAME_PATTERN = ur'<title>(.+) Let\xf6lt\xe9se</title>'
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index 5f8daf55c..f53c8c8b2 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.XFSPCrypter import XFSPCrypter
+from module.plugins.internal.XFSCrypter import XFSCrypter
 
 
-class EasybytezComFolder(XFSPCrypter):
+class EasybytezComFolder(XFSCrypter):
     __name__    = "EasybytezComFolder"
     __type__    = "crypter"
-    __version__ = "0.09"
+    __version__ = "0.10"
 
     __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -17,6 +17,6 @@ class EasybytezComFolder(XFSPCrypter):
     __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
-    HOSTER_NAME = "easybytez.com"
+    HOSTER_DOMAIN = "easybytez.com"
 
     LOGIN_ACCOUNT = True
diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
index c78dcb490..cc5c2a160 100644
--- a/module/plugins/crypter/FilecloudIoFolder.py
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FilecloudIoFolder(SimpleCrypter):
     __name__    = "FilecloudIoFolder"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'https?://(?:www\.)?(filecloud\.io|ifile\.it)/_\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -18,4 +18,4 @@ class FilecloudIoFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'href="(http://filecloud\.io/\w+)" title'
-    TITLE_PATTERN = r'>(.+?) - filecloud\.io<'
+    NAME_PATTERN = r'>(.+?) - filecloud\.io<'
diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index 996e24f05..4975ba506 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FilefactoryComFolder(SimpleCrypter):
     __name__    = "FilefactoryComFolder"
     __type__    = "crypter"
-    __version__ = "0.3"
+    __version__ = "0.31"
 
     __pattern__ = r'https?://(?:www\.)?filefactory\.com/(?:f|folder)/\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -18,7 +18,7 @@ class FilefactoryComFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<td><a href="([^"]+)">'
-    TITLE_PATTERN = r'<h1>Files in <span>(.+)</span></h1>'
+    NAME_PATTERN = r'<h1>Files in <span>(.+)</span></h1>'
     PAGES_PATTERN = r'data-paginator-totalPages="(\d+)"'
 
     COOKIES = [('.filefactory.com', 'locale', 'en_US.utf8')]
diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
index 2def580a4..37c958e87 100644
--- a/module/plugins/crypter/FilerNetFolder.py
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FilerNetFolder(SimpleCrypter):
     __name__    = "FilerNetFolder"
     __type__    = "crypter"
-    __version__ = "0.4"
+    __version__ = "0.41"
 
     __pattern__ = r'https?://filer\.net/folder/\w{16}'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -19,7 +19,7 @@ class FilerNetFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'href="(/get/\w{16})">(?!<)'
-    TITLE_PATTERN = r'<h3>(.+?) - <small'
+    NAME_PATTERN = r'<h3>(.+?) - <small'
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py
index ccbacef8b..ecd6b9fc7 100644
--- a/module/plugins/crypter/FilestubeCom.py
+++ b/module/plugins/crypter/FilestubeCom.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FilestubeCom(SimpleCrypter):
     __name__    = "FilestubeCom"
     __type__    = "crypter"
-    __version__ = "0.04"
+    __version__ = "0.05"
 
     __pattern__ = r'http://(?:www\.)?filestube\.(?:com|to)/\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -18,4 +18,4 @@ class FilestubeCom(SimpleCrypter):
 
 
     LINK_PATTERN = r'<a class=\"file-link-main(?: noref)?\" [^>]* href=\"(http://[^\"]+)'
-    TITLE_PATTERN = r'<h1\s*> (.+)  download\s*</h1>'
+    NAME_PATTERN = r'<h1\s*> (.+)  download\s*</h1>'
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index f48d56201..50233e903 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FiletramCom(SimpleCrypter):
     __name__    = "FiletramCom"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?filetram\.com/[^/]+/.+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -19,4 +19,4 @@ class FiletramCom(SimpleCrypter):
 
 
     LINK_PATTERN = r'\s+(http://.+)'
-    TITLE_PATTERN = r'<title>(.+?) - Free Download'
+    NAME_PATTERN = r'<title>(.+?) - Free Download'
diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py
index d7a1387d5..4d9ffca1d 100644
--- a/module/plugins/crypter/FreakhareComFolder.py
+++ b/module/plugins/crypter/FreakhareComFolder.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class FreakhareComFolder(SimpleCrypter):
     __name__    = "FreakhareComFolder"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?freakshare\.com/folder/.+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -20,7 +20,7 @@ class FreakhareComFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<a href="(http://freakshare\.com/files/[^"]+)" target="_blank">'
-    TITLE_PATTERN = r'Folder:</b> (.+)'
+    NAME_PATTERN = r'Folder:</b> (.+)'
     PAGES_PATTERN = r'Pages: +(\d+)'
 
 
diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index cfe887baf..5402ed43f 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -7,7 +7,7 @@ from module.utils import uniqify
 class ImgurComAlbum(SimpleCrypter):
     __name__    = "ImgurComAlbum"
     __type__    = "crypter"
-    __version__ = "0.5"
+    __version__ = "0.51"
 
     __pattern__ = r'https?://(?:www\.|m\.)?imgur\.com/(a|gallery|)/?\w{5,7}'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -18,7 +18,7 @@ class ImgurComAlbum(SimpleCrypter):
     __authors__     = [("nath_schwarz", "nathan.notwhite@gmail.com")]
 
 
-    TITLE_PATTERN = r'(.+?) - Imgur'
+    NAME_PATTERN = r'(.+?) - Imgur'
     LINK_PATTERN = r'i\.imgur\.com/\w{7}s?\.(?:jpeg|jpg|png|gif|apng)'
 
 
diff --git a/module/plugins/crypter/JunocloudMeFolder.py b/module/plugins/crypter/JunocloudMeFolder.py
index 1e08fc352..509f1f7ec 100644
--- a/module/plugins/crypter/JunocloudMeFolder.py
+++ b/module/plugins/crypter/JunocloudMeFolder.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.XFSPCrypter import XFSPCrypter
+from module.plugins.internal.XFSCrypter import XFSCrypter
 
 
-class JunocloudMeFolder(XFSPCrypter):
+class JunocloudMeFolder(XFSCrypter):
     __name__    = "JunocloudMeFolder"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?junocloud\.me/folders/(?P<ID>\d+/\w+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -17,4 +17,4 @@ class JunocloudMeFolder(XFSPCrypter):
     __authors__     = [("guidobelix", "guidobelix@hotmail.it")]
 
 
-    HOSTER_NAME = "junocloud.me"
+    HOSTER_DOMAIN = "junocloud.me"
diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index f4858e214..c83de4715 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -21,7 +21,7 @@ class MediafireComFolder(Crypter):
 
 
     FOLDER_KEY_PATTERN = r'var afI= \'(\w+)'
-    FILE_URL_PATTERN = r'<meta property="og:url" content="http://www\.mediafire\.com/\?(\w+)"/>'
+    LINK_PATTERN = r'<meta property="og:url" content="http://www\.mediafire\.com/\?(\w+)"/>'
 
 
     def decrypt(self, pyfile):
@@ -31,7 +31,7 @@ class MediafireComFolder(Crypter):
         if result == 0:
             # load and parse html
             html = self.load(pyfile.url)
-            m = re.search(self.FILE_URL_PATTERN, html)
+            m = re.search(self.LINK_PATTERN, html)
             if m:
                 # file page
                 self.urls.append("http://www.mediafire.com/file/%s" % m.group(1))
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index 25575a7f8..717b209ec 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -9,7 +9,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class MultiUpOrg(SimpleCrypter):
     __name__    = "MultiUpOrg"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?multiup\.org/(en|fr)/(?P<TYPE>project|download|miror)/\w+(/\w+)?'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -20,7 +20,7 @@ class MultiUpOrg(SimpleCrypter):
     __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
-    TITLE_PATTERN = r'<title>.*(?:Project|Projet|ownload|élécharger) (.+?) (?:\(|- )'
+    NAME_PATTERN = r'<title>.*(?:Project|Projet|ownload|élécharger) (.+?) (?:\(|- )'
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index 4309d30a1..d94b88af1 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class NetfolderIn(SimpleCrypter):
     __name__    = "NetfolderIn"
     __type__    = "crypter"
-    __version__ = "0.7"
+    __version__ = "0.71"
 
     __pattern__ = r'http://(?:www\.)?netfolder\.in/((?P<id1>\w+)/\w+|folder\.php\?folder_id=(?P<id2>\w+))'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -20,7 +20,7 @@ class NetfolderIn(SimpleCrypter):
                        ("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
 
-    TITLE_PATTERN = r'<div class="Text">Inhalt des Ordners <span.*>(.+)</span></div>'
+    NAME_PATTERN = r'<div class="Text">Inhalt des Ordners <span.*>(.+)</span></div>'
 
 
     def decrypt(self, pyfile):
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index e3335adc7..bc908279f 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class NosvideoCom(SimpleCrypter):
     __name__    = "NosvideoCom"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?nosvideo\.com/\?v=\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -18,4 +18,4 @@ class NosvideoCom(SimpleCrypter):
 
 
     LINK_PATTERN = r'href="(http://(?:w{3}\.)?nosupload\.com/\?d=\w+)"'
-    TITLE_PATTERN = r'<[tT]itle>Watch (.+?)<'
+    NAME_PATTERN = r'<[tT]itle>Watch (.+?)<'
diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py
index 185de1e47..e0dfa4fd8 100644
--- a/module/plugins/crypter/PastebinCom.py
+++ b/module/plugins/crypter/PastebinCom.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class PastebinCom(SimpleCrypter):
     __name__    = "PastebinCom"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?pastebin\.com/\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -18,4 +18,4 @@ class PastebinCom(SimpleCrypter):
 
 
     LINK_PATTERN = r'<div class="de\d+">(https?://[^ <]+)(?:[^<]*)</div>'
-    TITLE_PATTERN = r'<div class="paste_box_line1" title="([^"]+)">'
+    NAME_PATTERN = r'<div class="paste_box_line1" title="([^"]+)">'
diff --git a/module/plugins/crypter/RapidfileshareNetFolder.py b/module/plugins/crypter/RapidfileshareNetFolder.py
index 43a3e34dd..5531d5a90 100644
--- a/module/plugins/crypter/RapidfileshareNetFolder.py
+++ b/module/plugins/crypter/RapidfileshareNetFolder.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.XFSPCrypter import XFSPCrypter
+from module.plugins.internal.XFSCrypter import XFSCrypter
 
 
-class RapidfileshareNetFolder(XFSPCrypter):
+class RapidfileshareNetFolder(XFSCrypter):
     __name__    = "RapidfileshareNetFolder"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?rapidfileshare\.net/users/\w+/\d+/\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -17,4 +17,4 @@ class RapidfileshareNetFolder(XFSPCrypter):
     __authors__     = [("guidobelix", "guidobelix@hotmail.it")]
 
 
-    HOSTER_NAME = "rapidfileshare.net"
+    HOSTER_DOMAIN = "rapidfileshare.net"
diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py
index 742b2f7ed..4e29d1032 100644
--- a/module/plugins/crypter/TnyCz.py
+++ b/module/plugins/crypter/TnyCz.py
@@ -8,7 +8,7 @@ import re
 class TnyCz(SimpleCrypter):
     __name__    = "TnyCz"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?tny\.cz/\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -19,7 +19,7 @@ class TnyCz(SimpleCrypter):
     __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
-    TITLE_PATTERN = r'<title>(.+) - .+</title>'
+    NAME_PATTERN = r'<title>(.+) - .+</title>'
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index a737faf11..79fd7d7e0 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -9,7 +9,7 @@ from module.common.json_layer import json_loads
 class TurbobitNetFolder(SimpleCrypter):
     __name__    = "TurbobitNetFolder"
     __type__    = "crypter"
-    __version__ = "0.04"
+    __version__ = "0.05"
 
     __pattern__ = r'http://(?:www\.)?turbobit\.net/download/folder/(?P<ID>\w+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -21,7 +21,7 @@ class TurbobitNetFolder(SimpleCrypter):
                        ("Walter Purcaro", "vuolter@gmail.com")]
 
 
-    TITLE_PATTERN = r'src=\'/js/lib/grid/icon/folder.png\'> <span>(.+?)</span>'
+    NAME_PATTERN = r'src=\'/js/lib/grid/icon/folder.png\'> <span>(.+?)</span>'
 
 
     def _getLinks(self, id, page=1):
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index 73b8b6a2b..7c1375f93 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -4,13 +4,13 @@ import math
 import re
 from urlparse import urljoin
 
-from module.plugins.internal.XFSPCrypter import XFSPCrypter
+from module.plugins.internal.XFSCrypter import XFSCrypter
 
 
-class TusfilesNetFolder(XFSPCrypter):
+class TusfilesNetFolder(XFSCrypter):
     __name__    = "TusfilesNetFolder"
     __type__    = "crypter"
-    __version__ = "0.04"
+    __version__ = "0.05"
 
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -22,7 +22,7 @@ class TusfilesNetFolder(XFSPCrypter):
                        ("stickell", "l.stickell@yahoo.it")]
 
 
-    HOSTER_NAME = "tusfiles.net"
+    HOSTER_DOMAIN = "tusfiles.net"
 
     PAGES_PATTERN = r'>\((\d+) \w+\)<'
 
diff --git a/module/plugins/crypter/UploadableChFolder.py b/module/plugins/crypter/UploadableChFolder.py
index 1a2178de4..9653d8891 100644
--- a/module/plugins/crypter/UploadableChFolder.py
+++ b/module/plugins/crypter/UploadableChFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class UploadableChFolder(SimpleCrypter):
     __name__    = "UploadableChFolder"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?uploadable\.ch/list/\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -19,6 +19,6 @@ class UploadableChFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'"(.+?)" class="icon_zipfile">'
-    TITLE_PATTERN = r'<div class="folder"><span>&nbsp;</span>(.+?)</div>'
+    NAME_PATTERN = r'<div class="folder"><span>&nbsp;</span>(.+?)</div>'
     OFFLINE_PATTERN = r'We are sorry... The URL you entered cannot be found on the server.'
     TEMP_OFFLINE_PATTERN = r'<div class="icon_err">'
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index 98922d4e2..23e803979 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class UploadedToFolder(SimpleCrypter):
     __name__    = "UploadedToFolder"
     __type__    = "crypter"
-    __version__ = "0.4"
+    __version__ = "0.41"
 
     __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P<id>\w+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -20,7 +20,7 @@ class UploadedToFolder(SimpleCrypter):
 
 
     PLAIN_PATTERN = r'<small class="date"><a href="(?P<plain>[\w/]+)" onclick='
-    TITLE_PATTERN = r'<title>(.+?)<'
+    NAME_PATTERN = r'<title>(.+?)<'
 
 
     def decrypt(self, pyfile):
-- 
cgit v1.2.3


From ae15749449563f5adaabd250ea62460c18af6498 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 3 Nov 2014 12:16:40 +0100
Subject: Update crypters

---
 module/plugins/crypter/BitshareComFolder.py    |  2 +-
 module/plugins/crypter/DataHuFolder.py         | 25 ++++++++++---------------
 module/plugins/crypter/DevhostStFolder.py      |  9 ++++++---
 module/plugins/crypter/FilecloudIoFolder.py    |  2 +-
 module/plugins/crypter/FilefactoryComFolder.py |  2 +-
 module/plugins/crypter/FilerNetFolder.py       |  2 +-
 module/plugins/crypter/FilestubeCom.py         |  2 +-
 module/plugins/crypter/FiletramCom.py          |  2 +-
 module/plugins/crypter/FreakhareComFolder.py   |  2 +-
 module/plugins/crypter/ImgurComAlbum.py        |  2 +-
 module/plugins/crypter/MultiUpOrg.py           |  2 +-
 module/plugins/crypter/NetfolderIn.py          | 18 ++++--------------
 module/plugins/crypter/NosvideoCom.py          |  2 +-
 module/plugins/crypter/PastebinCom.py          |  2 +-
 module/plugins/crypter/SexuriaCom.py           |  6 ++----
 module/plugins/crypter/TnyCz.py                |  2 +-
 module/plugins/crypter/TurbobitNetFolder.py    |  2 +-
 module/plugins/crypter/TusfilesNetFolder.py    |  4 ++--
 module/plugins/crypter/UploadableChFolder.py   |  2 +-
 module/plugins/crypter/UploadedToFolder.py     | 25 +++++++++----------------
 20 files changed, 47 insertions(+), 68 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py
index e77870d26..e4038aebf 100644
--- a/module/plugins/crypter/BitshareComFolder.py
+++ b/module/plugins/crypter/BitshareComFolder.py
@@ -18,4 +18,4 @@ class BitshareComFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<a href="(http://bitshare\.com/files/.+)">.+</a></td>'
-    NAME_PATTERN = r'View public folder "(.+)"</h1>'
+    NAME_PATTERN = r'View public folder "(?P<N>.+)"</h1>'
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 39523c05d..0399e686d 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class DataHuFolder(SimpleCrypter):
     __name__    = "DataHuFolder"
     __type__    = "crypter"
-    __version__ = "0.05"
+    __version__ = "0.06"
 
     __pattern__ = r'http://(?:www\.)?data\.hu/dir/\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -21,25 +21,20 @@ class DataHuFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<a href=\'(http://data\.hu/get/.+)\' target=\'_blank\'>\1</a>'
-    NAME_PATTERN = ur'<title>(.+) Let\xf6lt\xe9se</title>'
+    NAME_PATTERN = ur'<title>(?P<N>.+) Let\xf6lt\xe9se</title>'
 
 
-    def decrypt(self, pyfile):
-        self.html = self.load(pyfile.url, decode=True)
+    def prepare(self):
+        super(DataHuFolder, self).prepare()
 
         if u'K\xe9rlek add meg a jelsz\xf3t' in self.html:  # Password protected
             password = self.getPassword()
-            if password is '':
-                self.fail(_("No password specified, please set right password on Add package form and retry"))
-            self.logDebug("The folder is password protected', 'Using password: " + password)
-            self.html = self.load(pyfile.url, post={'mappa_pass': password}, decode=True)
-            if u'Hib\xe1s jelsz\xf3' in self.html:  # Wrong password
-                self.fail(_("Incorrect password, please set right password on Add package form and retry"))
+            if not password:
+                self.fail(_("Password required"))
 
-        package_name, folder_name = self.getPackageNameAndFolder()
+            self.logDebug("The folder is password protected', 'Using password: " + password)
 
-        package_links = re.findall(self.LINK_PATTERN, self.html)
-        self.logDebug("Package has %d links" % len(package_links))
+            self.html = self.load(self.pyfile.url, post={'mappa_pass': password}, decode=True)
 
-        if package_links:
-            self.packages = [(package_name, package_links, folder_name)]
+            if u'Hib\xe1s jelsz\xf3' in self.html:  # Wrong password
+                self.fail(_("Wrong password"))
diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py
index 397a72ac4..16931984b 100644
--- a/module/plugins/crypter/DevhostStFolder.py
+++ b/module/plugins/crypter/DevhostStFolder.py
@@ -13,7 +13,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class DevhostStFolder(SimpleCrypter):
     __name__    = "DevhostStFolder"
     __type__    = "crypter"
-    __version__ = "0.02"
+    __version__ = "0.03"
 
     __pattern__ = r'http://(?:www\.)?d-h\.st/users/(?P<USER>\w+)(/\?fld_id=(?P<ID>\d+))?'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -29,7 +29,10 @@ class DevhostStFolder(SimpleCrypter):
     OFFLINE_PATTERN = r'"/cHP">test\.png<'
 
 
-    def getPackageNameAndFolder(self):
+    def getFileInfo(self):
+        if re.search(self.OFFLINE_PATTERN, self.html):
+            self.offline()
+
         try:
             id = re.match(self.__pattern__, self.pyfile.url).group('ID')
             if id == "0":
@@ -48,7 +51,7 @@ class DevhostStFolder(SimpleCrypter):
             self.logDebug(str(e))
             name = folder = re.match(self.__pattern__, self.pyfile.url).group('USER')
 
-        return name, folder
+        return {'name': name, 'folder': folder}
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
index cc5c2a160..5640ab5c9 100644
--- a/module/plugins/crypter/FilecloudIoFolder.py
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -18,4 +18,4 @@ class FilecloudIoFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'href="(http://filecloud\.io/\w+)" title'
-    NAME_PATTERN = r'>(.+?) - filecloud\.io<'
+    NAME_PATTERN = r'>(?P<N>.+?) - filecloud\.io<'
diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index 4975ba506..ab4e76092 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -18,7 +18,7 @@ class FilefactoryComFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<td><a href="([^"]+)">'
-    NAME_PATTERN = r'<h1>Files in <span>(.+)</span></h1>'
+    NAME_PATTERN = r'<h1>Files in <span>(?P<N>.+)</span></h1>'
     PAGES_PATTERN = r'data-paginator-totalPages="(\d+)"'
 
     COOKIES = [('.filefactory.com', 'locale', 'en_US.utf8')]
diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
index 37c958e87..a2daba136 100644
--- a/module/plugins/crypter/FilerNetFolder.py
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -19,7 +19,7 @@ class FilerNetFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'href="(/get/\w{16})">(?!<)'
-    NAME_PATTERN = r'<h3>(.+?) - <small'
+    NAME_PATTERN = r'<h3>(?P<N>.+?) - <small'
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py
index ecd6b9fc7..29de108e5 100644
--- a/module/plugins/crypter/FilestubeCom.py
+++ b/module/plugins/crypter/FilestubeCom.py
@@ -18,4 +18,4 @@ class FilestubeCom(SimpleCrypter):
 
 
     LINK_PATTERN = r'<a class=\"file-link-main(?: noref)?\" [^>]* href=\"(http://[^\"]+)'
-    NAME_PATTERN = r'<h1\s*> (.+)  download\s*</h1>'
+    NAME_PATTERN = r'<h1\s*> (?P<N>.+)  download\s*</h1>'
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index 50233e903..e4c8b6360 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -19,4 +19,4 @@ class FiletramCom(SimpleCrypter):
 
 
     LINK_PATTERN = r'\s+(http://.+)'
-    NAME_PATTERN = r'<title>(.+?) - Free Download'
+    NAME_PATTERN = r'<title>(?P<N>.+?) - Free Download'
diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py
index 4d9ffca1d..d4d3c6d3c 100644
--- a/module/plugins/crypter/FreakhareComFolder.py
+++ b/module/plugins/crypter/FreakhareComFolder.py
@@ -20,7 +20,7 @@ class FreakhareComFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<a href="(http://freakshare\.com/files/[^"]+)" target="_blank">'
-    NAME_PATTERN = r'Folder:</b> (.+)'
+    NAME_PATTERN = r'Folder:</b> (?P<N>.+)'
     PAGES_PATTERN = r'Pages: +(\d+)'
 
 
diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index 5402ed43f..f8f226a1b 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -18,7 +18,7 @@ class ImgurComAlbum(SimpleCrypter):
     __authors__     = [("nath_schwarz", "nathan.notwhite@gmail.com")]
 
 
-    NAME_PATTERN = r'(.+?) - Imgur'
+    NAME_PATTERN = r'(?P<N>.+?) - Imgur'
     LINK_PATTERN = r'i\.imgur\.com/\w{7}s?\.(?:jpeg|jpg|png|gif|apng)'
 
 
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index 717b209ec..5f3fc8b17 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -20,7 +20,7 @@ class MultiUpOrg(SimpleCrypter):
     __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
-    NAME_PATTERN = r'<title>.*(?:Project|Projet|ownload|élécharger) (.+?) (?:\(|- )'
+    NAME_PATTERN = r'<title>.*(?:Project|Projet|ownload|élécharger) (?P<N>.+?) (\(|- )'
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index d94b88af1..a47bd0503 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -8,7 +8,7 @@ from module.plugins.internal.SimpleCrypter import SimpleCrypter
 class NetfolderIn(SimpleCrypter):
     __name__    = "NetfolderIn"
     __type__    = "crypter"
-    __version__ = "0.71"
+    __version__ = "0.72"
 
     __pattern__ = r'http://(?:www\.)?netfolder\.in/((?P<id1>\w+)/\w+|folder\.php\?folder_id=(?P<id2>\w+))'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -20,12 +20,11 @@ class NetfolderIn(SimpleCrypter):
                        ("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
 
-    NAME_PATTERN = r'<div class="Text">Inhalt des Ordners <span.*>(.+)</span></div>'
+    NAME_PATTERN = r'<div class="Text">Inhalt des Ordners <span.*>(?P<N>.+)</span></div>'
 
 
-    def decrypt(self, pyfile):
-        # Request package
-        self.html = self.load(pyfile.url)
+    def prepare(self):
+        super(NetfolderIn, self).prepare()
 
         # Check for password protection
         if self.isPasswordProtected():
@@ -33,15 +32,6 @@ class NetfolderIn(SimpleCrypter):
             if not self.html:
                 self.fail(_("Incorrect password, please set right password on Add package form and retry"))
 
-        # Get package name and folder
-        (package_name, folder_name) = self.getPackageNameAndFolder()
-
-        # Get package links
-        package_links = self.getLinks()
-
-        # Set package
-        self.packages = [(package_name, package_links, folder_name)]
-
 
     def isPasswordProtected(self):
         if '<input type="password" name="password"' in self.html:
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index bc908279f..3abefdadb 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -18,4 +18,4 @@ class NosvideoCom(SimpleCrypter):
 
 
     LINK_PATTERN = r'href="(http://(?:w{3}\.)?nosupload\.com/\?d=\w+)"'
-    NAME_PATTERN = r'<[tT]itle>Watch (.+?)<'
+    NAME_PATTERN = r'<[tT]itle>Watch (?P<N>.+?)<'
diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py
index e0dfa4fd8..1dae39bb8 100644
--- a/module/plugins/crypter/PastebinCom.py
+++ b/module/plugins/crypter/PastebinCom.py
@@ -18,4 +18,4 @@ class PastebinCom(SimpleCrypter):
 
 
     LINK_PATTERN = r'<div class="de\d+">(https?://[^ <]+)(?:[^<]*)</div>'
-    NAME_PATTERN = r'<div class="paste_box_line1" title="([^"]+)">'
+    NAME_PATTERN = r'<div class="paste_box_line1" title="(?P<N>[^"]+)">'
diff --git a/module/plugins/crypter/SexuriaCom.py b/module/plugins/crypter/SexuriaCom.py
index 6166c2023..3c952fd6b 100644
--- a/module/plugins/crypter/SexuriaCom.py
+++ b/module/plugins/crypter/SexuriaCom.py
@@ -34,10 +34,8 @@ class SexuriaCom(Crypter):
         self.package = pyfile.package()
 
         # Get package links
-        (package_name, package_links, folder_name, package_pwd) = self.decryptLinks(self.pyfile.url)
-        if package_pwd:
-            self.pyfile.package().password = package_pwd
-        self.packages.append((package_name, package_links, folder_name))
+        package_name, self.links, folder_name, package_pwd = self.decryptLinks(self.pyfile.url)
+        self.packages = [(package_name, self.links, folder_name)]
 
 
     def decryptLinks(self, url):
diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py
index 4e29d1032..6dde729f5 100644
--- a/module/plugins/crypter/TnyCz.py
+++ b/module/plugins/crypter/TnyCz.py
@@ -19,7 +19,7 @@ class TnyCz(SimpleCrypter):
     __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
-    NAME_PATTERN = r'<title>(.+) - .+</title>'
+    NAME_PATTERN = r'<title>(?P<N>.+) - .+</title>'
 
 
     def getLinks(self):
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index 79fd7d7e0..4e07564af 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -21,7 +21,7 @@ class TurbobitNetFolder(SimpleCrypter):
                        ("Walter Purcaro", "vuolter@gmail.com")]
 
 
-    NAME_PATTERN = r'src=\'/js/lib/grid/icon/folder.png\'> <span>(.+?)</span>'
+    NAME_PATTERN = r'src=\'/js/lib/grid/icon/folder.png\'> <span>(?P<N>.+?)</span>'
 
 
     def _getLinks(self, id, page=1):
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index 7c1375f93..e8da59736 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -10,7 +10,7 @@ from module.plugins.internal.XFSCrypter import XFSCrypter
 class TusfilesNetFolder(XFSCrypter):
     __name__    = "TusfilesNetFolder"
     __type__    = "crypter"
-    __version__ = "0.05"
+    __version__ = "0.06"
 
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -42,4 +42,4 @@ class TusfilesNetFolder(XFSCrypter):
 
         for p in xrange(2, pages + 1):
             self.html = self.loadPage(p)
-            self.package_links += self.getLinks()
+            self.links += self.getLinks()
diff --git a/module/plugins/crypter/UploadableChFolder.py b/module/plugins/crypter/UploadableChFolder.py
index 9653d8891..070753ac0 100644
--- a/module/plugins/crypter/UploadableChFolder.py
+++ b/module/plugins/crypter/UploadableChFolder.py
@@ -19,6 +19,6 @@ class UploadableChFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'"(.+?)" class="icon_zipfile">'
-    NAME_PATTERN = r'<div class="folder"><span>&nbsp;</span>(.+?)</div>'
+    NAME_PATTERN = r'<div class="folder"><span>&nbsp;</span>(?P<N>.+?)</div>'
     OFFLINE_PATTERN = r'We are sorry... The URL you entered cannot be found on the server.'
     TEMP_OFFLINE_PATTERN = r'<div class="icon_err">'
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index 23e803979..359ba92d0 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -2,13 +2,15 @@
 
 import re
 
+from urlparse import urljoin
+
 from module.plugins.internal.SimpleCrypter import SimpleCrypter
 
 
 class UploadedToFolder(SimpleCrypter):
     __name__    = "UploadedToFolder"
     __type__    = "crypter"
-    __version__ = "0.41"
+    __version__ = "0.42"
 
     __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P<id>\w+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -20,22 +22,13 @@ class UploadedToFolder(SimpleCrypter):
 
 
     PLAIN_PATTERN = r'<small class="date"><a href="(?P<plain>[\w/]+)" onclick='
-    NAME_PATTERN = r'<title>(.+?)<'
-
+    NAME_PATTERN = r'<title>(?P<N>.+?)<'
 
-    def decrypt(self, pyfile):
-        self.html = self.load(pyfile.url)
-
-        package_name, folder_name = self.getPackageNameAndFolder()
 
+    def getLinks(self):
         m = re.search(self.PLAIN_PATTERN, self.html)
-        if m:
-            plain_link = 'http://uploaded.net/' + m.group('plain')
-        else:
-            self.error(_("Unable to find plain url list"))
-
-        self.html = self.load(plain_link)
-        package_links = self.html.split('\n')[:-1]
-        self.logDebug("Package has %d links" % len(package_links))
+        if m is None:
+            self.error(_("PLAIN_PATTERN not found"))
 
-        self.packages = [(package_name, package_links, folder_name)]
+        plain_link = urljoin("http://uploaded.net/", m.group('plain'))
+        return self.load(plain_link).split('\n')[:-1]
-- 
cgit v1.2.3


From 03f3b86f500c495932fd118b54569d92f700847c Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 3 Nov 2014 16:57:55 +0100
Subject: Code cosmetics about file_info and other stuff

---
 module/plugins/crypter/LinkdecrypterCom.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index f858da9d8..91318eadf 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -9,7 +9,7 @@ class LinkdecrypterCom(Crypter):
     __type__    = "crypter"
     __version__ = "0.27"
 
-    __pattern__ = None
+    __pattern__ = r'^unmatchable$'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
-- 
cgit v1.2.3


From 29b39ec6020ec8be623687f03bdf48172a612a66 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Thu, 6 Nov 2014 04:32:37 +0100
Subject: Code cosmetics

---
 module/plugins/crypter/EasybytezComFolder.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index f53c8c8b2..fa3e6165c 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -8,7 +8,7 @@ class EasybytezComFolder(XFSCrypter):
     __type__    = "crypter"
     __version__ = "0.10"
 
-    __pattern__ = r'http://(?:www\.)?easybytez\.com/users/(?P<ID>\d+/\d+)'
+    __pattern__ = r'http://(?:www\.)?easybytez\.com/users/\d+/\d+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
-- 
cgit v1.2.3


From 58c9c8d78417ec6ccac5b6b117ea540033a09574 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 7 Nov 2014 17:08:21 +0100
Subject: Fix download link formatting in some plugins

---
 module/plugins/crypter/EmbeduploadCom.py |  2 +-
 module/plugins/crypter/SafelinkingNet.py | 16 +++++++---------
 2 files changed, 8 insertions(+), 10 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 7f06c99bd..1c372c1ca 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -53,7 +53,7 @@ class EmbeduploadCom(Crypter):
         for link in tmp_links:
             try:
                 header = self.load(link, just_header=True)
-                if "location" in header:
+                if 'location' in header:
                     new_links.append(header['location'])
             except BadHeader:
                 pass
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index 1fbb6e137..9bb6c3229 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -14,7 +14,7 @@ from module.plugins.internal.CaptchaService import SolveMedia
 class SafelinkingNet(Crypter):
     __name__    = "SafelinkingNet"
     __type__    = "crypter"
-    __version__ = "0.1"
+    __version__ = "0.11"
 
     __pattern__ = r'https?://(?:www\.)?safelinking\.net/([pd])/\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -30,20 +30,18 @@ class SafelinkingNet(Crypter):
 
     def decrypt(self, pyfile):
         url = pyfile.url
+
         if re.match(self.__pattern__, url).group(1) == "d":
-            self.req.http.c.setopt(FOLLOWLOCATION, 0)
-            self.load(url)
-            m = re.search("^Location: (.+)$", self.req.http.header, re.M)
-            if m:
-                self.urls = [m.group(1)]
+
+            header = self.load(url, just_header=True)
+            if 'location' in header:
+                self.urls = [header['location']]
             else:
-                self.fail(_("Couldn't find forwarded Link"))
+                self.error(_("Couldn't find forwarded Link"))
 
         else:
             postData = {"post-protect": "1"}
 
-            self.html = self.load(url)
-
             if "link-password" in self.html:
                 postData['link-password'] = self.getPassword()
 
-- 
cgit v1.2.3


From bd8259220ab4d56ab419b7b32045b08cc9b0a7c8 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 9 Nov 2014 03:08:19 +0100
Subject: Use with statement instead open method when accessing fod + handle
 i/o error

---
 module/plugins/crypter/RelinkUs.py | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index cdb699ae0..4c84b62f7 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -216,12 +216,11 @@ class RelinkUs(Crypter):
                 dlc = self.load(container_url)
                 dlc_filename = self.fileid + ".dlc"
                 dlc_filepath = os.path.join(self.config['general']['download_folder'], dlc_filename)
-                f = open(dlc_filepath, "wb")
-                f.write(dlc)
-                f.close()
+                with open(dlc_filepath, "wb") as f:
+                    f.write(dlc)
                 package_links.append(dlc_filepath)
             except:
-                self.logDebug("Unable to download DLC container")
+                self.fail("Unable to download DLC container")
         return package_links
 
 
-- 
cgit v1.2.3


From af2e5a87e0951b574cbd8e0a485a6574f1d00cd5 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 9 Nov 2014 17:36:27 +0100
Subject: New crypter LinkCryptWs

---
 module/plugins/crypter/LinkCryptWs.py | 343 ++++++++++++++++++++++++++++++++++
 1 file changed, 343 insertions(+)
 create mode 100644 module/plugins/crypter/LinkCryptWs.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkCryptWs.py b/module/plugins/crypter/LinkCryptWs.py
new file mode 100644
index 000000000..23a8a6512
--- /dev/null
+++ b/module/plugins/crypter/LinkCryptWs.py
@@ -0,0 +1,343 @@
+# -*- coding: utf-8 -*-
+
+import base64
+import binascii
+import re
+
+import pycurl
+
+from Crypto.Cipher import AES
+
+from module.plugins.Crypter import Crypter
+from module.utils import html_unescape
+
+
+class LinkCryptWs(Crypter):
+    __name__    = "LinkCryptWs"
+    __type__    = "crypter"
+    __version__ = "0.04"
+
+    __pattern__ = r'http://(?:www\.)?linkcrypt\.ws/(dir|container)/(?P<ID>\w+)'
+
+    __description__ = """LinkCrypt.ws decrypter plugin"""
+    __license__     = "GPLv3"
+    __authors__     = [("kagenoshin", "kagenoshin[AT]gmx[DOT]ch"),
+                       ("glukgluk", None)]
+
+
+    JK_KEY = "jk"
+    CRYPTED_KEY = "crypted"
+
+
+    def setup(self):
+        self.html    = None
+        self.fileid  = None
+        self.captcha = False
+        self.package = None
+
+        self.preferred_sources = ['cnl', 'web', 'dlc', 'rsdf', 'ccf', ] #['cnl', 'rsdf', 'ccf', 'dlc', 'web']
+
+
+    def prepare():
+        # Init
+        self.package = pyfile.package()
+        self.fileid = re.match(self.__pattern__, pyfile.url).group('ID')
+
+        self.req.cj.setCookie(".linkcrypt.ws", "language", "en")
+
+        # Request package
+        self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko") #better chance to not get those key-captchas
+        self.html = self.load(self.pyfile.url)
+
+
+    def decrypt(self, pyfile):
+        #check if we have js
+        if not self.js:
+            self.fail(_("Missing JS Engine"))
+
+        package_found = None
+
+        self.prepare()
+
+        if not self.isOnline():
+            self.offline()
+
+        if self.isKeyCaptchaProtected():
+            self.retry(4, 30, _("Can't handle Key-Captcha"))
+
+        if self.isCaptchaProtected():
+            self.captcha = True
+            self.unlockCaptchaProtection()
+            self.handleCaptchaErrors()
+
+        # Check for protection
+        if self.isPasswordProtected():
+            self.unlockPasswordProtection()
+            self.handleErrors()
+
+        # get unrar password
+        self.getunrarpw()
+
+        # Get package name and folder
+        package_name, folder_name = self.getPackageInfo()
+
+        #get the container definitions from script section
+        self.get_container_html()
+
+        # Extract package links
+        package_links = []
+
+        for type_ in self.preferred_sources:
+            links = self.handleLinkSource(type_)
+            if links:
+                if isinstance(links, list):
+                    package_links.extend(links)
+                else:
+                    package_found = True
+                break
+
+        package_links = set(package_links)
+
+        # Pack
+        if package_links:
+            self.packages = [(package_name, package_links, folder_name)]
+
+        elif package_found:
+            self.core.api.deletePackages([self.package.id])
+
+
+    def isOnline(self):
+        if "<title>Linkcrypt.ws // Error 404</title>" in self.html:
+            self.logDebug("folder doesen't exist anymore")
+            return False
+        else:
+            return True
+
+
+    def isPasswordProtected(self):
+        if "Authorizing" in self.html:
+            self.logDebug("Links are password protected")
+            return True
+        else:
+            return False
+
+
+    def isCaptchaProtected(self):
+        if 'id="captcha">' in self.html:
+            self.logDebug("Links are captcha protected")
+            return True
+        else:
+            return False
+
+
+    def isKeyCaptchaProtected(self):
+        if re.search(r'Key[ -]', self.html, re.I):
+            return True
+        else:
+            return False
+
+
+    def unlockPasswordProtection(self):
+        password = self.getPassword()
+
+        if password:
+            self.logDebug("Submitting password [%s] for protected links" % password)
+            self.html = self.load(self.pyfile.url, post={"password": password, 'x': "0", 'y': "0"})
+        else:
+            self.fail(_("Folder is password protected"))
+
+
+    def unlockCaptchaProtection(self):
+        captcha_url  = re.search(r'<form.*?id\s*?=\s*?"captcha"[^>]*?>.*?<\s*?input.*?src="([^"]*?)"', self.html, re.I | re.S).group(1)
+        captcha_code = self.decryptCaptcha(captcha_url, forceUser=True, imgtype="gif", result_type='positional')
+
+        self.html = self.load(self.pyfile.url, post={"x": captcha_code[0], "y": captcha_code[1]})
+
+
+    def getPackageInfo(self):
+        name   = self.pyfile.package().name
+        folder = self.pyfile.package().folder
+
+        self.logDebug("Defaulting to pyfile name [%s] and folder [%s] for package" % (name, folder))
+
+        return name, folder
+
+
+    def getunrarpw(self):
+        sitein = self.html
+        indexi = sitein.find("|source|") + 8
+        indexe = sitein.find("|",indexi)
+
+        unrarpw = sitein[indexi:indexe]
+
+        if not (unrarpw == "Password" or "Dateipasswort") :
+            self.logDebug("File password set to: [%s]"% unrarpw)
+            self.pyfile.package().password = unrarpw
+
+
+    def handleErrors(self):
+        if self.isPasswordProtected():
+            self.fail(_("Incorrect password"))
+
+
+    def handleCaptchaErrors(self):
+        if self.captcha:
+            if "Your choice was wrong!" in self.html:
+                self.invalidCaptcha()
+                self.retry()
+            else:
+                self.correctCaptcha()
+
+
+    def handleLinkSource(self, type_):
+        if type_ is 'cnl':
+                return self.handleCNL2()
+
+        elif type_ is 'web':
+                return self.handleWebLinks()
+
+        elif type_ in ('rsdf', 'ccf', 'dlc'):
+                return self.handleContainer(type_)
+
+        else:
+            self.error(_("Unknown source type: %s") % type_)
+
+
+    def handleWebLinks(self):
+        self.logDebug("Search for Web links ")
+
+        package_links = []
+        pattern = r'<form action="http://linkcrypt.ws/out.html"[^>]*?>.*?<input[^>]*?value="([^"]*?)"[^>]*?name="file"'
+        ids = re.findall(pattern, self.html, re.I | re.S)
+
+        self.logDebug("Decrypting %d Web links" % len(ids))
+
+        for idx, weblink_id in enumerate(ids):
+            try:
+                self.logDebug("Decrypting Web link %d, %s" % (idx + 1, weblink_id))
+
+                response = self.load("http://linkcrypt.ws/out.html", post = {'file':weblink_id})
+
+                indexs = response.find("window.location =") + 19
+                indexe = response.find('"', indexs)
+
+                link2= response[indexs:indexe]
+
+                self.logDebug(link2)
+
+                link2 = html_unescape(link2)
+                package_links.append(link2)
+
+            except Exception, detail:
+                self.logDebug("Error decrypting Web link %s, %s" % (weblink_id, detail))
+
+        return package_links
+
+
+    def get_container_html(self):
+        self.container_html = []
+
+        script = re.search(r'<div.*?id="ad_cont".*?<script.*?javascrip[^>]*?>(.*?)</script', self.html, re.I | re.S)
+
+        if script:
+            container_html_text = script.group(1)
+            container_html_text.strip()
+            self.container_html = container_html_text.splitlines()
+
+
+    def handle_javascript(self, line):
+        return self.js.eval(line.replace('{}))',"{}).replace('document.open();document.write','').replace(';document.close();',''))"))
+
+
+    def handleContainer(self, type_):
+        package_links = []
+        type_ = type_.lower()
+
+        self.logDebug('Search for %s Container links' % type_.upper())
+
+        if not type_.isalnum():  # check to prevent broken re-pattern (cnl2,rsdf,ccf,dlc,web are all alpha-numeric)
+            self.error(_("unknown container type: %s") % type_)
+
+        for line in self.container_html:
+            if(type_ in line):
+                jseval = self.handle_javascript(line)
+                clink = re.search(r'href=["\']([^"\']*?)["\']',jseval,re.I)
+
+                if not clink:
+                    continue
+
+                self.logDebug("clink avaible")
+
+                package_name, folder_name = self.getPackageInfo()
+                self.logDebug("Added package with name %s.%s and container link %s" %( package_name, type_, clink.group(1)))
+                self.core.api.uploadContainer( "%s.%s" %(package_name, type_), self.load(clink.group(1)))
+                return "Found it"
+
+        return package_links
+
+
+    def handleCNL2(self):
+        self.logDebug("Search for CNL links")
+
+        package_links = []
+        cnl_line = None
+
+        for line in self.container_html:
+            if("cnl" in line):
+                cnl_line = line
+                break
+
+        if cnl_line:
+            self.logDebug("cnl_line gefunden")
+
+        try:
+            cnl_section = self.handle_javascript(cnl_line)
+            (vcrypted, vjk) = self._getCipherParams(cnl_section)
+            for (crypted, jk) in zip(vcrypted, vjk):
+                package_links.extend(self._getLinks(crypted, jk))
+        except:
+            self.logError(_("Unable to decrypt CNL links (JS Error) try to get over links"))
+            return self.handleWebLinks()
+
+        return package_links
+
+
+    def _getCipherParams(self, cnl_section):
+        # Get jk
+        jk_re = r'<INPUT.*?NAME="%s".*?VALUE="(.*?)"' % LinkCryptWs.JK_KEY
+        vjk = re.findall(jk_re, cnl_section)
+
+        # Get crypted
+        crypted_re = r'<INPUT.*?NAME="%s".*?VALUE="(.*?)"' % LinkCryptWs.CRYPTED_KEY
+        vcrypted = re.findall(crypted_re, cnl_section)
+
+        # Log and return
+        self.logDebug("Detected %d crypted blocks" % len(vcrypted))
+        return vcrypted, vjk
+
+
+    def _getLinks(self, crypted, jk):
+        # Get key
+        jreturn = self.js.eval("%s f()" % jk)
+        key     = binascii.unhexlify(jreturn)
+
+        self.logDebug("JsEngine returns value [%s]" % jreturn)
+
+        # Decode crypted
+        crypted = base64.standard_b64decode(crypted)
+
+        # Decrypt
+        Key  = key
+        IV   = key
+        obj  = AES.new(Key, AES.MODE_CBC, IV)
+        text = obj.decrypt(crypted)
+
+        # Extract links
+        text  = text.replace("\x00", "").replace("\r", "")
+        links = text.split("\n")
+        links = filter(lambda x: x != "", links)
+
+        # Log and return
+        self.logDebug("Package has %d links" % len(links))
+
+        return links
-- 
cgit v1.2.3


From c9e31d875d32de31e54959b82bc35eff2b3e0f3f Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 10 Nov 2014 00:19:51 +0100
Subject: Code cosmetics

---
 module/plugins/crypter/DevhostStFolder.py      |  2 +-
 module/plugins/crypter/DuckCryptInfo.py        | 12 ++++++------
 module/plugins/crypter/FilefactoryComFolder.py |  2 +-
 module/plugins/crypter/HoerbuchIn.py           |  8 ++++----
 module/plugins/crypter/LinkCryptWs.py          |  8 ++++----
 module/plugins/crypter/LinkSaveIn.py           | 15 +++++++++++----
 module/plugins/crypter/ShareLinksBiz.py        | 23 ++++++++++++++---------
 7 files changed, 41 insertions(+), 29 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py
index 16931984b..192c5962c 100644
--- a/module/plugins/crypter/DevhostStFolder.py
+++ b/module/plugins/crypter/DevhostStFolder.py
@@ -48,7 +48,7 @@ class DevhostStFolder(SimpleCrypter):
             name = folder = m.group(1)
 
         except Exception, e:
-            self.logDebug(str(e))
+            self.logDebug(e)
             name = folder = re.match(self.__pattern__, self.pyfile.url).group('USER')
 
         return {'name': name, 'folder': folder}
diff --git a/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py
index 5bd20711e..07cc5cdc4 100644
--- a/module/plugins/crypter/DuckCryptInfo.py
+++ b/module/plugins/crypter/DuckCryptInfo.py
@@ -37,11 +37,11 @@ class DuckCryptInfo(Crypter):
 
 
     def handleFolder(self, m):
-        src = self.load("http://duckcrypt.info/ajax/auth.php?hash=" + str(m.group(2)))
-        m = re.match(self.__pattern__, src)
+        html = self.load("http://duckcrypt.info/ajax/auth.php?hash=" + str(m.group(2)))
+        m = re.match(self.__pattern__, html)
         self.logDebug("Redirectet to " + str(m.group(0)))
-        src = self.load(str(m.group(0)))
-        soup = BeautifulSoup(src)
+        html = self.load(str(m.group(0)))
+        soup = BeautifulSoup(html)
         cryptlinks = soup.findAll("div", attrs={"class": "folderbox"})
         self.logDebug("Redirectet to " + str(cryptlinks))
         if not cryptlinks:
@@ -52,8 +52,8 @@ class DuckCryptInfo(Crypter):
 
 
     def handleLink(self, url):
-        src = self.load(url)
-        soup = BeautifulSoup(src)
+        html = self.load(url)
+        soup = BeautifulSoup(html)
         self.urls = [soup.find("iframe")['src']]
         if not self.urls:
             self.logInfo(_("No link found"))
diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index ab4e76092..92e9620f6 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -21,7 +21,7 @@ class FilefactoryComFolder(SimpleCrypter):
     NAME_PATTERN = r'<h1>Files in <span>(?P<N>.+)</span></h1>'
     PAGES_PATTERN = r'data-paginator-totalPages="(\d+)"'
 
-    COOKIES = [('.filefactory.com', 'locale', 'en_US.utf8')]
+    COOKIES = [(".filefactory.com", "locale", "en_US.utf8")]
 
 
     def loadPage(self, page_n):
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index ed4adef58..4d4b8fbef 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -30,8 +30,8 @@ class HoerbuchIn(Crypter):
         self.pyfile = pyfile
 
         if self.article.match(pyfile.url):
-            src = self.load(pyfile.url)
-            soup = BeautifulSoup(src, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)
+            html = self.load(pyfile.url)
+            soup = BeautifulSoup(html, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)
 
             abookname = soup.find("a", attrs={"rel": "bookmark"}).text
             for a in soup.findAll("a", attrs={"href": self.protection}):
@@ -50,11 +50,11 @@ class HoerbuchIn(Crypter):
         url = m.group(0)
 
         self.pyfile.url = url
-        src = self.load(url, post={"viewed": "adpg"})
+        html = self.load(url, post={"viewed": "adpg"})
 
         links = []
         pattern = re.compile("http://www\.hoerbuch\.in/protection/(\w+)/(.*?)\"")
-        for hoster, lid in pattern.findall(src):
+        for hoster, lid in pattern.findall(html):
             self.req.lastURL = url
             self.load("http://www.hoerbuch.in/protection/%s/%s" % (hoster, lid))
             links.append(self.req.lastEffectiveURL)
diff --git a/module/plugins/crypter/LinkCryptWs.py b/module/plugins/crypter/LinkCryptWs.py
index 23a8a6512..67b1a3f02 100644
--- a/module/plugins/crypter/LinkCryptWs.py
+++ b/module/plugins/crypter/LinkCryptWs.py
@@ -216,12 +216,12 @@ class LinkCryptWs(Crypter):
             try:
                 self.logDebug("Decrypting Web link %d, %s" % (idx + 1, weblink_id))
 
-                response = self.load("http://linkcrypt.ws/out.html", post = {'file':weblink_id})
+                res = self.load("http://linkcrypt.ws/out.html", post = {'file':weblink_id})
 
-                indexs = response.find("window.location =") + 19
-                indexe = response.find('"', indexs)
+                indexs = res.find("window.location =") + 19
+                indexe = res.find('"', indexs)
 
-                link2= response[indexs:indexe]
+                link2 = res[indexs:indexe]
 
                 self.logDebug(link2)
 
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 72ce32810..7015f2ed3 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -155,18 +155,25 @@ class LinkSaveIn(SimpleCrypter):
             for i, weblink_id in enumerate(ids):
                 try:
                     webLink = "http://linksave.in/%s" % weblink_id
+
                     self.logDebug("Decrypting Web link %d, %s" % (i + 1, webLink))
+
                     fwLink = "http://linksave.in/fw-%s" % weblink_id
-                    response = self.load(fwLink)
-                    jscode = re.findall(r'<script type="text/javascript">(.*)</script>', response)[-1]
+                    res = self.load(fwLink)
+
+                    jscode = re.findall(r'<script type="text/javascript">(.*)</script>', res)[-1]
                     jseval = self.js.eval("document = { write: function(e) { return e; } }; %s" % jscode)
                     dlLink = re.search(r'http://linksave\.in/dl-\w+', jseval).group(0)
                     self.logDebug("JsEngine returns value [%s] for redirection link" % dlLink)
-                    response = self.load(dlLink)
-                    link = unescape(re.search(r'<iframe src="(.+?)"', response).group(1))
+
+                    res = self.load(dlLink)
+                    link = unescape(re.search(r'<iframe src="(.+?)"', res).group(1))
+
                     package_links.append(link)
+
                 except Exception, detail:
                     self.logDebug("Error decrypting Web link %s, %s" % (webLink, detail))
+
         return package_links
 
 
diff --git a/module/plugins/crypter/ShareLinksBiz.py b/module/plugins/crypter/ShareLinksBiz.py
index 26d05fee1..d2e8138f6 100644
--- a/module/plugins/crypter/ShareLinksBiz.py
+++ b/module/plugins/crypter/ShareLinksBiz.py
@@ -192,17 +192,22 @@ class ShareLinksBiz(Crypter):
         for i, ID in enumerate(ids):
             try:
                 self.logDebug("Decrypting Web link %d, [%s]" % (i + 1, ID))
+
                 dwLink = self.baseUrl + "/get/lnk/" + ID
-                response = self.load(dwLink)
-                code = re.search(r'frm/(\d+)', response).group(1)
+                res = self.load(dwLink)
+
+                code = re.search(r'frm/(\d+)', res).group(1)
                 fwLink = self.baseUrl + "/get/frm/" + code
-                response = self.load(fwLink)
-                jscode = re.search(r'<script language="javascript">\s*eval\((.*)\)\s*</script>', response,
-                                   re.S).group(1)
+                res = self.load(fwLink)
+
+                jscode = re.search(r'<script language="javascript">\s*eval\((.*)\)\s*</script>', res, re.S).group(1)
                 jscode = self.js.eval("f = %s" % jscode)
                 jslauncher = "window=''; parent={frames:{Main:{location:{href:''}}},location:''}; %s; parent.frames.Main.location.href"
+
                 dlLink = self.js.eval(jslauncher % jscode)
+
                 self.logDebug("JsEngine returns value [%s] for redirection link" % dlLink)
+
                 package_links.append(dlLink)
             except Exception, detail:
                 self.logDebug("Error decrypting Web link [%s], %s" % (ID, detail))
@@ -237,10 +242,10 @@ class ShareLinksBiz(Crypter):
 
     def _getCipherParams(self):
         # Request CNL2
-        code = re.search(r'ClicknLoad.swf\?code=(.*?)"', self.html).group(1)
-        url = "%s/get/cnl2/%s" % (self.baseUrl, code)
-        response = self.load(url)
-        params = response.split(";;")
+        code   = re.search(r'ClicknLoad.swf\?code=(.*?)"', self.html).group(1)
+        url    = "%s/get/cnl2/%s" % (self.baseUrl, code)
+        res    = self.load(url)
+        params = res.split(";;")
 
         # Get jk
         strlist = list(base64.standard_b64decode(params[1]))
-- 
cgit v1.2.3


From 974bcc6454723d3d35087441261e87b6ac4bd48b Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 10 Nov 2014 11:49:48 +0100
Subject: Re-add some dead crypters

---
 module/plugins/crypter/FilesonicComFolder.py     | 15 +++++++++++++++
 module/plugins/crypter/MegauploadComFolder.py    | 15 +++++++++++++++
 module/plugins/crypter/SharingmatrixComFolder.py | 15 +++++++++++++++
 module/plugins/crypter/WuploadComFolder.py       | 15 +++++++++++++++
 4 files changed, 60 insertions(+)
 create mode 100644 module/plugins/crypter/FilesonicComFolder.py
 create mode 100644 module/plugins/crypter/MegauploadComFolder.py
 create mode 100644 module/plugins/crypter/SharingmatrixComFolder.py
 create mode 100644 module/plugins/crypter/WuploadComFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilesonicComFolder.py b/module/plugins/crypter/FilesonicComFolder.py
new file mode 100644
index 000000000..2d0540d26
--- /dev/null
+++ b/module/plugins/crypter/FilesonicComFolder.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+
+from module.plugins.internal.DeadCrypter import DeadCrypter
+
+
+class FilesonicComFolder(DeadCrypter):
+    __name__    = "FilesonicComFolder"
+    __type__    = "crypter"
+    __version__ = "0.12"
+
+    __pattern__ = r'http://(?:www\.)?filesonic\.com/folder/\w+'
+
+    __description__ = """Filesonic.com folder decrypter plugin"""
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
diff --git a/module/plugins/crypter/MegauploadComFolder.py b/module/plugins/crypter/MegauploadComFolder.py
new file mode 100644
index 000000000..1d487ed61
--- /dev/null
+++ b/module/plugins/crypter/MegauploadComFolder.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+
+from module.plugins.internal.DeadCrypter import DeadCrypter
+
+
+class MegauploadComFolder(DeadCrypter):
+    __name__    = "MegauploadComFolder"
+    __type__    = "crypter"
+    __version__ = "0.02"
+
+    __pattern__ = r'http://(?:www\.)?megaupload\.com/(\?f|xml/folderfiles\.php\?.*&?folderid)=\w+'
+
+    __description__ = """Megaupload.com folder decrypter plugin"""
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
diff --git a/module/plugins/crypter/SharingmatrixComFolder.py b/module/plugins/crypter/SharingmatrixComFolder.py
new file mode 100644
index 000000000..ddc3bdb37
--- /dev/null
+++ b/module/plugins/crypter/SharingmatrixComFolder.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+
+from module.plugins.internal.DeadCrypter import DeadCrypter
+
+
+class SharingmatrixComFolder(DeadCrypter):
+    __name__    = "SharingmatrixComFolder"
+    __type__    = "crypter"
+    __version__ = "0.01"
+
+    __pattern__ = r'http://(?:www\.)?sharingmatrix\.com/folder/\w+'
+
+    __description__ = """Sharingmatrix.com folder decrypter plugin"""
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
diff --git a/module/plugins/crypter/WuploadComFolder.py b/module/plugins/crypter/WuploadComFolder.py
new file mode 100644
index 000000000..b77bc3e67
--- /dev/null
+++ b/module/plugins/crypter/WuploadComFolder.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+
+from module.plugins.internal.DeadCrypter import DeadCrypter
+
+
+class WuploadComFolder(DeadCrypter):
+    __name__    = "WuploadComFolder"
+    __type__    = "crypter"
+    __version__ = "0.01"
+
+    __pattern__ = r'http://(?:www\.)?wupload\.com/folder/\w+'
+
+    __description__ = """Wupload.com folder decrypter plugin"""
+    __license__     = "GPLv3"
+    __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
-- 
cgit v1.2.3


From 5f150f8c284178ba55cce3ecdf347131cc61ad1a Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 15 Nov 2014 01:59:37 +0100
Subject: [LinkCryptWs] Fix typo

---
 module/plugins/crypter/LinkCryptWs.py | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkCryptWs.py b/module/plugins/crypter/LinkCryptWs.py
index 67b1a3f02..b90e18490 100644
--- a/module/plugins/crypter/LinkCryptWs.py
+++ b/module/plugins/crypter/LinkCryptWs.py
@@ -15,7 +15,7 @@ from module.utils import html_unescape
 class LinkCryptWs(Crypter):
     __name__    = "LinkCryptWs"
     __type__    = "crypter"
-    __version__ = "0.04"
+    __version__ = "0.05"
 
     __pattern__ = r'http://(?:www\.)?linkcrypt\.ws/(dir|container)/(?P<ID>\w+)'
 
@@ -38,7 +38,7 @@ class LinkCryptWs(Crypter):
         self.preferred_sources = ['cnl', 'web', 'dlc', 'rsdf', 'ccf', ] #['cnl', 'rsdf', 'ccf', 'dlc', 'web']
 
 
-    def prepare():
+    def prepare(self):
         # Init
         self.package = pyfile.package()
         self.fileid = re.match(self.__pattern__, pyfile.url).group('ID')
@@ -46,7 +46,7 @@ class LinkCryptWs(Crypter):
         self.req.cj.setCookie(".linkcrypt.ws", "language", "en")
 
         # Request package
-        self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko") #better chance to not get those key-captchas
+        self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko")  #: better chance to not get those key-captchas
         self.html = self.load(self.pyfile.url)
 
 
@@ -96,8 +96,6 @@ class LinkCryptWs(Crypter):
                     package_found = True
                 break
 
-        package_links = set(package_links)
-
         # Pack
         if package_links:
             self.packages = [(package_name, package_links, folder_name)]
-- 
cgit v1.2.3


From 17f00c79d9be1d087cee8da32f0cb8515004c321 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Thu, 20 Nov 2014 22:07:41 +0100
Subject: [LinkCryptWs] Fix (thx NETHeader)

---
 module/plugins/crypter/LinkCryptWs.py | 65 ++++++++++++++---------------------
 1 file changed, 25 insertions(+), 40 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkCryptWs.py b/module/plugins/crypter/LinkCryptWs.py
index b90e18490..578595228 100644
--- a/module/plugins/crypter/LinkCryptWs.py
+++ b/module/plugins/crypter/LinkCryptWs.py
@@ -15,7 +15,7 @@ from module.utils import html_unescape
 class LinkCryptWs(Crypter):
     __name__    = "LinkCryptWs"
     __type__    = "crypter"
-    __version__ = "0.05"
+    __version__ = "0.06"
 
     __pattern__ = r'http://(?:www\.)?linkcrypt\.ws/(dir|container)/(?P<ID>\w+)'
 
@@ -25,25 +25,21 @@ class LinkCryptWs(Crypter):
                        ("glukgluk", None)]
 
 
-    JK_KEY = "jk"
     CRYPTED_KEY = "crypted"
+    JK_KEY = "jk"
 
 
     def setup(self):
-        self.html    = None
-        self.fileid  = None
         self.captcha = False
-        self.package = None
-
-        self.preferred_sources = ['cnl', 'web', 'dlc', 'rsdf', 'ccf', ] #['cnl', 'rsdf', 'ccf', 'dlc', 'web']
+        self.links   = []
+        self.sources = ['cnl', 'web', 'dlc', 'rsdf', 'ccf']
 
 
     def prepare(self):
         # Init
-        self.package = pyfile.package()
         self.fileid = re.match(self.__pattern__, pyfile.url).group('ID')
 
-        self.req.cj.setCookie(".linkcrypt.ws", "language", "en")
+        self.req.cj.setCookie("linkcrypt.ws", "language", "en")
 
         # Request package
         self.req.http.c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko")  #: better chance to not get those key-captchas
@@ -51,12 +47,9 @@ class LinkCryptWs(Crypter):
 
 
     def decrypt(self, pyfile):
-        #check if we have js
         if not self.js:
             self.fail(_("Missing JS Engine"))
 
-        package_found = None
-
         self.prepare()
 
         if not self.isOnline():
@@ -85,23 +78,15 @@ class LinkCryptWs(Crypter):
         self.get_container_html()
 
         # Extract package links
-        package_links = []
+        for type in self.sources:
+            links = self.handleLinkSource(type)
 
-        for type_ in self.preferred_sources:
-            links = self.handleLinkSource(type_)
             if links:
-                if isinstance(links, list):
-                    package_links.extend(links)
-                else:
-                    package_found = True
+                self.links.extend(links)
                 break
 
-        # Pack
-        if package_links:
-            self.packages = [(package_name, package_links, folder_name)]
-
-        elif package_found:
-            self.core.api.deletePackages([self.package.id])
+        if self.links:
+            self.packages = [(package_name, self.links, folder_name)]
 
 
     def isOnline(self):
@@ -187,18 +172,18 @@ class LinkCryptWs(Crypter):
                 self.correctCaptcha()
 
 
-    def handleLinkSource(self, type_):
-        if type_ is 'cnl':
+    def handleLinkSource(self, type):
+        if type == 'cnl':
                 return self.handleCNL2()
 
-        elif type_ is 'web':
+        elif type == 'web':
                 return self.handleWebLinks()
 
-        elif type_ in ('rsdf', 'ccf', 'dlc'):
-                return self.handleContainer(type_)
+        elif type in ('rsdf', 'ccf', 'dlc'):
+                return self.handleContainer(type)
 
         else:
-            self.error(_("Unknown source type: %s") % type_)
+            self.fail(_("Unknown source type: %s") % type)  #@TODO: Replace with self.error in 0.4.10
 
 
     def handleWebLinks(self):
@@ -247,17 +232,17 @@ class LinkCryptWs(Crypter):
         return self.js.eval(line.replace('{}))',"{}).replace('document.open();document.write','').replace(';document.close();',''))"))
 
 
-    def handleContainer(self, type_):
+    def handleContainer(self, type):
         package_links = []
-        type_ = type_.lower()
+        type = type.lower()
 
-        self.logDebug('Search for %s Container links' % type_.upper())
+        self.logDebug('Search for %s Container links' % type.upper())
 
-        if not type_.isalnum():  # check to prevent broken re-pattern (cnl2,rsdf,ccf,dlc,web are all alpha-numeric)
-            self.error(_("unknown container type: %s") % type_)
+        if not type.isalnum():  # check to prevent broken re-pattern (cnl2,rsdf,ccf,dlc,web are all alpha-numeric)
+            self.fail(_("Unknown container type: %s") % type)  #@TODO: Replace with self.error in 0.4.10
 
         for line in self.container_html:
-            if(type_ in line):
+            if type in line:
                 jseval = self.handle_javascript(line)
                 clink = re.search(r'href=["\']([^"\']*?)["\']',jseval,re.I)
 
@@ -267,8 +252,8 @@ class LinkCryptWs(Crypter):
                 self.logDebug("clink avaible")
 
                 package_name, folder_name = self.getPackageInfo()
-                self.logDebug("Added package with name %s.%s and container link %s" %( package_name, type_, clink.group(1)))
-                self.core.api.uploadContainer( "%s.%s" %(package_name, type_), self.load(clink.group(1)))
+                self.logDebug("Added package with name %s.%s and container link %s" %( package_name, type, clink.group(1)))
+                self.core.api.uploadContainer( "%s.%s" %(package_name, type), self.load(clink.group(1)))
                 return "Found it"
 
         return package_links
@@ -281,7 +266,7 @@ class LinkCryptWs(Crypter):
         cnl_line = None
 
         for line in self.container_html:
-            if("cnl" in line):
+            if "cnl" in line:
                 cnl_line = line
                 break
 
-- 
cgit v1.2.3


From 6a608c9587b4baeb0f605622e4916abdd14391d2 Mon Sep 17 00:00:00 2001
From: zapp-brannigan <zapp-brannigan@users.noreply.github.com>
Date: Thu, 20 Nov 2014 23:55:41 +0100
Subject: New crypter FilecryptCc

---
 module/plugins/crypter/FilecryptCc.py | 165 ++++++++++++++++++++++++++++++++++
 1 file changed, 165 insertions(+)
 create mode 100644 module/plugins/crypter/FilecryptCc.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilecryptCc.py b/module/plugins/crypter/FilecryptCc.py
new file mode 100644
index 000000000..81efa9e5d
--- /dev/null
+++ b/module/plugins/crypter/FilecryptCc.py
@@ -0,0 +1,165 @@
+# -*- coding: utf-8 -*-
+
+import base64
+import binascii
+import re
+
+from Crypto.Cipher import AES
+
+from module.plugins.Crypter import Crypter
+
+
+class FilecryptCc(Crypter):
+    __name__    = "FilecryptCc"
+    __type__    = "crypter"
+    __version__ = "0.03"
+
+    __pattern__ = r'https?://(?:www\.)?filecrypt\.cc/Container/.+'
+
+    __description__ = """Filecrypt.cc decrypter plugin"""
+    __license__     = "GPLv3"
+    __authors__     = [("zapp-brannigan", "")]
+
+
+    DLC_LINK_PATTERN = r'<button class="dlcdownload" type="button" title="Download \*.dlc" onclick="DownloadDLC\(\'(.+)\'\);"><i></i><span>dlc<'
+    WEBLINK_PATTERN = r"openLink.?'([\w_-]*)',"
+
+    CAPTCHA_PATTERN = r'<img id="nc" src="(.+?)"'
+
+    MIRROR_PAGE_PATTERN = r'"[\w]*" href="(http://filecrypt.cc/Container/\w+\.html\?mirror=\d+)">'
+
+
+    def setup(self):
+        self.package_name  = self.package_folder = self.pyfile.package().name
+        self.destination   = self.pyfile.package().queue
+        self.password      = self.pyfile.package().password
+        self.package_links = []
+
+
+    def decrypt(self, pyfile):
+        self.html = self.load(self.pyfile.url, cookies=True)
+
+        if "content not found" in self.html:
+            self.offline()
+
+        self.handlePasswordProtection()
+        self.handleCaptcha()
+        self.handleMirrorPages()
+        self.handleCNL()
+
+        if len(self.package_links) > 0:
+            self.logDebug("Found %d CNL-Links" % len(self.package_links))
+            self.packages = [(self.package_name, self.package_links, self.package_folder)]
+            return
+
+        self.handleWeblinks()
+
+        if len(self.package_links) > 0:
+            self.logDebug("Found %d Web-Links" % len(self.package_links))
+            self.packages = [(self.package_name, self.package_links, self.package_folder)]
+            return
+
+        self.handleDlcContainer()
+
+
+    def handleMirrorPages(self):
+        if "mirror=" not in self.siteWithLinks:
+            return
+
+        m = re.findall(self.MIRROR_PAGE_PATTERN, self.siteWithLinks)
+
+        self.logInfo(_("Found %d mirrors, will try to catch all links") % len(m))
+
+        for i in m[1:]:
+            self.siteWithLinks = self.siteWithLinks + self.load(i, cookies=True).decode("utf-8", "replace")
+
+
+    def handlePasswordProtection(self):
+        if '<input type="text" name="password"' not in self.html:
+            return
+
+        self.logInfo(_("Folder is password protected"))
+
+        if not self.password:
+            self.fail(_("Please enter the password in package section and try again"))
+
+        self.html = self.load(self.pyfile.url, post={"password": self.password}, cookies=True)
+
+
+    def handleCaptcha(self):
+        m = re.search(self.CAPTCHA_PATTERN, self.html)
+
+        if m:
+            self.logDebug("Captcha-URL: " + m.group(1))
+            captcha_code = self.decryptCaptcha("http://filecrypt.cc" + m.group(1), forceUser=True, imgtype="gif")
+            self.siteWithLinks = self.load(self.pyfile.url, post={"recaptcha_response_field":captcha_code}, decode=True, cookies=True)
+        else:
+            self.logDebug("No captcha found")
+            self.siteWithLinks = self.html
+
+        if "recaptcha_response_field" in self.siteWithLinks:
+            self.invalidCaptcha()
+            self.retry()
+
+
+    def handleDlcContainer(self):
+        m = re.findall(self.DLC_LINK_PATTERN, self.siteWithLinks)
+
+        if m:
+            self.logDebug("Found DLC-Container")
+            urls = []
+            for i in m:
+                urls.append("http://filecrypt.cc/DLC/%s.dlc" % i)
+            pid = self.core.api.addPackage(self.package_name, urls, 1)
+        else:
+            self.fail(_("Unable to find any links"))
+
+
+    def handleWeblinks(self):
+        try:
+            weblinks = re.findall(self.WEBLINK_PATTERN, self.siteWithLinks)
+
+            if not weblinks:
+                self.logDebug("No weblink found")
+                return
+
+            for link in weblinks:
+                response = self.load("http://filecrypt.cc/Link/%s.html" % link, cookies=True)
+                link2 = re.search('<iframe noresize src="(.*)"></iframe>', response)
+                response2 = self.load(link2.group(1), just_header=True, cookies=True)
+                self.package_links.append(response2['location'])
+
+        except Exception, e:
+            self.logDebug("Error decrypting weblinks: %s" % e)
+
+
+    def handleCNL(self):
+        try:
+            vjk = re.findall('<input type="hidden" name="jk" value="function f\(\){ return \'(.*)\';}">', self.siteWithLinks)
+            vcrypted = re.findall('<input type="hidden" name="crypted" value="(.*)">', self.siteWithLinks)
+
+            for i in range(0, len(vcrypted)):
+                self.package_links.extend(self._getLinks(vcrypted[i], vjk[i]))
+
+        except Exception, e:
+            self.logDebug("Error decrypting CNL: %s" % e)
+
+
+    def _getLinks(self, crypted, jk):
+        # Get key
+        key = binascii.unhexlify(str(jk))
+
+        # Decode crypted
+        crypted = base64.standard_b64decode(crypted)
+
+        # Decrypt
+        Key  = key
+        IV   = key
+        obj  = AES.new(Key, AES.MODE_CBC, IV)
+        text = obj.decrypt(crypted)
+
+        # Extract links
+        links = filter(lambda x: x != "",
+                       text.replace("\x00", "").replace("\r", "").split("\n"))
+
+        return links
-- 
cgit v1.2.3


From 12893fbe54c6bb4c079902f26a624f543c398b63 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 21 Nov 2014 01:53:33 +0100
Subject: [FilecryptCc] Code improvements

---
 module/plugins/crypter/FilecryptCc.py | 65 +++++++++++++----------------------
 1 file changed, 24 insertions(+), 41 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilecryptCc.py b/module/plugins/crypter/FilecryptCc.py
index 81efa9e5d..db4a8c4ab 100644
--- a/module/plugins/crypter/FilecryptCc.py
+++ b/module/plugins/crypter/FilecryptCc.py
@@ -12,15 +12,17 @@ from module.plugins.Crypter import Crypter
 class FilecryptCc(Crypter):
     __name__    = "FilecryptCc"
     __type__    = "crypter"
-    __version__ = "0.03"
+    __version__ = "0.04"
 
-    __pattern__ = r'https?://(?:www\.)?filecrypt\.cc/Container/.+'
+    __pattern__ = r'https?://(?:www\.)?filecrypt\.cc/Container/\w+'
 
     __description__ = """Filecrypt.cc decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("zapp-brannigan", "")]
 
 
+    # URL_REPLACEMENTS  = [(r'.html$', ""), (r'$', ".html")]  #@TODO: Extend SimpleCrypter
+
     DLC_LINK_PATTERN = r'<button class="dlcdownload" type="button" title="Download \*.dlc" onclick="DownloadDLC\(\'(.+)\'\);"><i></i><span>dlc<'
     WEBLINK_PATTERN = r"openLink.?'([\w_-]*)',"
 
@@ -30,14 +32,11 @@ class FilecryptCc(Crypter):
 
 
     def setup(self):
-        self.package_name  = self.package_folder = self.pyfile.package().name
-        self.destination   = self.pyfile.package().queue
-        self.password      = self.pyfile.package().password
-        self.package_links = []
+        self.links = []
 
 
     def decrypt(self, pyfile):
-        self.html = self.load(self.pyfile.url, cookies=True)
+        self.html = self.load(pyfile.url, cookies=True)
 
         if "content not found" in self.html:
             self.offline()
@@ -45,32 +44,23 @@ class FilecryptCc(Crypter):
         self.handlePasswordProtection()
         self.handleCaptcha()
         self.handleMirrorPages()
-        self.handleCNL()
-
-        if len(self.package_links) > 0:
-            self.logDebug("Found %d CNL-Links" % len(self.package_links))
-            self.packages = [(self.package_name, self.package_links, self.package_folder)]
-            return
-
-        self.handleWeblinks()
 
-        if len(self.package_links) > 0:
-            self.logDebug("Found %d Web-Links" % len(self.package_links))
-            self.packages = [(self.package_name, self.package_links, self.package_folder)]
-            return
-
-        self.handleDlcContainer()
+        for handle in (self.handleCNL, self.handleWeblinks, self.handleDlcContainer):
+            handle()
+            if self.links:
+                self.packages = [(pyfile.package().name, self.links, pyfile.package().name)]
+                return
 
 
     def handleMirrorPages(self):
         if "mirror=" not in self.siteWithLinks:
             return
 
-        m = re.findall(self.MIRROR_PAGE_PATTERN, self.siteWithLinks)
+        mirror = re.findall(self.MIRROR_PAGE_PATTERN, self.siteWithLinks)
 
-        self.logInfo(_("Found %d mirrors, will try to catch all links") % len(m))
+        self.logInfo(_("Found %d mirrors") % len(m))
 
-        for i in m[1:]:
+        for i in mirror[1:]:
             self.siteWithLinks = self.siteWithLinks + self.load(i, cookies=True).decode("utf-8", "replace")
 
 
@@ -80,7 +70,7 @@ class FilecryptCc(Crypter):
 
         self.logInfo(_("Folder is password protected"))
 
-        if not self.password:
+        if not self.pyfile.package().password:
             self.fail(_("Please enter the password in package section and try again"))
 
         self.html = self.load(self.pyfile.url, post={"password": self.password}, cookies=True)
@@ -90,7 +80,7 @@ class FilecryptCc(Crypter):
         m = re.search(self.CAPTCHA_PATTERN, self.html)
 
         if m:
-            self.logDebug("Captcha-URL: " + m.group(1))
+            self.logDebug("Captcha-URL: %s" % m.group(1))
             captcha_code = self.decryptCaptcha("http://filecrypt.cc" + m.group(1), forceUser=True, imgtype="gif")
             self.siteWithLinks = self.load(self.pyfile.url, post={"recaptcha_response_field":captcha_code}, decode=True, cookies=True)
         else:
@@ -103,31 +93,24 @@ class FilecryptCc(Crypter):
 
 
     def handleDlcContainer(self):
-        m = re.findall(self.DLC_LINK_PATTERN, self.siteWithLinks)
+        dlc = re.findall(self.DLC_LINK_PATTERN, self.siteWithLinks)
 
-        if m:
-            self.logDebug("Found DLC-Container")
-            urls = []
-            for i in m:
-                urls.append("http://filecrypt.cc/DLC/%s.dlc" % i)
-            pid = self.core.api.addPackage(self.package_name, urls, 1)
-        else:
-            self.fail(_("Unable to find any links"))
+        if not dlc:
+            return
+
+        for i in dlc:
+            self.links.append("http://filecrypt.cc/DLC/%s.dlc" % i)
 
 
     def handleWeblinks(self):
         try:
             weblinks = re.findall(self.WEBLINK_PATTERN, self.siteWithLinks)
 
-            if not weblinks:
-                self.logDebug("No weblink found")
-                return
-
             for link in weblinks:
                 response = self.load("http://filecrypt.cc/Link/%s.html" % link, cookies=True)
                 link2 = re.search('<iframe noresize src="(.*)"></iframe>', response)
                 response2 = self.load(link2.group(1), just_header=True, cookies=True)
-                self.package_links.append(response2['location'])
+                self.links.append(response2['location'])
 
         except Exception, e:
             self.logDebug("Error decrypting weblinks: %s" % e)
@@ -139,7 +122,7 @@ class FilecryptCc(Crypter):
             vcrypted = re.findall('<input type="hidden" name="crypted" value="(.*)">', self.siteWithLinks)
 
             for i in range(0, len(vcrypted)):
-                self.package_links.extend(self._getLinks(vcrypted[i], vjk[i]))
+                self.links.extend(self._getLinks(vcrypted[i], vjk[i]))
 
         except Exception, e:
             self.logDebug("Error decrypting CNL: %s" % e)
-- 
cgit v1.2.3


From e8246525f3106c152d6d1436c6a3111e0334520f Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 15 Nov 2014 18:04:47 +0100
Subject: Fix cookie domain

---
 module/plugins/crypter/FilefactoryComFolder.py | 2 +-
 module/plugins/crypter/LinkSaveIn.py           | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index 92e9620f6..52c39c386 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -21,7 +21,7 @@ class FilefactoryComFolder(SimpleCrypter):
     NAME_PATTERN = r'<h1>Files in <span>(?P<N>.+)</span></h1>'
     PAGES_PATTERN = r'data-paginator-totalPages="(\d+)"'
 
-    COOKIES = [(".filefactory.com", "locale", "en_US.utf8")]
+    COOKIES = [("filefactory.com", "locale", "en_US.utf8")]
 
 
     def loadPage(self, page_n):
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 7015f2ed3..46babd156 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -27,7 +27,7 @@ class LinkSaveIn(SimpleCrypter):
     __authors__     = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
 
 
-    COOKIES = [(".linksave.in", "Linksave_Language", "english")]
+    COOKIES = [("linksave.in", "Linksave_Language", "english")]
 
     # Constants
     _JK_KEY_ = "jk"
-- 
cgit v1.2.3


From d094edc31d18b67ffff8e38610ee091df2e61322 Mon Sep 17 00:00:00 2001
From: jojo141185 <jojo141185@users.noreply.github.com>
Date: Sat, 22 Nov 2014 20:23:19 +0100
Subject: [FilecryptCc] Tiny fixup

---
 module/plugins/crypter/FilecryptCc.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilecryptCc.py b/module/plugins/crypter/FilecryptCc.py
index db4a8c4ab..dedd284b3 100644
--- a/module/plugins/crypter/FilecryptCc.py
+++ b/module/plugins/crypter/FilecryptCc.py
@@ -12,7 +12,7 @@ from module.plugins.Crypter import Crypter
 class FilecryptCc(Crypter):
     __name__    = "FilecryptCc"
     __type__    = "crypter"
-    __version__ = "0.04"
+    __version__ = "0.05"
 
     __pattern__ = r'https?://(?:www\.)?filecrypt\.cc/Container/\w+'
 
@@ -58,7 +58,7 @@ class FilecryptCc(Crypter):
 
         mirror = re.findall(self.MIRROR_PAGE_PATTERN, self.siteWithLinks)
 
-        self.logInfo(_("Found %d mirrors") % len(m))
+        self.logInfo(_("Found %d mirrors") % len(mirror))
 
         for i in mirror[1:]:
             self.siteWithLinks = self.siteWithLinks + self.load(i, cookies=True).decode("utf-8", "replace")
-- 
cgit v1.2.3


From 37858ae9675f3363e9e7314707a08d79406d6c6a Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 23 Nov 2014 02:10:18 +0100
Subject: Fix missing create_getInfo in dead crypters

---
 module/plugins/crypter/C1neonCom.py              | 5 ++++-
 module/plugins/crypter/CryptItCom.py             | 5 ++++-
 module/plugins/crypter/DdlstorageComFolder.py    | 2 +-
 module/plugins/crypter/DuploadOrgFolder.py       | 5 ++++-
 module/plugins/crypter/FilebeerInfoFolder.py     | 5 ++++-
 module/plugins/crypter/FilesonicComFolder.py     | 5 ++++-
 module/plugins/crypter/FiredriveComFolder.py     | 5 ++++-
 module/plugins/crypter/HotfileComFolder.py       | 5 ++++-
 module/plugins/crypter/ILoadTo.py                | 5 ++++-
 module/plugins/crypter/LofCc.py                  | 5 ++++-
 module/plugins/crypter/MBLinkInfo.py             | 5 ++++-
 module/plugins/crypter/MegauploadComFolder.py    | 5 ++++-
 module/plugins/crypter/Movie2kTo.py              | 5 ++++-
 module/plugins/crypter/MultiuploadCom.py         | 5 ++++-
 module/plugins/crypter/OronComFolder.py          | 5 ++++-
 module/plugins/crypter/RSLayerCom.py             | 5 ++++-
 module/plugins/crypter/SecuredIn.py              | 5 ++++-
 module/plugins/crypter/SharingmatrixComFolder.py | 5 ++++-
 module/plugins/crypter/SpeedLoadOrgFolder.py     | 5 ++++-
 module/plugins/crypter/StealthTo.py              | 5 ++++-
 module/plugins/crypter/TrailerzoneInfo.py        | 5 ++++-
 module/plugins/crypter/WiiReloadedOrg.py         | 5 ++++-
 module/plugins/crypter/WuploadComFolder.py       | 5 ++++-
 23 files changed, 89 insertions(+), 23 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/C1neonCom.py b/module/plugins/crypter/C1neonCom.py
index 18c0f1e73..cf1d2a211 100644
--- a/module/plugins/crypter/C1neonCom.py
+++ b/module/plugins/crypter/C1neonCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class C1neonCom(DeadCrypter):
@@ -14,3 +14,6 @@ class C1neonCom(DeadCrypter):
     __description__ = """C1neon.com decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("godofdream", "soilfiction@gmail.com")]
+
+
+getInfo = create_getInfo(C1neonCom)
diff --git a/module/plugins/crypter/CryptItCom.py b/module/plugins/crypter/CryptItCom.py
index 2c91535bd..2cf4e9f62 100644
--- a/module/plugins/crypter/CryptItCom.py
+++ b/module/plugins/crypter/CryptItCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class CryptItCom(DeadCrypter):
@@ -14,3 +14,6 @@ class CryptItCom(DeadCrypter):
     __description__ = """Crypt-it.com decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("jeix", "jeix@hasnomail.de")]
+
+
+getInfo = create_getInfo(CryptItCom)
diff --git a/module/plugins/crypter/DdlstorageComFolder.py b/module/plugins/crypter/DdlstorageComFolder.py
index 6ad586434..e02e77fda 100644
--- a/module/plugins/crypter/DdlstorageComFolder.py
+++ b/module/plugins/crypter/DdlstorageComFolder.py
@@ -17,4 +17,4 @@ class DdlstorageComFolder(DeadCrypter):
                        ("stickell", "l.stickell@yahoo.it")]
 
 
-getInfo = create_getInfo(SpeedLoadOrg)
+getInfo = create_getInfo(DdlstorageComFolder)
diff --git a/module/plugins/crypter/DuploadOrgFolder.py b/module/plugins/crypter/DuploadOrgFolder.py
index af83dffd0..066fbe3d7 100644
--- a/module/plugins/crypter/DuploadOrgFolder.py
+++ b/module/plugins/crypter/DuploadOrgFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class DuploadOrgFolder(DeadCrypter):
@@ -14,3 +14,6 @@ class DuploadOrgFolder(DeadCrypter):
     __description__ = """Dupload.org folder decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("stickell", "l.stickell@yahoo.it")]
+
+
+getInfo = create_getInfo(DuploadOrgFolder)
diff --git a/module/plugins/crypter/FilebeerInfoFolder.py b/module/plugins/crypter/FilebeerInfoFolder.py
index fd2843873..d0f3547bc 100644
--- a/module/plugins/crypter/FilebeerInfoFolder.py
+++ b/module/plugins/crypter/FilebeerInfoFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class FilebeerInfoFolder(DeadCrypter):
@@ -14,3 +14,6 @@ class FilebeerInfoFolder(DeadCrypter):
     __description__ = """Filebeer.info folder decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
+
+
+getInfo = create_getInfo(FilebeerInfoFolder)
diff --git a/module/plugins/crypter/FilesonicComFolder.py b/module/plugins/crypter/FilesonicComFolder.py
index 2d0540d26..d58516986 100644
--- a/module/plugins/crypter/FilesonicComFolder.py
+++ b/module/plugins/crypter/FilesonicComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class FilesonicComFolder(DeadCrypter):
@@ -13,3 +13,6 @@ class FilesonicComFolder(DeadCrypter):
     __description__ = """Filesonic.com folder decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
+
+
+getInfo = create_getInfo(FilesonicComFolder)
diff --git a/module/plugins/crypter/FiredriveComFolder.py b/module/plugins/crypter/FiredriveComFolder.py
index b6b22a4e1..7d3a357fd 100644
--- a/module/plugins/crypter/FiredriveComFolder.py
+++ b/module/plugins/crypter/FiredriveComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class FiredriveComFolder(DeadCrypter):
@@ -14,3 +14,6 @@ class FiredriveComFolder(DeadCrypter):
     __description__ = """Firedrive.com folder decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
+
+
+getInfo = create_getInfo(FiredriveComFolder)
diff --git a/module/plugins/crypter/HotfileComFolder.py b/module/plugins/crypter/HotfileComFolder.py
index 3fc8f6f63..a294c04e0 100644
--- a/module/plugins/crypter/HotfileComFolder.py
+++ b/module/plugins/crypter/HotfileComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class HotfileComFolder(DeadCrypter):
@@ -14,3 +14,6 @@ class HotfileComFolder(DeadCrypter):
     __description__ = """Hotfile.com folder decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("RaNaN", "RaNaN@pyload.org")]
+
+
+getInfo = create_getInfo(HotfileComFolder)
diff --git a/module/plugins/crypter/ILoadTo.py b/module/plugins/crypter/ILoadTo.py
index 3dc806b06..f3415706d 100644
--- a/module/plugins/crypter/ILoadTo.py
+++ b/module/plugins/crypter/ILoadTo.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class ILoadTo(DeadCrypter):
@@ -14,3 +14,6 @@ class ILoadTo(DeadCrypter):
     __description__ = """Iload.to decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("hzpz", None)]
+
+
+getInfo = create_getInfo(ILoadTo)
diff --git a/module/plugins/crypter/LofCc.py b/module/plugins/crypter/LofCc.py
index 5819e0375..65c9b18bd 100644
--- a/module/plugins/crypter/LofCc.py
+++ b/module/plugins/crypter/LofCc.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class LofCc(DeadCrypter):
@@ -14,3 +14,6 @@ class LofCc(DeadCrypter):
     __description__ = """Lof.cc decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("mkaay", "mkaay@mkaay.de")]
+
+
+getInfo = create_getInfo(LofCc)
diff --git a/module/plugins/crypter/MBLinkInfo.py b/module/plugins/crypter/MBLinkInfo.py
index 680aa49c0..82c2d9719 100644
--- a/module/plugins/crypter/MBLinkInfo.py
+++ b/module/plugins/crypter/MBLinkInfo.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class MBLinkInfo(DeadCrypter):
@@ -15,3 +15,6 @@ class MBLinkInfo(DeadCrypter):
     __license__     = "GPLv3"
     __authors__     = [("Gummibaer", "Gummibaer@wiki-bierkiste.de"),
                        ("stickell", "l.stickell@yahoo.it")]
+
+
+getInfo = create_getInfo(MBLinkInfo)
diff --git a/module/plugins/crypter/MegauploadComFolder.py b/module/plugins/crypter/MegauploadComFolder.py
index 1d487ed61..08f96700d 100644
--- a/module/plugins/crypter/MegauploadComFolder.py
+++ b/module/plugins/crypter/MegauploadComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class MegauploadComFolder(DeadCrypter):
@@ -13,3 +13,6 @@ class MegauploadComFolder(DeadCrypter):
     __description__ = """Megaupload.com folder decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
+
+
+getInfo = create_getInfo(MegauploadComFolder)
diff --git a/module/plugins/crypter/Movie2kTo.py b/module/plugins/crypter/Movie2kTo.py
index 2acaa5a28..0be7eb7eb 100644
--- a/module/plugins/crypter/Movie2kTo.py
+++ b/module/plugins/crypter/Movie2kTo.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class Movie2kTo(DeadCrypter):
@@ -14,3 +14,6 @@ class Movie2kTo(DeadCrypter):
     __description__ = """Movie2k.to decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("4Christopher", "4Christopher@gmx.de")]
+
+
+getInfo = create_getInfo(Movie2kTo)
diff --git a/module/plugins/crypter/MultiuploadCom.py b/module/plugins/crypter/MultiuploadCom.py
index 2cfb9537f..347b7e5af 100644
--- a/module/plugins/crypter/MultiuploadCom.py
+++ b/module/plugins/crypter/MultiuploadCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class MultiuploadCom(DeadCrypter):
@@ -14,3 +14,6 @@ class MultiuploadCom(DeadCrypter):
     __description__ = """ MultiUpload.com decrypter plugin """
     __license__     = "GPLv3"
     __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
+
+
+getInfo = create_getInfo(MultiuploadCom)
diff --git a/module/plugins/crypter/OronComFolder.py b/module/plugins/crypter/OronComFolder.py
index 30709ee60..9e06bdf32 100755
--- a/module/plugins/crypter/OronComFolder.py
+++ b/module/plugins/crypter/OronComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class OronComFolder(DeadCrypter):
@@ -14,3 +14,6 @@ class OronComFolder(DeadCrypter):
     __description__ = """Oron.com folder decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("DHMH", "webmaster@pcProfil.de")]
+
+
+getInfo = create_getInfo(OronComFolder)
diff --git a/module/plugins/crypter/RSLayerCom.py b/module/plugins/crypter/RSLayerCom.py
index 1bcfd05fe..cc3b23bbc 100644
--- a/module/plugins/crypter/RSLayerCom.py
+++ b/module/plugins/crypter/RSLayerCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class RSLayerCom(DeadCrypter):
@@ -14,3 +14,6 @@ class RSLayerCom(DeadCrypter):
     __description__ = """RS-Layer.com decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("hzpz", None)]
+
+
+getInfo = create_getInfo(RSLayerCom)
diff --git a/module/plugins/crypter/SecuredIn.py b/module/plugins/crypter/SecuredIn.py
index d2cd6ff4d..cbfa919ac 100644
--- a/module/plugins/crypter/SecuredIn.py
+++ b/module/plugins/crypter/SecuredIn.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class SecuredIn(DeadCrypter):
@@ -14,3 +14,6 @@ class SecuredIn(DeadCrypter):
     __description__ = """Secured.in decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("mkaay", "mkaay@mkaay.de")]
+
+
+getInfo = create_getInfo(SecuredIn)
diff --git a/module/plugins/crypter/SharingmatrixComFolder.py b/module/plugins/crypter/SharingmatrixComFolder.py
index ddc3bdb37..e16bdf814 100644
--- a/module/plugins/crypter/SharingmatrixComFolder.py
+++ b/module/plugins/crypter/SharingmatrixComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class SharingmatrixComFolder(DeadCrypter):
@@ -13,3 +13,6 @@ class SharingmatrixComFolder(DeadCrypter):
     __description__ = """Sharingmatrix.com folder decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
+
+
+getInfo = create_getInfo(SharingmatrixComFolder)
diff --git a/module/plugins/crypter/SpeedLoadOrgFolder.py b/module/plugins/crypter/SpeedLoadOrgFolder.py
index f11260345..1d3a7df91 100644
--- a/module/plugins/crypter/SpeedLoadOrgFolder.py
+++ b/module/plugins/crypter/SpeedLoadOrgFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class SpeedLoadOrgFolder(DeadCrypter):
@@ -14,3 +14,6 @@ class SpeedLoadOrgFolder(DeadCrypter):
     __description__ = """Speedload decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("stickell", "l.stickell@yahoo.it")]
+
+
+getInfo = create_getInfo(SpeedLoadOrgFolder)
diff --git a/module/plugins/crypter/StealthTo.py b/module/plugins/crypter/StealthTo.py
index a6e86fb8b..e4da3e7e4 100644
--- a/module/plugins/crypter/StealthTo.py
+++ b/module/plugins/crypter/StealthTo.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class StealthTo(DeadCrypter):
@@ -14,3 +14,6 @@ class StealthTo(DeadCrypter):
     __description__ = """Stealth.to decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("spoob", "spoob@pyload.org")]
+
+
+getInfo = create_getInfo(StealthTo)
diff --git a/module/plugins/crypter/TrailerzoneInfo.py b/module/plugins/crypter/TrailerzoneInfo.py
index 66a00bc74..abdb2307e 100644
--- a/module/plugins/crypter/TrailerzoneInfo.py
+++ b/module/plugins/crypter/TrailerzoneInfo.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class TrailerzoneInfo(DeadCrypter):
@@ -14,3 +14,6 @@ class TrailerzoneInfo(DeadCrypter):
     __description__ = """TrailerZone.info decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("godofdream", "soilfiction@gmail.com")]
+
+
+getInfo = create_getInfo(TrailerzoneInfo)
diff --git a/module/plugins/crypter/WiiReloadedOrg.py b/module/plugins/crypter/WiiReloadedOrg.py
index 9d6f12174..c3c5b8222 100644
--- a/module/plugins/crypter/WiiReloadedOrg.py
+++ b/module/plugins/crypter/WiiReloadedOrg.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class WiiReloadedOrg(DeadCrypter):
@@ -14,3 +14,6 @@ class WiiReloadedOrg(DeadCrypter):
     __description__ = """Wii-Reloaded.org decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("hzpz", None)]
+
+
+getInfo = create_getInfo(WiiReloadedOrg)
diff --git a/module/plugins/crypter/WuploadComFolder.py b/module/plugins/crypter/WuploadComFolder.py
index b77bc3e67..873c71fad 100644
--- a/module/plugins/crypter/WuploadComFolder.py
+++ b/module/plugins/crypter/WuploadComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.DeadCrypter import DeadCrypter
+from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 
 
 class WuploadComFolder(DeadCrypter):
@@ -13,3 +13,6 @@ class WuploadComFolder(DeadCrypter):
     __description__ = """Wupload.com folder decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
+
+
+getInfo = create_getInfo(WuploadComFolder)
-- 
cgit v1.2.3


From 2ca8cc959a587992dc389d6baf71dd3e4f66df1c Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 23 Nov 2014 04:41:17 +0100
Subject: Fix some URL_REPLACEMENTS

---
 module/plugins/crypter/TusfilesNetFolder.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index e8da59736..9533a6e76 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -10,7 +10,7 @@ from module.plugins.internal.XFSCrypter import XFSCrypter
 class TusfilesNetFolder(XFSCrypter):
     __name__    = "TusfilesNetFolder"
     __type__    = "crypter"
-    __version__ = "0.06"
+    __version__ = "0.07"
 
     __pattern__ = r'https?://(?:www\.)?tusfiles\.net/go/(?P<ID>\w+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -26,7 +26,7 @@ class TusfilesNetFolder(XFSCrypter):
 
     PAGES_PATTERN = r'>\((\d+) \w+\)<'
 
-    URL_REPLACEMENTS = [(__pattern__, r'https://www.tusfiles.net/go/\g<ID>/')]
+    URL_REPLACEMENTS = [(__pattern__ + ".*", r'https://www.tusfiles.net/go/\g<ID>/')]
 
 
     def loadPage(self, page_n):
-- 
cgit v1.2.3


From a059d5df038f2cb1ba4be32c782aa3878e849555 Mon Sep 17 00:00:00 2001
From: Gummibaer <guthub@wiki-bierkiste.de>
Date: Wed, 26 Nov 2014 12:33:40 +0100
Subject: Fix Error [LinkCryptWs.py]

Error: global name 'pyfile' is not defined
---
 module/plugins/crypter/LinkCryptWs.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkCryptWs.py b/module/plugins/crypter/LinkCryptWs.py
index 578595228..835a549b2 100644
--- a/module/plugins/crypter/LinkCryptWs.py
+++ b/module/plugins/crypter/LinkCryptWs.py
@@ -15,14 +15,15 @@ from module.utils import html_unescape
 class LinkCryptWs(Crypter):
     __name__    = "LinkCryptWs"
     __type__    = "crypter"
-    __version__ = "0.06"
+    __version__ = "0.07"
 
     __pattern__ = r'http://(?:www\.)?linkcrypt\.ws/(dir|container)/(?P<ID>\w+)'
 
     __description__ = """LinkCrypt.ws decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("kagenoshin", "kagenoshin[AT]gmx[DOT]ch"),
-                       ("glukgluk", None)]
+                       ("glukgluk", None),
+                       ("Gummibaer", None)]
 
 
     CRYPTED_KEY = "crypted"
@@ -37,7 +38,7 @@ class LinkCryptWs(Crypter):
 
     def prepare(self):
         # Init
-        self.fileid = re.match(self.__pattern__, pyfile.url).group('ID')
+        self.fileid = re.match(self.__pattern__, self.pyfile.url).group('ID')
 
         self.req.cj.setCookie("linkcrypt.ws", "language", "en")
 
-- 
cgit v1.2.3


From f3441978ca039c38924bd3b1d0019ca92f8a12d0 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Wed, 3 Dec 2014 22:38:59 +0100
Subject: [NetloadIn] Syntax fixup

---
 module/plugins/crypter/FilecryptCc.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilecryptCc.py b/module/plugins/crypter/FilecryptCc.py
index dedd284b3..fb53e616b 100644
--- a/module/plugins/crypter/FilecryptCc.py
+++ b/module/plugins/crypter/FilecryptCc.py
@@ -121,7 +121,7 @@ class FilecryptCc(Crypter):
             vjk = re.findall('<input type="hidden" name="jk" value="function f\(\){ return \'(.*)\';}">', self.siteWithLinks)
             vcrypted = re.findall('<input type="hidden" name="crypted" value="(.*)">', self.siteWithLinks)
 
-            for i in range(0, len(vcrypted)):
+            for i in xrange(len(vcrypted)):
                 self.links.extend(self._getLinks(vcrypted[i], vjk[i]))
 
         except Exception, e:
-- 
cgit v1.2.3


From f91994d9f6b9e34ecfcdb54eb1e0f8568277481c Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Thu, 4 Dec 2014 00:48:50 +0100
Subject: New crypter Go4Up

---
 module/plugins/crypter/Go4Up.py | 46 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)
 create mode 100644 module/plugins/crypter/Go4Up.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/Go4Up.py b/module/plugins/crypter/Go4Up.py
new file mode 100644
index 000000000..8c2f7ef89
--- /dev/null
+++ b/module/plugins/crypter/Go4Up.py
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+
+import re
+
+from urlparse import urljoin
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter
+
+
+class Go4Up(SimpleCrypter):
+    __name__    = "Go4Up"
+    __type__    = "crypter"
+    __version__ = "0.10"
+
+    __pattern__ = r'http://go4up\.com/(dl/\w{12}|rd/\w{12}/\d+)'
+
+    __description__ = """Go4Up.com decrypter plugin"""
+    __license__     = "GPLv3"
+    __authors__     = [("rlindner81", "rlindner81@gmail.com"),
+                       ("Walter Purcaro", "vuolter@gmail.com")]
+
+
+    LINK_PATTERN = r'(http://go4up\.com/rd/.+?)<'
+
+    NAME_PATTERN = r'<title>Download (.+?)<'
+
+    OFFLINE_PATTERN = r'>\s*(404 Page Not Found|File not Found|Mirror does not exist)'
+
+
+    def getLinks(self
+        links = []
+
+        m = re.search(r'(/download/gethosts/.+?)"')
+        if m:
+            self.html = self.load(urljoin("http://go4up.com/", m.group(1)))
+            pages = [self.load(url) for url in re.findall(self.LINK_PATTERN, self.html)]
+        else:
+            pages = [self.html]
+
+        for html in pages:
+            try:
+                links.append(re.search(r'<b><a href="(.+?)"', html).group(1))
+            except:
+                continue
+
+        return links
-- 
cgit v1.2.3


From c1c91d8dc432f02fab94ada8581b634ca9034e21 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Thu, 4 Dec 2014 01:18:58 +0100
Subject: Go4Up -> Go4UpCom

---
 module/plugins/crypter/Go4Up.py    | 46 -----------------------------------
 module/plugins/crypter/Go4UpCom.py | 49 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+), 46 deletions(-)
 delete mode 100644 module/plugins/crypter/Go4Up.py
 create mode 100644 module/plugins/crypter/Go4UpCom.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/Go4Up.py b/module/plugins/crypter/Go4Up.py
deleted file mode 100644
index 8c2f7ef89..000000000
--- a/module/plugins/crypter/Go4Up.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-
-from urlparse import urljoin
-
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
-
-
-class Go4Up(SimpleCrypter):
-    __name__    = "Go4Up"
-    __type__    = "crypter"
-    __version__ = "0.10"
-
-    __pattern__ = r'http://go4up\.com/(dl/\w{12}|rd/\w{12}/\d+)'
-
-    __description__ = """Go4Up.com decrypter plugin"""
-    __license__     = "GPLv3"
-    __authors__     = [("rlindner81", "rlindner81@gmail.com"),
-                       ("Walter Purcaro", "vuolter@gmail.com")]
-
-
-    LINK_PATTERN = r'(http://go4up\.com/rd/.+?)<'
-
-    NAME_PATTERN = r'<title>Download (.+?)<'
-
-    OFFLINE_PATTERN = r'>\s*(404 Page Not Found|File not Found|Mirror does not exist)'
-
-
-    def getLinks(self
-        links = []
-
-        m = re.search(r'(/download/gethosts/.+?)"')
-        if m:
-            self.html = self.load(urljoin("http://go4up.com/", m.group(1)))
-            pages = [self.load(url) for url in re.findall(self.LINK_PATTERN, self.html)]
-        else:
-            pages = [self.html]
-
-        for html in pages:
-            try:
-                links.append(re.search(r'<b><a href="(.+?)"', html).group(1))
-            except:
-                continue
-
-        return links
diff --git a/module/plugins/crypter/Go4UpCom.py b/module/plugins/crypter/Go4UpCom.py
new file mode 100644
index 000000000..102bc32b5
--- /dev/null
+++ b/module/plugins/crypter/Go4UpCom.py
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+
+import re
+
+from urlparse import urljoin
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
+
+
+class Go4UpCom(SimpleCrypter):
+    __name__    = "Go4UpCom"
+    __type__    = "crypter"
+    __version__ = "0.11"
+
+    __pattern__ = r'http://go4up\.com/(dl/\w{12}|rd/\w{12}/\d+)'
+
+    __description__ = """Go4Up.com decrypter plugin"""
+    __license__     = "GPLv3"
+    __authors__     = [("rlindner81", "rlindner81@gmail.com"),
+                       ("Walter Purcaro", "vuolter@gmail.com")]
+
+
+    LINK_PATTERN = r'(http://go4up\.com/rd/.+?)<'
+
+    NAME_PATTERN = r'<title>Download (.+?)<'
+
+    OFFLINE_PATTERN = r'>\s*(404 Page Not Found|File not Found|Mirror does not exist)'
+
+
+    def getLinks(self
+        links = []
+
+        m = re.search(r'(/download/gethosts/.+?)"')
+        if m:
+            self.html = self.load(urljoin("http://go4up.com/", m.group(1)))
+            pages = [self.load(url) for url in re.findall(self.LINK_PATTERN, self.html)]
+        else:
+            pages = [self.html]
+
+        for html in pages:
+            try:
+                links.append(re.search(r'<b><a href="(.+?)"', html).group(1))
+            except:
+                continue
+
+        return links
+
+
+getInfo = create_getInfo(Go4UpCom)
-- 
cgit v1.2.3


From 52664e6fe8dd99fc9bb78ea8cf158c17705b6ded Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 5 Dec 2014 19:18:11 +0100
Subject: Fix with statement on old env like python 2.5 (2)

---
 module/plugins/crypter/RelinkUs.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 4c84b62f7..1111118b2 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -1,5 +1,7 @@
 # -*- coding: utf-8 -*-
 
+from __future__ import with_statement
+
 import base64
 import binascii
 import re
@@ -12,7 +14,7 @@ from module.plugins.Crypter import Crypter
 class RelinkUs(Crypter):
     __name__    = "RelinkUs"
     __type__    = "crypter"
-    __version__ = "3.1"
+    __version__ = "3.11"
 
     __pattern__ = r'http://(?:www\.)?relink\.us/(f/|((view|go)\.php\?id=))(?P<id>.+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
-- 
cgit v1.2.3


From 67587fbe0335cacfde28a86ba729b9d567ce1da7 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 7 Dec 2014 00:27:18 +0100
Subject: Plugin code cosmetics (3)

---
 module/plugins/crypter/MediafireComFolder.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/MediafireComFolder.py b/module/plugins/crypter/MediafireComFolder.py
index c83de4715..d1dc89518 100644
--- a/module/plugins/crypter/MediafireComFolder.py
+++ b/module/plugins/crypter/MediafireComFolder.py
@@ -42,8 +42,10 @@ class MediafireComFolder(Crypter):
                     folder_key = m.group(1)
                     self.logDebug("FOLDER KEY: %s" % folder_key)
 
-                    json_resp = json_loads(self.load(
-                        "http://www.mediafire.com/api/folder/get_info.php?folder_key=%s&response_format=json&version=1" % folder_key))
+                    json_resp = json_loads(self.load("http://www.mediafire.com/api/folder/get_info.php",
+                                                     get={'folder_key'     : folder_key,
+                                                          'response_format': "json",
+                                                          'version'        : 1}))
                     #self.logInfo(json_resp)
                     if json_resp['response']['result'] == "Success":
                         for link in json_resp['response']['folder_info']['files']:
-- 
cgit v1.2.3


From 6151e81fa0b325dffda3da4228d5821e73db3ef3 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 9 Dec 2014 01:19:46 +0100
Subject: Fix __version__ format in some plugins

---
 module/plugins/crypter/ChipDe.py             | 2 +-
 module/plugins/crypter/CzshareComFolder.py   | 2 +-
 module/plugins/crypter/DDLMusicOrg.py        | 2 +-
 module/plugins/crypter/Dereferer.py          | 2 +-
 module/plugins/crypter/DontKnowMe.py         | 2 +-
 module/plugins/crypter/FourChanOrg.py        | 2 +-
 module/plugins/crypter/HoerbuchIn.py         | 2 +-
 module/plugins/crypter/HotfileComFolder.py   | 2 +-
 module/plugins/crypter/LetitbitNetFolder.py  | 2 +-
 module/plugins/crypter/MultiloadCz.py        | 2 +-
 module/plugins/crypter/OneKhDe.py            | 2 +-
 module/plugins/crypter/QuickshareCzFolder.py | 2 +-
 module/plugins/crypter/SpeedLoadOrgFolder.py | 2 +-
 module/plugins/crypter/StealthTo.py          | 2 +-
 module/plugins/crypter/UlozToFolder.py       | 2 +-
 module/plugins/crypter/XupPl.py              | 2 +-
 16 files changed, 16 insertions(+), 16 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index 59ed6559e..b342cd1bf 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -7,7 +7,7 @@ from module.plugins.Crypter import Crypter
 class ChipDe(Crypter):
     __name__    = "ChipDe"
     __type__    = "crypter"
-    __version__ = "0.1"
+    __version__ = "0.10"
 
     __pattern__ = r'http://(?:www\.)?chip\.de/video/.*\.html'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index 669f469b2..67376c6e6 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -7,7 +7,7 @@ from module.plugins.Crypter import Crypter
 class CzshareComFolder(Crypter):
     __name__    = "CzshareComFolder"
     __type__    = "crypter"
-    __version__ = "0.2"
+    __version__ = "0.20"
 
     __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/folders/.*'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py
index c2524b180..55181e9ad 100644
--- a/module/plugins/crypter/DDLMusicOrg.py
+++ b/module/plugins/crypter/DDLMusicOrg.py
@@ -10,7 +10,7 @@ from module.plugins.Crypter import Crypter
 class DDLMusicOrg(Crypter):
     __name__    = "DDLMusicOrg"
     __type__    = "crypter"
-    __version__ = "0.3"
+    __version__ = "0.30"
 
     __pattern__ = r'http://(?:www\.)?ddl-music\.org/captcha/ddlm_cr\d\.php\?\d+\?\d+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py
index 70b42b00c..dadc3c8b3 100644
--- a/module/plugins/crypter/Dereferer.py
+++ b/module/plugins/crypter/Dereferer.py
@@ -10,7 +10,7 @@ from module.plugins.Crypter import Crypter
 class Dereferer(Crypter):
     __name__    = "Dereferer"
     __type__    = "crypter"
-    __version__ = "0.1"
+    __version__ = "0.10"
 
     __pattern__ = r'https?://([^/]+)/.*?(?P<url>(ht|f)tps?(://|%3A%2F%2F).*)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index 6783abd7c..8d2a52c2c 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -10,7 +10,7 @@ from module.plugins.Crypter import Crypter
 class DontKnowMe(Crypter):
     __name__    = "DontKnowMe"
     __type__    = "crypter"
-    __version__ = "0.1"
+    __version__ = "0.10"
 
     __pattern__ = r'http://(?:www\.)?dontknow\.me/at/\?.+$'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/FourChanOrg.py b/module/plugins/crypter/FourChanOrg.py
index 48592d30a..d6c5c86cc 100644
--- a/module/plugins/crypter/FourChanOrg.py
+++ b/module/plugins/crypter/FourChanOrg.py
@@ -10,7 +10,7 @@ from module.plugins.Crypter import Crypter
 class FourChanOrg(Crypter):
     __name__    = "FourChanOrg"
     __type__    = "crypter"
-    __version__ = "0.3"
+    __version__ = "0.30"
 
     __pattern__ = r'http://(?:www\.)?boards\.4chan\.org/\w+/res/(\d+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/HoerbuchIn.py b/module/plugins/crypter/HoerbuchIn.py
index 4d4b8fbef..a347e4232 100644
--- a/module/plugins/crypter/HoerbuchIn.py
+++ b/module/plugins/crypter/HoerbuchIn.py
@@ -10,7 +10,7 @@ from module.plugins.Crypter import Crypter
 class HoerbuchIn(Crypter):
     __name__    = "HoerbuchIn"
     __type__    = "crypter"
-    __version__ = "0.6"
+    __version__ = "0.60"
 
     __pattern__ = r'http://(?:www\.)?hoerbuch\.in/(wp/horbucher/\d+/.+/|tp/out\.php\?.+|protection/folder_\d+\.html)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/HotfileComFolder.py b/module/plugins/crypter/HotfileComFolder.py
index a294c04e0..4f40587ad 100644
--- a/module/plugins/crypter/HotfileComFolder.py
+++ b/module/plugins/crypter/HotfileComFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 class HotfileComFolder(DeadCrypter):
     __name__    = "HotfileComFolder"
     __type__    = "crypter"
-    __version__ = "0.3"
+    __version__ = "0.30"
 
     __pattern__ = r'https?://(?:www\.)?hotfile\.com/list/\w+/\w+'
     __config__  = []
diff --git a/module/plugins/crypter/LetitbitNetFolder.py b/module/plugins/crypter/LetitbitNetFolder.py
index e3848e2ab..56ecbc7f8 100644
--- a/module/plugins/crypter/LetitbitNetFolder.py
+++ b/module/plugins/crypter/LetitbitNetFolder.py
@@ -7,7 +7,7 @@ from module.plugins.Crypter import Crypter
 class LetitbitNetFolder(Crypter):
     __name__    = "LetitbitNetFolder"
     __type__    = "crypter"
-    __version__ = "0.1"
+    __version__ = "0.10"
 
     __pattern__ = r'http://(?:www\.)?letitbit\.net/folder/\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index 127fe068a..b096f63ef 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -7,7 +7,7 @@ from module.plugins.Crypter import Crypter
 class MultiloadCz(Crypter):
     __name__    = "MultiloadCz"
     __type__    = "crypter"
-    __version__ = "0.4"
+    __version__ = "0.40"
 
     __pattern__ = r'http://(?:[^/]*\.)?multiload\.cz/(stahnout|slozka)/.*'
     __config__ = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/OneKhDe.py b/module/plugins/crypter/OneKhDe.py
index 540f14568..cfb084da8 100644
--- a/module/plugins/crypter/OneKhDe.py
+++ b/module/plugins/crypter/OneKhDe.py
@@ -9,7 +9,7 @@ from module.plugins.Crypter import Crypter
 class OneKhDe(Crypter):
     __name__    = "OneKhDe"
     __type__    = "crypter"
-    __version__ = "0.1"
+    __version__ = "0.10"
 
     __pattern__ = r'http://(?:www\.)?1kh\.de/f/'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index 52d558af7..f84f43fa4 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -7,7 +7,7 @@ from module.plugins.Crypter import Crypter
 class QuickshareCzFolder(Crypter):
     __name__    = "QuickshareCzFolder"
     __type__    = "crypter"
-    __version__ = "0.1"
+    __version__ = "0.10"
 
     __pattern__ = r'http://(?:www\.)?quickshare\.cz/slozka-\d+.*'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/SpeedLoadOrgFolder.py b/module/plugins/crypter/SpeedLoadOrgFolder.py
index 1d3a7df91..ddde7dec2 100644
--- a/module/plugins/crypter/SpeedLoadOrgFolder.py
+++ b/module/plugins/crypter/SpeedLoadOrgFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 class SpeedLoadOrgFolder(DeadCrypter):
     __name__    = "SpeedLoadOrgFolder"
     __type__    = "crypter"
-    __version__ = "0.3"
+    __version__ = "0.30"
 
     __pattern__ = r'http://(?:www\.)?speedload\.org/(\d+~f$|folder/\d+/)'
     __config__  = []
diff --git a/module/plugins/crypter/StealthTo.py b/module/plugins/crypter/StealthTo.py
index e4da3e7e4..5173421f1 100644
--- a/module/plugins/crypter/StealthTo.py
+++ b/module/plugins/crypter/StealthTo.py
@@ -6,7 +6,7 @@ from module.plugins.internal.DeadCrypter import DeadCrypter, create_getInfo
 class StealthTo(DeadCrypter):
     __name__    = "StealthTo"
     __type__    = "crypter"
-    __version__ = "0.2"
+    __version__ = "0.20"
 
     __pattern__ = r'http://(?:www\.)?stealth\.to/folder/.+'
     __config__  = []
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index 59c828174..cfb756413 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -7,7 +7,7 @@ from module.plugins.Crypter import Crypter
 class UlozToFolder(Crypter):
     __name__    = "UlozToFolder"
     __type__    = "crypter"
-    __version__ = "0.2"
+    __version__ = "0.20"
 
     __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj\.cz|zachowajto\.pl)/(m|soubory)/.*'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py
index c456723b3..25b80860c 100644
--- a/module/plugins/crypter/XupPl.py
+++ b/module/plugins/crypter/XupPl.py
@@ -6,7 +6,7 @@ from module.plugins.Crypter import Crypter
 class XupPl(Crypter):
     __name__    = "XupPl"
     __type__    = "crypter"
-    __version__ = "0.1"
+    __version__ = "0.10"
 
     __pattern__ = r'https?://(?:[^/]*\.)?xup\.pl/.*'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
-- 
cgit v1.2.3


From 4d578cb15f3d6edd036e438e504739b97660f93e Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 9 Dec 2014 16:58:35 +0100
Subject: Spare code cosmetics

---
 module/plugins/crypter/FilecryptCc.py    |  8 ++++----
 module/plugins/crypter/NCryptIn.py       |  4 ++--
 module/plugins/crypter/RelinkUs.py       | 25 +++++++++++++++++--------
 module/plugins/crypter/SafelinkingNet.py |  2 +-
 4 files changed, 24 insertions(+), 15 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilecryptCc.py b/module/plugins/crypter/FilecryptCc.py
index fb53e616b..0aa730744 100644
--- a/module/plugins/crypter/FilecryptCc.py
+++ b/module/plugins/crypter/FilecryptCc.py
@@ -107,10 +107,10 @@ class FilecryptCc(Crypter):
             weblinks = re.findall(self.WEBLINK_PATTERN, self.siteWithLinks)
 
             for link in weblinks:
-                response = self.load("http://filecrypt.cc/Link/%s.html" % link, cookies=True)
-                link2 = re.search('<iframe noresize src="(.*)"></iframe>', response)
-                response2 = self.load(link2.group(1), just_header=True, cookies=True)
-                self.links.append(response2['location'])
+                res   = self.load("http://filecrypt.cc/Link/%s.html" % link, cookies=True)
+                link2 = re.search('<iframe noresize src="(.*)"></iframe>', res)
+                res2  = self.load(link2.group(1), just_header=True, cookies=True)
+                self.links.append(res2['location'])
 
         except Exception, e:
             self.logDebug("Error decrypting weblinks: %s" % e)
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 3c08e26c1..1d572e538 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -156,9 +156,9 @@ class NCryptIn(Crypter):
             captcha_key = re.search(r'\?k=(.*?)"', form).group(1)
             self.logDebug("Resolving ReCaptcha with key [%s]" % captcha_key)
             recaptcha = ReCaptcha(self)
-            challenge, code = recaptcha.challenge(captcha_key)
+            challenge, response = recaptcha.challenge(captcha_key)
             postData['recaptcha_challenge_field'] = challenge
-            postData['recaptcha_response_field'] = code
+            postData['recaptcha_response_field']  = response
 
         # Resolve circlecaptcha
         if "circlecaptcha" in form:
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 1111118b2..94a73cded 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -228,20 +228,29 @@ class RelinkUs(Crypter):
 
     def handleWEBLinks(self):
         self.logDebug("Search for WEB links")
+
         package_links = []
-        fw_params = re.findall(self.WEB_FORWARD_REGEX, self.html)
-        self.logDebug("Decrypting %d Web links" % len(fw_params))
-        for index, fw_param in enumerate(fw_params):
+        params        = re.findall(self.WEB_FORWARD_REGEX, self.html)
+
+        self.logDebug("Decrypting %d Web links" % len(params))
+
+        for index, param in enumerate(params):
             try:
-                fw_url = self.WEB_FORWARD_URL + "?%s" % fw_param
-                self.logDebug("Decrypting Web link %d, %s" % (index + 1, fw_url))
-                fw_response = self.load(fw_url, decode=True)
-                dl_link = re.search(self.WEB_LINK_REGEX, fw_response).group('link')
-                package_links.append(dl_link)
+                url = self.WEB_FORWARD_URL + "?%s" % param
+
+                self.logDebug("Decrypting Web link %d, %s" % (index + 1, url))
+
+                res  = self.load(url, decode=True)
+                link = re.search(self.WEB_LINK_REGEX, res).group('link')
+
+                package_links.append(link)
+
             except Exception, detail:
                 self.logDebug("Error decrypting Web link %s, %s" % (index, detail))
+
             self.setWait(4)
             self.wait()
+
         return package_links
 
 
diff --git a/module/plugins/crypter/SafelinkingNet.py b/module/plugins/crypter/SafelinkingNet.py
index 9bb6c3229..709083b51 100644
--- a/module/plugins/crypter/SafelinkingNet.py
+++ b/module/plugins/crypter/SafelinkingNet.py
@@ -57,7 +57,7 @@ class SafelinkingNet(Crypter):
 
                     challenge, response = captcha.challenge(captchaKey)
                     postData['adcopy_challenge'] = challenge
-                    postData['adcopy_response'] = response
+                    postData['adcopy_response']  = response
 
                     self.html = self.load(url, post=postData)
                     if "The password you entered was incorrect" in self.html:
-- 
cgit v1.2.3


From 5981ad8ebf968642d433c3aeb8b8da9202f7615c Mon Sep 17 00:00:00 2001
From: zapp-brannigan <zapp-brannigan@users.noreply.github.com>
Date: Thu, 11 Dec 2014 17:13:58 +0100
Subject: [FilecryptCc.py] Upgrade captcha handling

Added support for "click the open circle" captchas.
---
 module/plugins/crypter/FilecryptCc.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilecryptCc.py b/module/plugins/crypter/FilecryptCc.py
index fb53e616b..9623ffdee 100644
--- a/module/plugins/crypter/FilecryptCc.py
+++ b/module/plugins/crypter/FilecryptCc.py
@@ -12,7 +12,7 @@ from module.plugins.Crypter import Crypter
 class FilecryptCc(Crypter):
     __name__    = "FilecryptCc"
     __type__    = "crypter"
-    __version__ = "0.05"
+    __version__ = "0.06"
 
     __pattern__ = r'https?://(?:www\.)?filecrypt\.cc/Container/\w+'
 
@@ -27,6 +27,7 @@ class FilecryptCc(Crypter):
     WEBLINK_PATTERN = r"openLink.?'([\w_-]*)',"
 
     CAPTCHA_PATTERN = r'<img id="nc" src="(.+?)"'
+    CIRCLECAPTCHA_PATTERN = r'<input type="image" src="(.+?)"'
 
     MIRROR_PAGE_PATTERN = r'"[\w]*" href="(http://filecrypt.cc/Container/\w+\.html\?mirror=\d+)">'
 
@@ -38,7 +39,7 @@ class FilecryptCc(Crypter):
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url, cookies=True)
 
-        if "content not found" in self.html:
+        if "content notfound" in self.html: #@pyload-devs: this is _not_ a typo
             self.offline()
 
         self.handlePasswordProtection()
@@ -78,16 +79,21 @@ class FilecryptCc(Crypter):
 
     def handleCaptcha(self):
         m = re.search(self.CAPTCHA_PATTERN, self.html)
+        found = re.search(self.CIRCLECAPTCHA_PATTERN, self.html)
 
-        if m:
+        if m: #normal captcha
             self.logDebug("Captcha-URL: %s" % m.group(1))
             captcha_code = self.decryptCaptcha("http://filecrypt.cc" + m.group(1), forceUser=True, imgtype="gif")
             self.siteWithLinks = self.load(self.pyfile.url, post={"recaptcha_response_field":captcha_code}, decode=True, cookies=True)
+        elif found: #circle captcha
+            self.logDebug("Captcha-URL: %s" % found.group(1))
+            captcha_code = self.decryptCaptcha("http://filecrypt.cc" + found.group(1), forceUser=True, imgtype="gif", result_type='positional')
+            self.siteWithLinks = self.load(self.pyfile.url, post={"button.x":captcha_code[0], "button.y":captcha_code[1]}, decode=True, cookies=True)
         else:
             self.logDebug("No captcha found")
             self.siteWithLinks = self.html
 
-        if "recaptcha_response_field" in self.siteWithLinks:
+        if "recaptcha_image" in self.siteWithLinks:
             self.invalidCaptcha()
             self.retry()
 
-- 
cgit v1.2.3


From 0f530be2642c63759cb6156866f1d4ab119760da Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Fri, 12 Dec 2014 20:33:34 +0100
Subject: Fix missing create_getInfo

---
 module/plugins/crypter/BitshareComFolder.py       | 5 ++++-
 module/plugins/crypter/CrockoComFolder.py         | 5 ++++-
 module/plugins/crypter/DataHuFolder.py            | 5 ++++-
 module/plugins/crypter/DepositfilesComFolder.py   | 5 ++++-
 module/plugins/crypter/DevhostStFolder.py         | 5 ++++-
 module/plugins/crypter/DlProtectCom.py            | 5 ++++-
 module/plugins/crypter/EasybytezComFolder.py      | 5 ++++-
 module/plugins/crypter/FilecloudIoFolder.py       | 5 ++++-
 module/plugins/crypter/FilefactoryComFolder.py    | 5 ++++-
 module/plugins/crypter/FilerNetFolder.py          | 5 ++++-
 module/plugins/crypter/FilestubeCom.py            | 5 ++++-
 module/plugins/crypter/FiletramCom.py             | 5 ++++-
 module/plugins/crypter/FreakhareComFolder.py      | 5 ++++-
 module/plugins/crypter/FreetexthostCom.py         | 5 ++++-
 module/plugins/crypter/FshareVnFolder.py          | 5 ++++-
 module/plugins/crypter/ImgurComAlbum.py           | 5 ++++-
 module/plugins/crypter/JunocloudMeFolder.py       | 5 ++++-
 module/plugins/crypter/LinkSaveIn.py              | 5 ++++-
 module/plugins/crypter/MegaRapidCzFolder.py       | 5 ++++-
 module/plugins/crypter/MultiUpOrg.py              | 5 ++++-
 module/plugins/crypter/NetfolderIn.py             | 5 ++++-
 module/plugins/crypter/NosvideoCom.py             | 5 ++++-
 module/plugins/crypter/PastebinCom.py             | 5 ++++-
 module/plugins/crypter/RapidfileshareNetFolder.py | 5 ++++-
 module/plugins/crypter/TnyCz.py                   | 5 ++++-
 module/plugins/crypter/TurbobitNetFolder.py       | 5 ++++-
 module/plugins/crypter/TusfilesNetFolder.py       | 5 ++++-
 module/plugins/crypter/UploadableChFolder.py      | 5 ++++-
 module/plugins/crypter/UploadedToFolder.py        | 5 ++++-
 module/plugins/crypter/XFileSharingProFolder.py   | 5 ++++-
 30 files changed, 120 insertions(+), 30 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/BitshareComFolder.py b/module/plugins/crypter/BitshareComFolder.py
index e4038aebf..c70a849b6 100644
--- a/module/plugins/crypter/BitshareComFolder.py
+++ b/module/plugins/crypter/BitshareComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class BitshareComFolder(SimpleCrypter):
@@ -19,3 +19,6 @@ class BitshareComFolder(SimpleCrypter):
 
     LINK_PATTERN = r'<a href="(http://bitshare\.com/files/.+)">.+</a></td>'
     NAME_PATTERN = r'View public folder "(?P<N>.+)"</h1>'
+
+
+getInfo = create_getInfo(BitshareComFolder)
diff --git a/module/plugins/crypter/CrockoComFolder.py b/module/plugins/crypter/CrockoComFolder.py
index 64a1f8bce..bf91b0afc 100644
--- a/module/plugins/crypter/CrockoComFolder.py
+++ b/module/plugins/crypter/CrockoComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class CrockoComFolder(SimpleCrypter):
@@ -18,3 +18,6 @@ class CrockoComFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<td class="last"><a href="([^"]+)">download</a>'
+
+
+getInfo = create_getInfo(CrockoComFolder)
diff --git a/module/plugins/crypter/DataHuFolder.py b/module/plugins/crypter/DataHuFolder.py
index 0399e686d..a5602d6c6 100644
--- a/module/plugins/crypter/DataHuFolder.py
+++ b/module/plugins/crypter/DataHuFolder.py
@@ -2,7 +2,7 @@
 
 import re
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class DataHuFolder(SimpleCrypter):
@@ -38,3 +38,6 @@ class DataHuFolder(SimpleCrypter):
 
             if u'Hib\xe1s jelsz\xf3' in self.html:  # Wrong password
                 self.fail(_("Wrong password"))
+
+
+getInfo = create_getInfo(DataHuFolder)
diff --git a/module/plugins/crypter/DepositfilesComFolder.py b/module/plugins/crypter/DepositfilesComFolder.py
index 79c31c97a..147f093c3 100644
--- a/module/plugins/crypter/DepositfilesComFolder.py
+++ b/module/plugins/crypter/DepositfilesComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class DepositfilesComFolder(SimpleCrypter):
@@ -18,3 +18,6 @@ class DepositfilesComFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<div class="progressName"[^>]*>\s*<a href="([^"]+)" title="[^"]*" target="_blank">'
+
+
+getInfo = create_getInfo(DepositfilesComFolder)
diff --git a/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py
index 192c5962c..5ac9d4faf 100644
--- a/module/plugins/crypter/DevhostStFolder.py
+++ b/module/plugins/crypter/DevhostStFolder.py
@@ -7,7 +7,7 @@ import re
 
 from urlparse import urljoin
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class DevhostStFolder(SimpleCrypter):
@@ -56,3 +56,6 @@ class DevhostStFolder(SimpleCrypter):
 
     def getLinks(self):
         return [urljoin("http://d-h.st", link) for link in re.findall(self.LINK_PATTERN, self.html)]
+
+
+getInfo = create_getInfo(DevhostStFolder)
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index 5efb03c15..0f59e925e 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -5,7 +5,7 @@ import re
 from base64 import urlsafe_b64encode
 from time import time
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class DlProtectCom(SimpleCrypter):
@@ -63,3 +63,6 @@ class DlProtectCom(SimpleCrypter):
 
         pattern = r'<a href="([^/].+?)" target="_blank">'
         return re.findall(pattern, self.html)
+
+
+getInfo = create_getInfo(DlProtectCom)
diff --git a/module/plugins/crypter/EasybytezComFolder.py b/module/plugins/crypter/EasybytezComFolder.py
index fa3e6165c..04f9b853b 100644
--- a/module/plugins/crypter/EasybytezComFolder.py
+++ b/module/plugins/crypter/EasybytezComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.XFSCrypter import XFSCrypter
+from module.plugins.internal.XFSCrypter import XFSCrypter, create_getInfo
 
 
 class EasybytezComFolder(XFSCrypter):
@@ -20,3 +20,6 @@ class EasybytezComFolder(XFSCrypter):
     HOSTER_DOMAIN = "easybytez.com"
 
     LOGIN_ACCOUNT = True
+
+
+getInfo = create_getInfo(EasybytezComFolder)
diff --git a/module/plugins/crypter/FilecloudIoFolder.py b/module/plugins/crypter/FilecloudIoFolder.py
index 5640ab5c9..83cce352d 100644
--- a/module/plugins/crypter/FilecloudIoFolder.py
+++ b/module/plugins/crypter/FilecloudIoFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class FilecloudIoFolder(SimpleCrypter):
@@ -19,3 +19,6 @@ class FilecloudIoFolder(SimpleCrypter):
 
     LINK_PATTERN = r'href="(http://filecloud\.io/\w+)" title'
     NAME_PATTERN = r'>(?P<N>.+?) - filecloud\.io<'
+
+
+getInfo = create_getInfo(FilecloudIoFolder)
diff --git a/module/plugins/crypter/FilefactoryComFolder.py b/module/plugins/crypter/FilefactoryComFolder.py
index 52c39c386..26e28acbd 100644
--- a/module/plugins/crypter/FilefactoryComFolder.py
+++ b/module/plugins/crypter/FilefactoryComFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class FilefactoryComFolder(SimpleCrypter):
@@ -26,3 +26,6 @@ class FilefactoryComFolder(SimpleCrypter):
 
     def loadPage(self, page_n):
         return self.load(self.pyfile.url, get={'page': page_n})
+
+
+getInfo = create_getInfo(FilefactoryComFolder)
diff --git a/module/plugins/crypter/FilerNetFolder.py b/module/plugins/crypter/FilerNetFolder.py
index a2daba136..00db173bb 100644
--- a/module/plugins/crypter/FilerNetFolder.py
+++ b/module/plugins/crypter/FilerNetFolder.py
@@ -1,6 +1,6 @@
 import re
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class FilerNetFolder(SimpleCrypter):
@@ -24,3 +24,6 @@ class FilerNetFolder(SimpleCrypter):
 
     def getLinks(self):
         return ['http://filer.net%s' % link for link in re.findall(self.LINK_PATTERN, self.html)]
+
+
+getInfo = create_getInfo(FilerNetFolder)
diff --git a/module/plugins/crypter/FilestubeCom.py b/module/plugins/crypter/FilestubeCom.py
index 29de108e5..16ebdda37 100644
--- a/module/plugins/crypter/FilestubeCom.py
+++ b/module/plugins/crypter/FilestubeCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class FilestubeCom(SimpleCrypter):
@@ -19,3 +19,6 @@ class FilestubeCom(SimpleCrypter):
 
     LINK_PATTERN = r'<a class=\"file-link-main(?: noref)?\" [^>]* href=\"(http://[^\"]+)'
     NAME_PATTERN = r'<h1\s*> (?P<N>.+)  download\s*</h1>'
+
+
+getInfo = create_getInfo(FilestubeCom)
diff --git a/module/plugins/crypter/FiletramCom.py b/module/plugins/crypter/FiletramCom.py
index e4c8b6360..76530c589 100644
--- a/module/plugins/crypter/FiletramCom.py
+++ b/module/plugins/crypter/FiletramCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class FiletramCom(SimpleCrypter):
@@ -20,3 +20,6 @@ class FiletramCom(SimpleCrypter):
 
     LINK_PATTERN = r'\s+(http://.+)'
     NAME_PATTERN = r'<title>(?P<N>.+?) - Free Download'
+
+
+getInfo = create_getInfo(FiletramCom)
diff --git a/module/plugins/crypter/FreakhareComFolder.py b/module/plugins/crypter/FreakhareComFolder.py
index d4d3c6d3c..7c1b7de2b 100644
--- a/module/plugins/crypter/FreakhareComFolder.py
+++ b/module/plugins/crypter/FreakhareComFolder.py
@@ -2,7 +2,7 @@
 
 import re
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class FreakhareComFolder(SimpleCrypter):
@@ -36,3 +36,6 @@ class FreakhareComFolder(SimpleCrypter):
                                                         'entrys': '20',
                                                         'page': page_n - 1,
                                                         'order': ''}, decode=True)
+
+
+getInfo = create_getInfo(FreakhareComFolder)
diff --git a/module/plugins/crypter/FreetexthostCom.py b/module/plugins/crypter/FreetexthostCom.py
index 36bc61d35..c33c9ff64 100644
--- a/module/plugins/crypter/FreetexthostCom.py
+++ b/module/plugins/crypter/FreetexthostCom.py
@@ -2,7 +2,7 @@
 
 import re
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class FreetexthostCom(SimpleCrypter):
@@ -25,3 +25,6 @@ class FreetexthostCom(SimpleCrypter):
             self.error(_("Unable to extract links"))
         links = m.group(1)
         return links.strip().split("<br />\r\n")
+
+
+getInfo = create_getInfo(FreetexthostCom)
diff --git a/module/plugins/crypter/FshareVnFolder.py b/module/plugins/crypter/FshareVnFolder.py
index e6e67ea13..d31a5c6a0 100644
--- a/module/plugins/crypter/FshareVnFolder.py
+++ b/module/plugins/crypter/FshareVnFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class FshareVnFolder(SimpleCrypter):
@@ -18,3 +18,6 @@ class FshareVnFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<li class="w_80pc"><a href="([^"]+)" target="_blank">'
+
+
+getInfo = create_getInfo(FshareVnFolder)
diff --git a/module/plugins/crypter/ImgurComAlbum.py b/module/plugins/crypter/ImgurComAlbum.py
index f8f226a1b..6c074f5f1 100644
--- a/module/plugins/crypter/ImgurComAlbum.py
+++ b/module/plugins/crypter/ImgurComAlbum.py
@@ -1,6 +1,6 @@
 import re
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 from module.utils import uniqify
 
 
@@ -25,3 +25,6 @@ class ImgurComAlbum(SimpleCrypter):
     def getLinks(self):
         f = lambda url: "http://" + re.sub(r'(\w{7})s\.', r'\1.', url)
         return uniqify(map(f, re.findall(self.LINK_PATTERN, self.html)))
+
+
+getInfo = create_getInfo(ImgurComAlbum)
diff --git a/module/plugins/crypter/JunocloudMeFolder.py b/module/plugins/crypter/JunocloudMeFolder.py
index 509f1f7ec..990f25902 100644
--- a/module/plugins/crypter/JunocloudMeFolder.py
+++ b/module/plugins/crypter/JunocloudMeFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.XFSCrypter import XFSCrypter
+from module.plugins.internal.XFSCrypter import XFSCrypter, create_getInfo
 
 
 class JunocloudMeFolder(XFSCrypter):
@@ -18,3 +18,6 @@ class JunocloudMeFolder(XFSCrypter):
 
 
     HOSTER_DOMAIN = "junocloud.me"
+
+
+getInfo = create_getInfo(JunocloudMeFolder)
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 46babd156..22aba8afc 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -9,7 +9,7 @@ import re
 
 from Crypto.Cipher import AES
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 from module.unescape import unescape
 
 
@@ -244,3 +244,6 @@ class LinkSaveIn(SimpleCrypter):
         # Log and return
         self.logDebug("Package has %d links" % len(links))
         return links
+
+
+getInfo = create_getInfo(LinkSaveIn)
diff --git a/module/plugins/crypter/MegaRapidCzFolder.py b/module/plugins/crypter/MegaRapidCzFolder.py
index d9fb828a8..e7dff6c8a 100644
--- a/module/plugins/crypter/MegaRapidCzFolder.py
+++ b/module/plugins/crypter/MegaRapidCzFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class MegaRapidCzFolder(SimpleCrypter):
@@ -18,3 +18,6 @@ class MegaRapidCzFolder(SimpleCrypter):
 
 
     LINK_PATTERN = r'<td class="soubor"[^>]*><a href="([^"]+)">'
+
+
+getInfo = create_getInfo(MegaRapidCzFolder)
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index 5f3fc8b17..ada8d0728 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -3,7 +3,7 @@
 import re
 from urlparse import urljoin
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class MultiUpOrg(SimpleCrypter):
@@ -36,3 +36,6 @@ class MultiUpOrg(SimpleCrypter):
                 self.html = self.load(miror_page)
 
         return re.findall(pattern, self.html)
+
+
+getInfo = create_getInfo(MultiUpOrg)
diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index a47bd0503..bfdf5cb82 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -2,7 +2,7 @@
 
 import re
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class NetfolderIn(SimpleCrypter):
@@ -68,3 +68,6 @@ class NetfolderIn(SimpleCrypter):
         links = re.search(r'name="list" value="(.*?)"', self.html).group(1).split(",")
         self.logDebug("Package has %d links" % len(links))
         return links
+
+
+getInfo = create_getInfo(NetfolderIn)
diff --git a/module/plugins/crypter/NosvideoCom.py b/module/plugins/crypter/NosvideoCom.py
index 3abefdadb..1e280abd2 100644
--- a/module/plugins/crypter/NosvideoCom.py
+++ b/module/plugins/crypter/NosvideoCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class NosvideoCom(SimpleCrypter):
@@ -19,3 +19,6 @@ class NosvideoCom(SimpleCrypter):
 
     LINK_PATTERN = r'href="(http://(?:w{3}\.)?nosupload\.com/\?d=\w+)"'
     NAME_PATTERN = r'<[tT]itle>Watch (?P<N>.+?)<'
+
+
+getInfo = create_getInfo(NosvideoCom)
diff --git a/module/plugins/crypter/PastebinCom.py b/module/plugins/crypter/PastebinCom.py
index 1dae39bb8..b3d5a4bea 100644
--- a/module/plugins/crypter/PastebinCom.py
+++ b/module/plugins/crypter/PastebinCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class PastebinCom(SimpleCrypter):
@@ -19,3 +19,6 @@ class PastebinCom(SimpleCrypter):
 
     LINK_PATTERN = r'<div class="de\d+">(https?://[^ <]+)(?:[^<]*)</div>'
     NAME_PATTERN = r'<div class="paste_box_line1" title="(?P<N>[^"]+)">'
+
+
+getInfo = create_getInfo(PastebinCom)
diff --git a/module/plugins/crypter/RapidfileshareNetFolder.py b/module/plugins/crypter/RapidfileshareNetFolder.py
index 5531d5a90..fc3d4241e 100644
--- a/module/plugins/crypter/RapidfileshareNetFolder.py
+++ b/module/plugins/crypter/RapidfileshareNetFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.XFSCrypter import XFSCrypter
+from module.plugins.internal.XFSCrypter import XFSCrypter, create_getInfo
 
 
 class RapidfileshareNetFolder(XFSCrypter):
@@ -18,3 +18,6 @@ class RapidfileshareNetFolder(XFSCrypter):
 
 
     HOSTER_DOMAIN = "rapidfileshare.net"
+
+
+getInfo = create_getInfo(RapidfileshareNetFolder)
diff --git a/module/plugins/crypter/TnyCz.py b/module/plugins/crypter/TnyCz.py
index 6dde729f5..d36128550 100644
--- a/module/plugins/crypter/TnyCz.py
+++ b/module/plugins/crypter/TnyCz.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 import re
 
@@ -25,3 +25,6 @@ class TnyCz(SimpleCrypter):
     def getLinks(self):
         m = re.search(r'<a id=\'save_paste\' href="(.+save\.php\?hash=.+)">', self.html)
         return re.findall(".+", self.load(m.group(1), decode=True)) if m else None
+
+
+getInfo = create_getInfo(TnyCz)
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index 4e07564af..64fcefac6 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -2,7 +2,7 @@
 
 import re
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 from module.common.json_layer import json_loads
 
 
@@ -42,3 +42,6 @@ class TurbobitNetFolder(SimpleCrypter):
         id = re.match(self.__pattern__, self.pyfile.url).group("ID")
         fixurl = lambda id: "http://turbobit.net/%s.html" % id
         return map(fixurl, self._getLinks(id))
+
+
+getInfo = create_getInfo(TurbobitNetFolder)
diff --git a/module/plugins/crypter/TusfilesNetFolder.py b/module/plugins/crypter/TusfilesNetFolder.py
index 9533a6e76..0db3470cc 100644
--- a/module/plugins/crypter/TusfilesNetFolder.py
+++ b/module/plugins/crypter/TusfilesNetFolder.py
@@ -4,7 +4,7 @@ import math
 import re
 from urlparse import urljoin
 
-from module.plugins.internal.XFSCrypter import XFSCrypter
+from module.plugins.internal.XFSCrypter import XFSCrypter, create_getInfo
 
 
 class TusfilesNetFolder(XFSCrypter):
@@ -43,3 +43,6 @@ class TusfilesNetFolder(XFSCrypter):
         for p in xrange(2, pages + 1):
             self.html = self.loadPage(p)
             self.links += self.getLinks()
+
+
+getInfo = create_getInfo(TusfilesNetFolder)
diff --git a/module/plugins/crypter/UploadableChFolder.py b/module/plugins/crypter/UploadableChFolder.py
index 070753ac0..22f9ca2ed 100644
--- a/module/plugins/crypter/UploadableChFolder.py
+++ b/module/plugins/crypter/UploadableChFolder.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class UploadableChFolder(SimpleCrypter):
@@ -22,3 +22,6 @@ class UploadableChFolder(SimpleCrypter):
     NAME_PATTERN = r'<div class="folder"><span>&nbsp;</span>(?P<N>.+?)</div>'
     OFFLINE_PATTERN = r'We are sorry... The URL you entered cannot be found on the server.'
     TEMP_OFFLINE_PATTERN = r'<div class="icon_err">'
+
+
+getInfo = create_getInfo(UploadableChFolder)
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index 359ba92d0..3e77d73a9 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -4,7 +4,7 @@ import re
 
 from urlparse import urljoin
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
 
 
 class UploadedToFolder(SimpleCrypter):
@@ -32,3 +32,6 @@ class UploadedToFolder(SimpleCrypter):
 
         plain_link = urljoin("http://uploaded.net/", m.group('plain'))
         return self.load(plain_link).split('\n')[:-1]
+
+
+getInfo = create_getInfo(UploadedToFolder)
diff --git a/module/plugins/crypter/XFileSharingProFolder.py b/module/plugins/crypter/XFileSharingProFolder.py
index dffd8909c..10e4d8c83 100644
--- a/module/plugins/crypter/XFileSharingProFolder.py
+++ b/module/plugins/crypter/XFileSharingProFolder.py
@@ -2,7 +2,7 @@
 
 import re
 
-from module.plugins.internal.XFSCrypter import XFSCrypter
+from module.plugins.internal.XFSCrypter import XFSCrypter, create_getInfo
 
 
 class XFileSharingProFolder(XFSCrypter):
@@ -45,3 +45,6 @@ class XFileSharingProFolder(XFSCrypter):
         self.user, data = self.account.selectAccount()
         self.req = self.account.getAccountRequest(self.user)
         self.premium = self.account.isPremium(self.user)
+
+
+getInfo = create_getInfo(XFileSharingProFolder)
-- 
cgit v1.2.3


From 5cb925f5d23ca05c8e9bd5df75a68b0b4c2dc408 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 16 Dec 2014 02:06:02 +0100
Subject: Update plugins

---
 module/plugins/crypter/FilecryptCc.py | 42 ++++++++++++++++++++++++-----------
 1 file changed, 29 insertions(+), 13 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilecryptCc.py b/module/plugins/crypter/FilecryptCc.py
index 9793d4e5b..087f377ff 100644
--- a/module/plugins/crypter/FilecryptCc.py
+++ b/module/plugins/crypter/FilecryptCc.py
@@ -5,6 +5,7 @@ import binascii
 import re
 
 from Crypto.Cipher import AES
+from urlparse import urljoin
 
 from module.plugins.Crypter import Crypter
 
@@ -12,7 +13,7 @@ from module.plugins.Crypter import Crypter
 class FilecryptCc(Crypter):
     __name__    = "FilecryptCc"
     __type__    = "crypter"
-    __version__ = "0.06"
+    __version__ = "0.07"
 
     __pattern__ = r'https?://(?:www\.)?filecrypt\.cc/Container/\w+'
 
@@ -24,10 +25,10 @@ class FilecryptCc(Crypter):
     # URL_REPLACEMENTS  = [(r'.html$', ""), (r'$', ".html")]  #@TODO: Extend SimpleCrypter
 
     DLC_LINK_PATTERN = r'<button class="dlcdownload" type="button" title="Download \*.dlc" onclick="DownloadDLC\(\'(.+)\'\);"><i></i><span>dlc<'
-    WEBLINK_PATTERN = r"openLink.?'([\w_-]*)',"
+    WEBLINK_PATTERN  = r"openLink.?'([\w_-]*)',"
 
-    CAPTCHA_PATTERN = r'<img id="nc" src="(.+?)"'
-    CIRCLECAPTCHA_PATTERN = r'<input type="image" src="(.+?)"'
+    CAPTCHA_PATTERN        = r'<img id="nc" src="(.+?)"'
+    CIRCLE_CAPTCHA_PATTERN = r'<input type="image" src="(.+?)"'
 
     MIRROR_PAGE_PATTERN = r'"[\w]*" href="(http://filecrypt.cc/Container/\w+\.html\?mirror=\d+)">'
 
@@ -39,7 +40,7 @@ class FilecryptCc(Crypter):
     def decrypt(self, pyfile):
         self.html = self.load(pyfile.url, cookies=True)
 
-        if "content notfound" in self.html: #@pyload-devs: this is _not_ a typo
+        if "content notfound" in self.html:  #@NOTE: "content notfound" is NOT a typo
             self.offline()
 
         self.handlePasswordProtection()
@@ -79,16 +80,31 @@ class FilecryptCc(Crypter):
 
     def handleCaptcha(self):
         m = re.search(self.CAPTCHA_PATTERN, self.html)
-        found = re.search(self.CIRCLECAPTCHA_PATTERN, self.html)
+        m2 = re.search(self.CIRCLE_CAPTCHA_PATTERN, self.html)
 
-        if m: #normal captcha
+        if m:  #: normal captcha
             self.logDebug("Captcha-URL: %s" % m.group(1))
-            captcha_code = self.decryptCaptcha("http://filecrypt.cc" + m.group(1), forceUser=True, imgtype="gif")
-            self.siteWithLinks = self.load(self.pyfile.url, post={"recaptcha_response_field":captcha_code}, decode=True, cookies=True)
-        elif found: #circle captcha
-            self.logDebug("Captcha-URL: %s" % found.group(1))
-            captcha_code = self.decryptCaptcha("http://filecrypt.cc" + found.group(1), forceUser=True, imgtype="gif", result_type='positional')
-            self.siteWithLinks = self.load(self.pyfile.url, post={"button.x":captcha_code[0], "button.y":captcha_code[1]}, decode=True, cookies=True)
+
+            captcha_code = self.decryptCaptcha(urljoin("http://filecrypt.cc", m.group(1)),
+                                               forceUser=True,
+                                               imgtype="gif")
+
+            self.siteWithLinks = self.load(self.pyfile.url,
+                                           post={'recaptcha_response_field': captcha_code},
+                                           cookies=True,
+                                           decode=True)
+        elif m2:  #: circle captcha
+            self.logDebug("Captcha-URL: %s" % m2.group(1))
+
+            captcha_code = self.decryptCaptcha(urljoin("http://filecrypt.cc", m2.group(1)),
+                                               forceUser=True,
+                                               imgtype="gif",
+                                               result_type='positional')
+
+            self.siteWithLinks = self.load(self.pyfile.url,
+                                           post={'button.x': captcha_code[0], 'button.y': captcha_code[1]},
+                                           cookies=True,
+                                           decode=True)
         else:
             self.logDebug("No captcha found")
             self.siteWithLinks = self.html
-- 
cgit v1.2.3


From 854efeb463bd98cb8e22f1f78f5ce97e6c0ab49f Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Mon, 22 Dec 2014 16:45:04 +0100
Subject: Spare code cosmetics

---
 module/plugins/crypter/DailymotionBatch.py  |  4 ++--
 module/plugins/crypter/Dereferer.py         |  4 ++--
 module/plugins/crypter/DlProtectCom.py      |  2 +-
 module/plugins/crypter/LinkSaveIn.py        |  4 ++--
 module/plugins/crypter/LixIn.py             | 10 +++++-----
 module/plugins/crypter/MultiUpOrg.py        |  2 +-
 module/plugins/crypter/NCryptIn.py          |  4 ++--
 module/plugins/crypter/RelinkUs.py          | 10 +++++-----
 module/plugins/crypter/TurbobitNetFolder.py |  2 +-
 module/plugins/crypter/UploadedToFolder.py  |  6 +++---
 module/plugins/crypter/YoutubeBatch.py      |  4 ++--
 11 files changed, 26 insertions(+), 26 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py
index 28e01c084..8d4cb64df 100644
--- a/module/plugins/crypter/DailymotionBatch.py
+++ b/module/plugins/crypter/DailymotionBatch.py
@@ -84,8 +84,8 @@ class DailymotionBatch(Crypter):
 
     def decrypt(self, pyfile):
         m = re.match(self.__pattern__, pyfile.url)
-        m_id = m.group("ID")
-        m_type = m.group("TYPE")
+        m_id = m.group('ID')
+        m_type = m.group('TYPE')
 
         if m_type == "playlist":
             self.logDebug("Url recognized as Playlist")
diff --git a/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py
index dadc3c8b3..398cadce7 100644
--- a/module/plugins/crypter/Dereferer.py
+++ b/module/plugins/crypter/Dereferer.py
@@ -12,7 +12,7 @@ class Dereferer(Crypter):
     __type__    = "crypter"
     __version__ = "0.10"
 
-    __pattern__ = r'https?://([^/]+)/.*?(?P<url>(ht|f)tps?(://|%3A%2F%2F).*)'
+    __pattern__ = r'https?://([^/]+)/.*?(?P<URL>(ht|f)tps?(://|%3A%2F%2F).*)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
@@ -22,5 +22,5 @@ class Dereferer(Crypter):
 
 
     def decrypt(self, pyfile):
-        link = re.match(self.__pattern__, pyfile.url).group('url')
+        link = re.match(self.__pattern__, pyfile.url).group('URL')
         self.urls = [unquote(link).rstrip('+')]
diff --git a/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py
index 0f59e925e..a99ed0be9 100644
--- a/module/plugins/crypter/DlProtectCom.py
+++ b/module/plugins/crypter/DlProtectCom.py
@@ -30,7 +30,7 @@ class DlProtectCom(SimpleCrypter):
         if not re.match(r"http://(?:www\.)?dl-protect\.com", self.req.http.lastEffectiveURL):
             return [self.req.http.lastEffectiveURL]
 
-        #id = re.match(self.__pattern__, self.pyfile.url).group("ID")
+        #id = re.match(self.__pattern__, self.pyfile.url).group('ID')
         key = re.search(r'name="id_key" value="(.+?)"', self.html).group(1)
 
         post_req = {"id_key": key, "submitform": ""}
diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 22aba8afc..842310853 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -18,7 +18,7 @@ class LinkSaveIn(SimpleCrypter):
     __type__    = "crypter"
     __version__ = "2.02"
 
-    __pattern__ = r'http://(?:www\.)?linksave\.in/(?P<id>\w+)$'
+    __pattern__ = r'http://(?:www\.)?linksave\.in/(?P<ID>\w+)$'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
@@ -44,7 +44,7 @@ class LinkSaveIn(SimpleCrypter):
     def decrypt(self, pyfile):
         # Init
         self.package = pyfile.package()
-        self.fileid = re.match(self.__pattern__, pyfile.url).group('id')
+        self.fileid = re.match(self.__pattern__, pyfile.url).group('ID')
 
         # Request package
         self.html = self.load(pyfile.url)
diff --git a/module/plugins/crypter/LixIn.py b/module/plugins/crypter/LixIn.py
index 50ad217d4..d899d58c7 100644
--- a/module/plugins/crypter/LixIn.py
+++ b/module/plugins/crypter/LixIn.py
@@ -19,9 +19,9 @@ class LixIn(Crypter):
     __authors__     = [("spoob", "spoob@pyload.org")]
 
 
-    CAPTCHA_PATTERN = r'<img src="(?P<image>captcha_img\.php\?.*?)"'
+    CAPTCHA_PATTERN = r'<img src="(captcha_img\.php\?.*?)"'
     SUBMIT_PATTERN = r'value=\'continue.*?\''
-    LINK_PATTERN = r'name="ifram" src="(?P<link>.*?)"'
+    LINK_PATTERN = r'name="ifram" src="(.*?)"'
 
 
     def decrypt(self, pyfile):
@@ -31,7 +31,7 @@ class LixIn(Crypter):
         if m is None:
             self.error(_("Unable to identify file ID"))
 
-        id = m.group("ID")
+        id = m.group('ID')
         self.logDebug("File id is %s" % id)
 
         self.html = self.load(url, decode=True)
@@ -46,7 +46,7 @@ class LixIn(Crypter):
                 m = re.search(self.CAPTCHA_PATTERN, self.html)
                 if m:
                     self.logDebug("Trying captcha")
-                    captcharesult = self.decryptCaptcha("http://lix.in/" + m.group("image"))
+                    captcharesult = self.decryptCaptcha("http://lix.in/" + m.group(1))
                 self.html = self.load(url, decode=True,
                                           post={"capt": captcharesult, "submit": "submit", "tiny": id})
             else:
@@ -58,5 +58,5 @@ class LixIn(Crypter):
         if m is None:
             self.error(_("Unable to find destination url"))
         else:
-            self.urls = [m.group("link")]
+            self.urls = [m.group(1)]
             self.logDebug("Found link %s, adding to package" % self.urls[0])
diff --git a/module/plugins/crypter/MultiUpOrg.py b/module/plugins/crypter/MultiUpOrg.py
index ada8d0728..5209ebf09 100644
--- a/module/plugins/crypter/MultiUpOrg.py
+++ b/module/plugins/crypter/MultiUpOrg.py
@@ -24,7 +24,7 @@ class MultiUpOrg(SimpleCrypter):
 
 
     def getLinks(self):
-        m_type = re.match(self.__pattern__, self.pyfile.url).group("TYPE")
+        m_type = re.match(self.__pattern__, self.pyfile.url).group('TYPE')
 
         if m_type == "project":
             pattern = r'\n(http://www\.multiup\.org/(?:en|fr)/download/.*)'
diff --git a/module/plugins/crypter/NCryptIn.py b/module/plugins/crypter/NCryptIn.py
index 1d572e538..8b7214157 100644
--- a/module/plugins/crypter/NCryptIn.py
+++ b/module/plugins/crypter/NCryptIn.py
@@ -15,7 +15,7 @@ class NCryptIn(Crypter):
     __type__    = "crypter"
     __version__ = "1.33"
 
-    __pattern__ = r'http://(?:www\.)?ncrypt\.in/(?P<type>folder|link|frame)-([^/\?]+)'
+    __pattern__ = r'http://(?:www\.)?ncrypt\.in/(?P<TYPE>folder|link|frame)-([^/\?]+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
@@ -80,7 +80,7 @@ class NCryptIn(Crypter):
 
 
     def isSingleLink(self):
-        link_type = re.match(self.__pattern__, self.pyfile.url).group('type')
+        link_type = re.match(self.__pattern__, self.pyfile.url).group('TYPE')
         return link_type in ("link", "frame")
 
 
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index 94a73cded..5933839ec 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -16,7 +16,7 @@ class RelinkUs(Crypter):
     __type__    = "crypter"
     __version__ = "3.11"
 
-    __pattern__ = r'http://(?:www\.)?relink\.us/(f/|((view|go)\.php\?id=))(?P<id>.+)'
+    __pattern__ = r'http://(?:www\.)?relink\.us/(f/|((view|go)\.php\?id=))(?P<ID>.+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
@@ -50,9 +50,9 @@ class RelinkUs(Crypter):
     DLC_LINK_REGEX = r'<a href=".*?" class="dlc_button" target="_blank">'
     DLC_DOWNLOAD_URL = r'http://www.relink.us/download.php'
 
-    WEB_FORWARD_REGEX = r'getFile\(\'(?P<link>.+)\'\)'
+    WEB_FORWARD_REGEX = r'getFile\(\'(.+)\'\)'
     WEB_FORWARD_URL = r'http://www.relink.us/frame.php'
-    WEB_LINK_REGEX = r'<iframe name="Container" height="100%" frameborder="no" width="100%" src="(?P<link>.+)"></iframe>'
+    WEB_LINK_REGEX = r'<iframe name="Container" height="100%" frameborder="no" width="100%" src="(.+)"></iframe>'
 
 
     def setup(self):
@@ -100,7 +100,7 @@ class RelinkUs(Crypter):
 
 
     def initPackage(self, pyfile):
-        self.fileid = re.match(self.__pattern__, pyfile.url).group('id')
+        self.fileid = re.match(self.__pattern__, pyfile.url).group('ID')
         self.package = pyfile.package()
         self.password = self.getPassword()
 
@@ -241,7 +241,7 @@ class RelinkUs(Crypter):
                 self.logDebug("Decrypting Web link %d, %s" % (index + 1, url))
 
                 res  = self.load(url, decode=True)
-                link = re.search(self.WEB_LINK_REGEX, res).group('link')
+                link = re.search(self.WEB_LINK_REGEX, res).group(1)
 
                 package_links.append(link)
 
diff --git a/module/plugins/crypter/TurbobitNetFolder.py b/module/plugins/crypter/TurbobitNetFolder.py
index 64fcefac6..c6734c997 100644
--- a/module/plugins/crypter/TurbobitNetFolder.py
+++ b/module/plugins/crypter/TurbobitNetFolder.py
@@ -39,7 +39,7 @@ class TurbobitNetFolder(SimpleCrypter):
 
 
     def getLinks(self):
-        id = re.match(self.__pattern__, self.pyfile.url).group("ID")
+        id = re.match(self.__pattern__, self.pyfile.url).group('ID')
         fixurl = lambda id: "http://turbobit.net/%s.html" % id
         return map(fixurl, self._getLinks(id))
 
diff --git a/module/plugins/crypter/UploadedToFolder.py b/module/plugins/crypter/UploadedToFolder.py
index 3e77d73a9..0a71add70 100644
--- a/module/plugins/crypter/UploadedToFolder.py
+++ b/module/plugins/crypter/UploadedToFolder.py
@@ -12,7 +12,7 @@ class UploadedToFolder(SimpleCrypter):
     __type__    = "crypter"
     __version__ = "0.42"
 
-    __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P<id>\w+)'
+    __pattern__ = r'http://(?:www\.)?(uploaded|ul)\.(to|net)/(f|folder|list)/(?P<ID>\w+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
@@ -21,7 +21,7 @@ class UploadedToFolder(SimpleCrypter):
     __authors__     = [("stickell", "l.stickell@yahoo.it")]
 
 
-    PLAIN_PATTERN = r'<small class="date"><a href="(?P<plain>[\w/]+)" onclick='
+    PLAIN_PATTERN = r'<small class="date"><a href="([\w/]+)" onclick='
     NAME_PATTERN = r'<title>(?P<N>.+?)<'
 
 
@@ -30,7 +30,7 @@ class UploadedToFolder(SimpleCrypter):
         if m is None:
             self.error(_("PLAIN_PATTERN not found"))
 
-        plain_link = urljoin("http://uploaded.net/", m.group('plain'))
+        plain_link = urljoin("http://uploaded.net/", m.group(1))
         return self.load(plain_link).split('\n')[:-1]
 
 
diff --git a/module/plugins/crypter/YoutubeBatch.py b/module/plugins/crypter/YoutubeBatch.py
index c66f94753..73ebf5fb3 100644
--- a/module/plugins/crypter/YoutubeBatch.py
+++ b/module/plugins/crypter/YoutubeBatch.py
@@ -96,8 +96,8 @@ class YoutubeBatch(Crypter):
 
     def decrypt(self, pyfile):
         m = re.match(self.__pattern__, pyfile.url)
-        m_id = m.group("ID")
-        m_type = m.group("TYPE")
+        m_id = m.group('ID')
+        m_type = m.group('TYPE')
 
         if m_type == "user":
             self.logDebug("Url recognized as Channel")
-- 
cgit v1.2.3


From e1d4186c62512d8bb76d35b6f8d1828d8d0aa94e Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 23 Dec 2014 13:26:32 +0100
Subject: [SimpleHoster] Improve multi-hoster feature

---
 module/plugins/crypter/NetfolderIn.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/NetfolderIn.py b/module/plugins/crypter/NetfolderIn.py
index bfdf5cb82..62dc5c914 100644
--- a/module/plugins/crypter/NetfolderIn.py
+++ b/module/plugins/crypter/NetfolderIn.py
@@ -10,7 +10,7 @@ class NetfolderIn(SimpleCrypter):
     __type__    = "crypter"
     __version__ = "0.72"
 
-    __pattern__ = r'http://(?:www\.)?netfolder\.in/((?P<id1>\w+)/\w+|folder\.php\?folder_id=(?P<id2>\w+))'
+    __pattern__ = r'http://(?:www\.)?netfolder\.in/(folder\.php\?folder_id=)?(?P<ID>\w+)(?(1)|/\w+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
@@ -43,8 +43,8 @@ class NetfolderIn(SimpleCrypter):
     def submitPassword(self):
         # Gather data
         try:
-            m = re.match(self.__pattern__, self.pyfile.url)
-            id = max(m.group('id1'), m.group('id2'))
+            m  = re.match(self.__pattern__, self.pyfile.url)
+            id = m.group('ID')
         except AttributeError:
             self.logDebug("Unable to get package id from url [%s]" % self.pyfile.url)
             return
-- 
cgit v1.2.3


From 220747611a0aec0fbbc1cf106cc0549bd77fb6a3 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Tue, 23 Dec 2014 17:20:50 +0100
Subject: New plugin: CloudzillaToFolder

---
 module/plugins/crypter/CloudzillaToFolder.py | 43 ++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 module/plugins/crypter/CloudzillaToFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/CloudzillaToFolder.py b/module/plugins/crypter/CloudzillaToFolder.py
new file mode 100644
index 000000000..c156d4de4
--- /dev/null
+++ b/module/plugins/crypter/CloudzillaToFolder.py
@@ -0,0 +1,43 @@
+# -*- coding: utf-8 -*-
+
+import re
+
+from urlparse import urljoin
+
+from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
+
+
+class CloudzillaToFolder(SimpleHoster):
+    __name__    = "CloudzillaToFolder"
+    __type__    = "crypter"
+    __version__ = "0.01"
+
+    __pattern__ = r'http://(?:www\.)?cloudzilla\.to/share/folder/(?P<ID>[\w^_]+)'
+
+    __description__ = """Cloudzilla.to folder decrypter plugin"""
+    __license__     = "GPLv3"
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
+
+
+    INFO_PATTERN    = r'<span class="name" title="(?P<N>.+?)"'
+    OFFLINE_PATTERN = r'>File not found...<'
+
+    LINK_PATTERN = r'<a href="(.+?)" class="item_href">'
+
+    PASSWORD_PATTERN = r'<div id="pwd_protected">'
+
+
+    def checkErrors(self):
+        m = re.search(self.PASSWORD_PATTERN, self.html)
+        if m:
+            self.html = self.load(self.pyfile.url, get={'key': self.getPassword()})
+
+        if re.search(self.PASSWORD_PATTERN, self.html):
+            self.retry(reason="Wrong password")
+
+
+    def getLinks(self):
+        return [urljoin("http://www.cloudzilla.to", link) for link in super(CloudzillaToFolder, self).getLinks()]
+
+
+getInfo = create_getInfo(CloudzillaToFolder)
-- 
cgit v1.2.3


From ea93f9b02ba59b026a35299798b71727db44b0c5 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 27 Dec 2014 13:42:52 +0100
Subject: [Dereferer][DontKnowMe] Extend SimpleDereferer

---
 module/plugins/crypter/Dereferer.py  | 17 ++++-------------
 module/plugins/crypter/DontKnowMe.py | 22 +++++-----------------
 2 files changed, 9 insertions(+), 30 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py
index 398cadce7..0729c8cb6 100644
--- a/module/plugins/crypter/Dereferer.py
+++ b/module/plugins/crypter/Dereferer.py
@@ -1,26 +1,17 @@
 # -*- coding: utf-8 -*-
 
-import re
+from module.plugins.internal.SimpleDereferer import SimpleDereferer
 
-from urllib import unquote
 
-from module.plugins.Crypter import Crypter
-
-
-class Dereferer(Crypter):
+class Dereferer(SimpleDereferer):
     __name__    = "Dereferer"
     __type__    = "crypter"
-    __version__ = "0.10"
+    __version__ = "0.11"
 
-    __pattern__ = r'https?://([^/]+)/.*?(?P<URL>(ht|f)tps?(://|%3A%2F%2F).*)'
+    __pattern__ = r'https?://([^/]+)/.*?(?P<LINK>(ht|f)tps?(://|%3A%2F%2F).+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """Crypter for dereferers"""
     __license__     = "GPLv3"
     __authors__     = [("zoidberg", "zoidberg@mujmail.cz")]
-
-
-    def decrypt(self, pyfile):
-        link = re.match(self.__pattern__, pyfile.url).group('URL')
-        self.urls = [unquote(link).rstrip('+')]
diff --git a/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py
index 8d2a52c2c..d656cde4c 100644
--- a/module/plugins/crypter/DontKnowMe.py
+++ b/module/plugins/crypter/DontKnowMe.py
@@ -1,29 +1,17 @@
 # -*- coding: utf-8 -*-
 
-import re
+from module.plugins.internal.SimpleDereferer import SimpleDereferer
 
-from urllib import unquote
 
-from module.plugins.Crypter import Crypter
-
-
-class DontKnowMe(Crypter):
+class DontKnowMe(SimpleDereferer):
     __name__    = "DontKnowMe"
     __type__    = "crypter"
-    __version__ = "0.10"
+    __version__ = "0.11"
 
-    __pattern__ = r'http://(?:www\.)?dontknow\.me/at/\?.+$'
+    __pattern__ = r'http://(?:www\.)?dontknow\.me/at/\?(?P<LINK>.+)'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """DontKnow.me decrypter plugin"""
     __license__     = "GPLv3"
-    __authors__     = [("selaux", None)]
-
-
-    LINK_PATTERN = r'http://dontknow\.me/at/\?(.+)$'
-
-
-    def decrypt(self, pyfile):
-        link = re.findall(self.LINK_PATTERN, pyfile.url)[0]
-        self.urls = [unquote(link)]
+    __authors__     = [("selaux", "")]
-- 
cgit v1.2.3


From fff27d3f639c5260b234c054682559744f1a00be Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 27 Dec 2014 13:54:24 +0100
Subject: [LinkSaveIn] Update

---
 module/plugins/crypter/LinkSaveIn.py | 239 +----------------------------------
 1 file changed, 6 insertions(+), 233 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkSaveIn.py b/module/plugins/crypter/LinkSaveIn.py
index 842310853..e96d0438e 100644
--- a/module/plugins/crypter/LinkSaveIn.py
+++ b/module/plugins/crypter/LinkSaveIn.py
@@ -1,249 +1,22 @@
 # -*- coding: utf-8 -*-
-#
-# * cnl2 and web links are skipped if JS is not available (instead of failing the package)
-# * only best available link source is used (priority: cnl2>rsdf>ccf>dlc>web
 
-import base64
-import binascii
-import re
+from module.plugins.internal.SimpleDereferer import SimpleDereferer
 
-from Crypto.Cipher import AES
 
-from module.plugins.internal.SimpleCrypter import SimpleCrypter, create_getInfo
-from module.unescape import unescape
-
-
-class LinkSaveIn(SimpleCrypter):
+class LinkSaveIn(SimpleDereferer):
     __name__    = "LinkSaveIn"
     __type__    = "crypter"
-    __version__ = "2.02"
+    __version__ = "2.03"
 
-    __pattern__ = r'http://(?:www\.)?linksave\.in/(?P<ID>\w+)$'
+    __pattern__ = r'https?://(?:www\.)?linksave\.in/\w+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
     __description__ = """LinkSave.in decrypter plugin"""
     __license__     = "GPLv3"
-    __authors__     = [("fragonib", "fragonib[AT]yahoo[DOT]es")]
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
     COOKIES = [("linksave.in", "Linksave_Language", "english")]
 
-    # Constants
-    _JK_KEY_ = "jk"
-    _CRYPTED_KEY_ = "crypted"
-
-
-    def setup(self):
-        self.fileid = None
-        self.captcha = False
-        self.package = None
-        self.preferred_sources = ["cnl2", "rsdf", "ccf", "dlc", "web"]
-
-
-    def decrypt(self, pyfile):
-        # Init
-        self.package = pyfile.package()
-        self.fileid = re.match(self.__pattern__, pyfile.url).group('ID')
-
-        # Request package
-        self.html = self.load(pyfile.url)
-        if not self.isOnline():
-            self.offline()
-
-        # Check for protection
-        if self.isPasswordProtected():
-            self.unlockPasswordProtection()
-            self.handleErrors()
-
-        if self.isCaptchaProtected():
-            self.captcha = True
-            self.unlockCaptchaProtection()
-            self.handleErrors()
-
-        # Get package name and folder
-        (package_name, folder_name) = self.getPackageInfo()
-
-        # Extract package links
-        package_links = []
-        for type_ in self.preferred_sources:
-            package_links.extend(self.handleLinkSource(type_))
-            if package_links:  # use only first source which provides links
-                break
-        package_links = set(package_links)
-
-        # Pack
-        if package_links:
-            self.packages = [(package_name, package_links, folder_name)]
-
-
-    def isOnline(self):
-        if "<big>Error 404 - Folder not found!</big>" in self.html:
-            self.logDebug("File not found")
-            return False
-        return True
-
-
-    def isPasswordProtected(self):
-        if re.search(r'''<input.*?type="password"''', self.html):
-            self.logDebug("Links are password protected")
-            return True
-
-
-    def isCaptchaProtected(self):
-        if "<b>Captcha:</b>" in self.html:
-            self.logDebug("Links are captcha protected")
-            return True
-        return False
-
-
-    def unlockPasswordProtection(self):
-        password = self.getPassword()
-        self.logDebug("Submitting password [%s] for protected links" % password)
-        post = {"id": self.fileid, "besucherpasswort": password, 'login': 'submit'}
-        self.html = self.load(self.pyfile.url, post=post)
-
-
-    def unlockCaptchaProtection(self):
-        captcha_hash = re.search(r'name="hash" value="([^"]+)', self.html).group(1)
-        captcha_url = re.search(r'src=".(/captcha/cap.php\?hsh=[^"]+)', self.html).group(1)
-        captcha_code = self.decryptCaptcha("http://linksave.in" + captcha_url, forceUser=True)
-        self.html = self.load(self.pyfile.url, post={"id": self.fileid, "hash": captcha_hash, "code": captcha_code})
-
-
-    def getPackageInfo(self):
-        name = self.pyfile.package().name
-        folder = self.pyfile.package().folder
-        self.logDebug("Defaulting to pyfile name [%s] and folder [%s] for package" % (name, folder))
-        return name, folder
-
-
-    def handleErrors(self):
-        if "The visitorpassword you have entered is wrong" in self.html:
-            self.logDebug("Incorrect password, please set right password on 'Edit package' form and retry")
-            self.fail(_("Incorrect password, please set right password on 'Edit package' form and retry"))
-
-        if self.captcha:
-            if "Wrong code. Please retry" in self.html:
-                self.invalidCaptcha()
-                self.retry()
-            else:
-                self.correctCaptcha()
-
-
-    def handleLinkSource(self, type_):
-        if type_ == "cnl2":
-            return self.handleCNL2()
-        elif type_ in ("rsdf", "ccf", "dlc"):
-            return self.handleContainer(type_)
-        elif type_ == "web":
-            return self.handleWebLinks()
-        else:
-            self.error('Unknown source type "%s" (this is probably a bug)' % type_)
-
-
-    def handleWebLinks(self):
-        package_links = []
-        self.logDebug("Search for Web links")
-        if not self.js:
-            self.logDebug("No JS -> skip Web links")
-        else:
-        #@TODO: Gather paginated web links
-            pattern = r'<a href="http://linksave\.in/(\w{43})"'
-            ids = re.findall(pattern, self.html)
-            self.logDebug("Decrypting %d Web links" % len(ids))
-            for i, weblink_id in enumerate(ids):
-                try:
-                    webLink = "http://linksave.in/%s" % weblink_id
-
-                    self.logDebug("Decrypting Web link %d, %s" % (i + 1, webLink))
-
-                    fwLink = "http://linksave.in/fw-%s" % weblink_id
-                    res = self.load(fwLink)
-
-                    jscode = re.findall(r'<script type="text/javascript">(.*)</script>', res)[-1]
-                    jseval = self.js.eval("document = { write: function(e) { return e; } }; %s" % jscode)
-                    dlLink = re.search(r'http://linksave\.in/dl-\w+', jseval).group(0)
-                    self.logDebug("JsEngine returns value [%s] for redirection link" % dlLink)
-
-                    res = self.load(dlLink)
-                    link = unescape(re.search(r'<iframe src="(.+?)"', res).group(1))
-
-                    package_links.append(link)
-
-                except Exception, detail:
-                    self.logDebug("Error decrypting Web link %s, %s" % (webLink, detail))
-
-        return package_links
-
-
-    def handleContainer(self, type_):
-        package_links = []
-        type_ = type_.lower()
-        self.logDebug("Seach for %s Container links" % type_.upper())
-        if not type_.isalnum():  # check to prevent broken re-pattern (cnl2,rsdf,ccf,dlc,web are all alpha-numeric)
-            self.error('Unknown container type "%s" (this is probably a bug)' % type_)
-        pattern = r'\(\'%s_link\'\).href=unescape\(\'(.*?\.%s)\'\)' % (type_, type_)
-        containersLinks = re.findall(pattern, self.html)
-        self.logDebug("Found %d %s Container links" % (len(containersLinks), type_.upper()))
-        for containerLink in containersLinks:
-            link = "http://linksave.in/%s" % unescape(containerLink)
-            package_links.append(link)
-        return package_links
-
-
-    def handleCNL2(self):
-        package_links = []
-        self.logDebug("Search for CNL2 links")
-        if not self.js:
-            self.logDebug("No JS -> skip CNL2 links")
-        elif 'cnl2_load' in self.html:
-            try:
-                (vcrypted, vjk) = self._getCipherParams()
-                for (crypted, jk) in zip(vcrypted, vjk):
-                    package_links.extend(self._getLinks(crypted, jk))
-            except:
-                self.fail(_("Unable to decrypt CNL2 links"))
-        return package_links
-
-
-    def _getCipherParams(self):
-        # Get jk
-        jk_re = r'<INPUT.*?NAME="%s".*?VALUE="(.*?)"' % LinkSaveIn._JK_KEY_
-        vjk = re.findall(jk_re, self.html)
-
-        # Get crypted
-        crypted_re = r'<INPUT.*?NAME="%s".*?VALUE="(.*?)"' % LinkSaveIn._CRYPTED_KEY_
-        vcrypted = re.findall(crypted_re, self.html)
-
-        # Log and return
-        self.logDebug("Detected %d crypted blocks" % len(vcrypted))
-        return vcrypted, vjk
-
-
-    def _getLinks(self, crypted, jk):
-        # Get key
-        jreturn = self.js.eval("%s f()" % jk)
-        self.logDebug("JsEngine returns value [%s]" % jreturn)
-        key = binascii.unhexlify(jreturn)
-
-        # Decode crypted
-        crypted = base64.standard_b64decode(crypted)
-
-        # Decrypt
-        Key = key
-        IV = key
-        obj = AES.new(Key, AES.MODE_CBC, IV)
-        text = obj.decrypt(crypted)
-
-        # Extract links
-        text = text.replace("\x00", "").replace("\r", "")
-        links = text.split("\n")
-        links = filter(lambda x: x != "", links)
-
-        # Log and return
-        self.logDebug("Package has %d links" % len(links))
-        return links
-
-
-getInfo = create_getInfo(LinkSaveIn)
+    OFFLINE_PATTERN = r'>(Error )?404 -'
-- 
cgit v1.2.3


From 717faa6d2f2a0017b81516a9d01656487f03be28 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 27 Dec 2014 13:56:01 +0100
Subject: More plugin __pattern__ improved (crypter ones this time)

---
 module/plugins/crypter/C1neonCom.py          | 2 +-
 module/plugins/crypter/ChipDe.py             | 2 +-
 module/plugins/crypter/CrockoComFolder.py    | 2 +-
 module/plugins/crypter/CzshareComFolder.py   | 2 +-
 module/plugins/crypter/EmbeduploadCom.py     | 2 +-
 module/plugins/crypter/FilebeerInfoFolder.py | 2 +-
 module/plugins/crypter/FshareVnFolder.py     | 2 +-
 module/plugins/crypter/LofCc.py              | 2 +-
 module/plugins/crypter/Movie2kTo.py          | 2 +-
 module/plugins/crypter/MultiloadCz.py        | 2 +-
 module/plugins/crypter/QuickshareCzFolder.py | 2 +-
 module/plugins/crypter/TrailerzoneInfo.py    | 2 +-
 module/plugins/crypter/UlozToFolder.py       | 2 +-
 module/plugins/crypter/XupPl.py              | 2 +-
 14 files changed, 14 insertions(+), 14 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/C1neonCom.py b/module/plugins/crypter/C1neonCom.py
index cf1d2a211..bc58fbf1c 100644
--- a/module/plugins/crypter/C1neonCom.py
+++ b/module/plugins/crypter/C1neonCom.py
@@ -8,7 +8,7 @@ class C1neonCom(DeadCrypter):
     __type__    = "crypter"
     __version__ = "0.05"
 
-    __pattern__ = r'http://(?:www\.)?c1neon\.com/.*?'
+    __pattern__ = r'http://(?:www\.)?c1neon\.com/.+'
     __config__  = []
 
     __description__ = """C1neon.com decrypter plugin"""
diff --git a/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py
index b342cd1bf..133e5a005 100644
--- a/module/plugins/crypter/ChipDe.py
+++ b/module/plugins/crypter/ChipDe.py
@@ -9,7 +9,7 @@ class ChipDe(Crypter):
     __type__    = "crypter"
     __version__ = "0.10"
 
-    __pattern__ = r'http://(?:www\.)?chip\.de/video/.*\.html'
+    __pattern__ = r'http://(?:www\.)?chip\.de/video/.+\.html'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
diff --git a/module/plugins/crypter/CrockoComFolder.py b/module/plugins/crypter/CrockoComFolder.py
index bf91b0afc..57bb339ff 100644
--- a/module/plugins/crypter/CrockoComFolder.py
+++ b/module/plugins/crypter/CrockoComFolder.py
@@ -8,7 +8,7 @@ class CrockoComFolder(SimpleCrypter):
     __type__    = "crypter"
     __version__ = "0.01"
 
-    __pattern__ = r'http://(?:www\.)?crocko\.com/f/.*'
+    __pattern__ = r'http://(?:www\.)?crocko\.com/f/.+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
diff --git a/module/plugins/crypter/CzshareComFolder.py b/module/plugins/crypter/CzshareComFolder.py
index 67376c6e6..5623a4093 100644
--- a/module/plugins/crypter/CzshareComFolder.py
+++ b/module/plugins/crypter/CzshareComFolder.py
@@ -9,7 +9,7 @@ class CzshareComFolder(Crypter):
     __type__    = "crypter"
     __version__ = "0.20"
 
-    __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/folders/.*'
+    __pattern__ = r'http://(?:www\.)?(czshare|sdilej)\.(com|cz)/folders/.+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
diff --git a/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py
index 1c372c1ca..be3181793 100644
--- a/module/plugins/crypter/EmbeduploadCom.py
+++ b/module/plugins/crypter/EmbeduploadCom.py
@@ -10,7 +10,7 @@ class EmbeduploadCom(Crypter):
     __type__    = "crypter"
     __version__ = "0.02"
 
-    __pattern__ = r'http://(?:www\.)?embedupload\.com/\?d=.*'
+    __pattern__ = r'http://(?:www\.)?embedupload\.com/\?d=.+'
     __config__ = [("use_subfolder", "bool", "Save package to subfolder", True),
                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True),
                   ("preferedHoster", "str", "Prefered hoster list (bar-separated)", "embedupload"),
diff --git a/module/plugins/crypter/FilebeerInfoFolder.py b/module/plugins/crypter/FilebeerInfoFolder.py
index d0f3547bc..a3c7ee74c 100644
--- a/module/plugins/crypter/FilebeerInfoFolder.py
+++ b/module/plugins/crypter/FilebeerInfoFolder.py
@@ -8,7 +8,7 @@ class FilebeerInfoFolder(DeadCrypter):
     __type__    = "crypter"
     __version__ = "0.02"
 
-    __pattern__ = r'http://(?:www\.)?filebeer\.info/(\d+~f).*'
+    __pattern__ = r'http://(?:www\.)?filebeer\.info/\d*~f\w+'
     __config__  = []
 
     __description__ = """Filebeer.info folder decrypter plugin"""
diff --git a/module/plugins/crypter/FshareVnFolder.py b/module/plugins/crypter/FshareVnFolder.py
index d31a5c6a0..474364e40 100644
--- a/module/plugins/crypter/FshareVnFolder.py
+++ b/module/plugins/crypter/FshareVnFolder.py
@@ -8,7 +8,7 @@ class FshareVnFolder(SimpleCrypter):
     __type__    = "crypter"
     __version__ = "0.01"
 
-    __pattern__ = r'http://(?:www\.)?fshare\.vn/folder/.*'
+    __pattern__ = r'http://(?:www\.)?fshare\.vn/folder/.+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
diff --git a/module/plugins/crypter/LofCc.py b/module/plugins/crypter/LofCc.py
index 65c9b18bd..3cac0fbf2 100644
--- a/module/plugins/crypter/LofCc.py
+++ b/module/plugins/crypter/LofCc.py
@@ -8,7 +8,7 @@ class LofCc(DeadCrypter):
     __type__    = "crypter"
     __version__ = "0.21"
 
-    __pattern__ = r'http://(?:www\.)?lof\.cc/(.*)'
+    __pattern__ = r'http://(?:www\.)?lof\.cc/(.+)'
     __config__  = []
 
     __description__ = """Lof.cc decrypter plugin"""
diff --git a/module/plugins/crypter/Movie2kTo.py b/module/plugins/crypter/Movie2kTo.py
index 0be7eb7eb..7d71950fd 100644
--- a/module/plugins/crypter/Movie2kTo.py
+++ b/module/plugins/crypter/Movie2kTo.py
@@ -8,7 +8,7 @@ class Movie2kTo(DeadCrypter):
     __type__    = "crypter"
     __version__ = "0.51"
 
-    __pattern__ = r'http://(?:www\.)?movie2k\.to/(.*)\.html'
+    __pattern__ = r'http://(?:www\.)?movie2k\.to/(.+)\.html'
     __config__  = []
 
     __description__ = """Movie2k.to decrypter plugin"""
diff --git a/module/plugins/crypter/MultiloadCz.py b/module/plugins/crypter/MultiloadCz.py
index b096f63ef..fa1eb02d7 100644
--- a/module/plugins/crypter/MultiloadCz.py
+++ b/module/plugins/crypter/MultiloadCz.py
@@ -9,7 +9,7 @@ class MultiloadCz(Crypter):
     __type__    = "crypter"
     __version__ = "0.40"
 
-    __pattern__ = r'http://(?:[^/]*\.)?multiload\.cz/(stahnout|slozka)/.*'
+    __pattern__ = r'http://(?:[^/]*\.)?multiload\.cz/(stahnout|slozka)/.+'
     __config__ = [("use_subfolder", "bool", "Save package to subfolder", True),
                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True),
                   ("usedHoster", "str", "Prefered hoster list (bar-separated)", ""),
diff --git a/module/plugins/crypter/QuickshareCzFolder.py b/module/plugins/crypter/QuickshareCzFolder.py
index f84f43fa4..70666b55a 100644
--- a/module/plugins/crypter/QuickshareCzFolder.py
+++ b/module/plugins/crypter/QuickshareCzFolder.py
@@ -9,7 +9,7 @@ class QuickshareCzFolder(Crypter):
     __type__    = "crypter"
     __version__ = "0.10"
 
-    __pattern__ = r'http://(?:www\.)?quickshare\.cz/slozka-\d+.*'
+    __pattern__ = r'http://(?:www\.)?quickshare\.cz/slozka-\d+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
diff --git a/module/plugins/crypter/TrailerzoneInfo.py b/module/plugins/crypter/TrailerzoneInfo.py
index abdb2307e..10780dd45 100644
--- a/module/plugins/crypter/TrailerzoneInfo.py
+++ b/module/plugins/crypter/TrailerzoneInfo.py
@@ -8,7 +8,7 @@ class TrailerzoneInfo(DeadCrypter):
     __type__    = "crypter"
     __version__ = "0.03"
 
-    __pattern__ = r'http://(?:www\.)?trailerzone\.info/.*?'
+    __pattern__ = r'http://(?:www\.)?trailerzone\.info/.+'
     __config__  = []
 
     __description__ = """TrailerZone.info decrypter plugin"""
diff --git a/module/plugins/crypter/UlozToFolder.py b/module/plugins/crypter/UlozToFolder.py
index cfb756413..a1f3ed5ea 100644
--- a/module/plugins/crypter/UlozToFolder.py
+++ b/module/plugins/crypter/UlozToFolder.py
@@ -9,7 +9,7 @@ class UlozToFolder(Crypter):
     __type__    = "crypter"
     __version__ = "0.20"
 
-    __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj\.cz|zachowajto\.pl)/(m|soubory)/.*'
+    __pattern__ = r'http://(?:www\.)?(uloz\.to|ulozto\.(cz|sk|net)|bagruj\.cz|zachowajto\.pl)/(m|soubory)/.+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
diff --git a/module/plugins/crypter/XupPl.py b/module/plugins/crypter/XupPl.py
index 25b80860c..f2ecbee5a 100644
--- a/module/plugins/crypter/XupPl.py
+++ b/module/plugins/crypter/XupPl.py
@@ -8,7 +8,7 @@ class XupPl(Crypter):
     __type__    = "crypter"
     __version__ = "0.10"
 
-    __pattern__ = r'https?://(?:[^/]*\.)?xup\.pl/.*'
+    __pattern__ = r'https?://(?:[^/]*\.)?xup\.pl/.+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
-- 
cgit v1.2.3


From 14969d23d20180733a07117a661fedd487bd6ac3 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 27 Dec 2014 15:23:49 +0100
Subject: New plugin: MegaCoNzFolder

---
 module/plugins/crypter/MegaCoNzFolder.py | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
 create mode 100644 module/plugins/crypter/MegaCoNzFolder.py

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/MegaCoNzFolder.py b/module/plugins/crypter/MegaCoNzFolder.py
new file mode 100644
index 000000000..7c6a5cdb6
--- /dev/null
+++ b/module/plugins/crypter/MegaCoNzFolder.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+
+from module.plugins.internal.Crypter import Crypter
+
+
+class MegaCoNzFolder(Crypter):
+    __name__    = "MegaCoNzFolder"
+    __type__    = "crypter"
+    __version__ = "0.01"
+
+    __pattern__ = r'https?://(?:www\.)?mega\.co\.nz/#F![\w+^_]![\w,\\-]+'
+    __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
+                   ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
+
+    __description__ = """Mega.co.nz folder decrypter plugin"""
+    __license__     = "GPLv3"
+    __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
+
+
+    def decrypt(self, pyfile):
+        self.html = self.load("http://rapidgen.org/linkfinder", post={'linklisturl': self.pyfile.url})
+        self.urls = re.findall(r'(https://mega.co.nz/#N!.+?)<', self.html)
+
+        if not self.urls:  #@TODO: Remove in 0.4.10
+            self.fail("No link grabbed")
-- 
cgit v1.2.3


From c0a7430ef5218da41787de001de04d3ded89d8b5 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 27 Dec 2014 21:21:47 +0100
Subject: [LinkdecrypterCom] Extend MultiHook

---
 module/plugins/crypter/LinkdecrypterCom.py | 35 ++++++++++++++++--------------
 1 file changed, 19 insertions(+), 16 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkdecrypterCom.py b/module/plugins/crypter/LinkdecrypterCom.py
index 91318eadf..7eb5d3096 100644
--- a/module/plugins/crypter/LinkdecrypterCom.py
+++ b/module/plugins/crypter/LinkdecrypterCom.py
@@ -7,13 +7,13 @@ from module.plugins.Crypter import Crypter
 class LinkdecrypterCom(Crypter):
     __name__    = "LinkdecrypterCom"
     __type__    = "crypter"
-    __version__ = "0.27"
+    __version__ = "0.28"
 
     __pattern__ = r'^unmatchable$'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
                    ("subfolder_per_package", "bool", "Create a subfolder for each package", True)]
 
-    __description__ = """Linkdecrypter.com"""
+    __description__ = """Linkdecrypter.com decrypter plugin"""
     __license__     = "GPLv3"
     __authors__     = [("zoidberg", "zoidberg@mujmail.cz"),
                        ("flowlee", None)]
@@ -21,13 +21,16 @@ class LinkdecrypterCom(Crypter):
 
     TEXTAREA_PATTERN = r'<textarea name="links" wrap="off" readonly="1" class="caja_des">(.+)</textarea>'
     PASSWORD_PATTERN = r'<input type="text" name="password"'
-    CAPTCHA_PATTERN = r'<img class="captcha" src="(.+?)"(.*?)>'
-    REDIR_PATTERN = r'<i>(Click <a href="./">here</a> if your browser does not redirect you).</i>'
+    CAPTCHA_PATTERN  = r'<img class="captcha" src="(.+?)"(.*?)>'
+    REDIR_PATTERN    = r'<i>(Click <a href="./">here</a> if your browser does not redirect you).</i>'
 
 
-    def decrypt(self, pyfile):
-        self.passwords = self.getPassword().splitlines()
+    def setup(self):
+        self.password = self.getPassword()
+        self.req.setOption("timeout", 300)
+
 
+    def decrypt(self, pyfile):
         # API not working anymore
         self.urls = self.decryptHTML()
 
@@ -39,10 +42,11 @@ class LinkdecrypterCom(Crypter):
             return self.html.splitlines()
 
         if self.html == 'INTERRUPTION(PASSWORD)':
-            for get_dict['pass'] in self.passwords:
-                self.html = self.load('http://linkdecrypter.com/api', get=get_dict)
-                if self.html.startswith('http://'):
-                    return self.html.splitlines()
+            get_dict['pass'] = self.password
+
+            self.html = self.load('http://linkdecrypter.com/api', get=get_dict)
+            if self.html.startswith('http://'):
+                return self.html.splitlines()
 
         self.logError("API", self.html)
         if self.html == 'INTERRUPTION(PASSWORD)':
@@ -57,7 +61,7 @@ class LinkdecrypterCom(Crypter):
         post_dict = {"link_cache": "on", "pro_links": self.pyfile.url, "modo_links": "text"}
         self.html = self.load('http://linkdecrypter.com/', post=post_dict, cookies=True, decode=True)
 
-        while self.passwords or retries:
+        while retries:
             m = re.search(self.TEXTAREA_PATTERN, self.html, flags=re.S)
             if m:
                 return [x for x in m.group(1).splitlines() if '[LINK-ERROR]' not in x]
@@ -78,12 +82,11 @@ class LinkdecrypterCom(Crypter):
                 retries -= 1
 
             elif self.PASSWORD_PATTERN in self.html:
-                if self.passwords:
-                    password = self.passwords.pop(0)
-                    self.logInfo(_("Password protected link, trying ") + password)
-                    self.html = self.load('http://linkdecrypter.com/', post={'password': password}, decode=True)
+                if self.password:
+                    self.logInfo(_("Password protected link"))
+                    self.html = self.load('http://linkdecrypter.com/', post={'password': self.password}, decode=True)
                 else:
-                    self.fail(_("No or incorrect password"))
+                    self.fail(_("Missing password"))
 
             else:
                 retries -= 1
-- 
cgit v1.2.3


From e437fc0ba03537c8ea0e58139be731c16505b8ac Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 27 Dec 2014 21:25:20 +0100
Subject: [FilecryptCc] ReCaptcha 2.0 support

---
 module/plugins/crypter/FilecryptCc.py | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/FilecryptCc.py b/module/plugins/crypter/FilecryptCc.py
index 087f377ff..59960ab24 100644
--- a/module/plugins/crypter/FilecryptCc.py
+++ b/module/plugins/crypter/FilecryptCc.py
@@ -8,12 +8,13 @@ from Crypto.Cipher import AES
 from urlparse import urljoin
 
 from module.plugins.Crypter import Crypter
+from module.plugins.internal.CaptchaService import ReCaptcha
 
 
 class FilecryptCc(Crypter):
     __name__    = "FilecryptCc"
     __type__    = "crypter"
-    __version__ = "0.07"
+    __version__ = "0.08"
 
     __pattern__ = r'https?://(?:www\.)?filecrypt\.cc/Container/\w+'
 
@@ -79,7 +80,7 @@ class FilecryptCc(Crypter):
 
 
     def handleCaptcha(self):
-        m = re.search(self.CAPTCHA_PATTERN, self.html)
+        m  = re.search(self.CAPTCHA_PATTERN, self.html)
         m2 = re.search(self.CIRCLE_CAPTCHA_PATTERN, self.html)
 
         if m:  #: normal captcha
@@ -106,8 +107,17 @@ class FilecryptCc(Crypter):
                                            cookies=True,
                                            decode=True)
         else:
-            self.logDebug("No captcha found")
-            self.siteWithLinks = self.html
+            recaptcha   = ReCaptcha(self)
+            captcha_key = recaptcha.detect_key()
+
+            if captcha_key:
+                self.siteWithLinks = self.load(self.pyfile.url,
+                                               post={'g-recaptcha-response': recaptcha.challenge(captcha_key, True)},
+                                               cookies=True,
+                                               decode=True)
+            else:
+                self.logDebug("No captcha found")
+                self.siteWithLinks = self.html
 
         if "recaptcha_image" in self.siteWithLinks:
             self.invalidCaptcha()
-- 
cgit v1.2.3


From bf1a74a22dcc3a31a60367eab24e56e1fafe987a Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sat, 27 Dec 2014 21:27:49 +0100
Subject: [MegaCoNzFolder] Increase loading timeout

---
 module/plugins/crypter/MegaCoNzFolder.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/MegaCoNzFolder.py b/module/plugins/crypter/MegaCoNzFolder.py
index 7c6a5cdb6..caa2ab563 100644
--- a/module/plugins/crypter/MegaCoNzFolder.py
+++ b/module/plugins/crypter/MegaCoNzFolder.py
@@ -6,7 +6,7 @@ from module.plugins.internal.Crypter import Crypter
 class MegaCoNzFolder(Crypter):
     __name__    = "MegaCoNzFolder"
     __type__    = "crypter"
-    __version__ = "0.01"
+    __version__ = "0.02"
 
     __pattern__ = r'https?://(?:www\.)?mega\.co\.nz/#F![\w+^_]![\w,\\-]+'
     __config__  = [("use_subfolder", "bool", "Save package to subfolder", True),
@@ -17,6 +17,10 @@ class MegaCoNzFolder(Crypter):
     __authors__     = [("Walter Purcaro", "vuolter@gmail.com")]
 
 
+    def setup(self):
+        self.req.setOption("timeout", 300)
+
+
     def decrypt(self, pyfile):
         self.html = self.load("http://rapidgen.org/linkfinder", post={'linklisturl': self.pyfile.url})
         self.urls = re.findall(r'(https://mega.co.nz/#N!.+?)<', self.html)
-- 
cgit v1.2.3


From 30c5ee2d8d69c59ca15ca1700b34be73a89a59ee Mon Sep 17 00:00:00 2001
From: Gummibaer <guthub@wiki-bierkiste.de>
Date: Sat, 27 Dec 2014 23:32:31 +0100
Subject: Update LinkCryptWs.py

key captcha recognition improved (works faster)
---
 module/plugins/crypter/LinkCryptWs.py | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkCryptWs.py b/module/plugins/crypter/LinkCryptWs.py
index 835a549b2..a2afce4dc 100644
--- a/module/plugins/crypter/LinkCryptWs.py
+++ b/module/plugins/crypter/LinkCryptWs.py
@@ -15,7 +15,7 @@ from module.utils import html_unescape
 class LinkCryptWs(Crypter):
     __name__    = "LinkCryptWs"
     __type__    = "crypter"
-    __version__ = "0.07"
+    __version__ = "0.08"
 
     __pattern__ = r'http://(?:www\.)?linkcrypt\.ws/(dir|container)/(?P<ID>\w+)'
 
@@ -57,7 +57,7 @@ class LinkCryptWs(Crypter):
             self.offline()
 
         if self.isKeyCaptchaProtected():
-            self.retry(4, 30, _("Can't handle Key-Captcha"))
+            self.retry(8, 15, _("Can't handle Key-Captcha"))
 
         if self.isCaptchaProtected():
             self.captcha = True
@@ -115,10 +115,9 @@ class LinkCryptWs(Crypter):
 
 
     def isKeyCaptchaProtected(self):
-        if re.search(r'Key[ -]', self.html, re.I):
+        if(re.search(r'<br />If the folder does not open after klick on <b>Enter Folder</ b>', self.html, re.I)):
             return True
-        else:
-            return False
+        return False
 
 
     def unlockPasswordProtection(self):
-- 
cgit v1.2.3


From b8ad0c72e6b7b309806be3ea55111b42f733dc9b Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 28 Dec 2014 01:38:03 +0100
Subject: [LinkCryptWs] Tiny code cosmetic

---
 module/plugins/crypter/LinkCryptWs.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'module/plugins/crypter')

diff --git a/module/plugins/crypter/LinkCryptWs.py b/module/plugins/crypter/LinkCryptWs.py
index a2afce4dc..996a92c7b 100644
--- a/module/plugins/crypter/LinkCryptWs.py
+++ b/module/plugins/crypter/LinkCryptWs.py
@@ -115,9 +115,10 @@ class LinkCryptWs(Crypter):
 
 
     def isKeyCaptchaProtected(self):
-        if(re.search(r'<br />If the folder does not open after klick on <b>Enter Folder</ b>', self.html, re.I)):
+        if re.search(r'>If the folder does not open after klick on <', self.html, re.I):
             return True
-        return False
+        else:
+            return False
 
 
     def unlockPasswordProtection(self):
-- 
cgit v1.2.3