From acc46fc3497a66a427b795b4a22c6e71d69185a1 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 13 Dec 2014 15:56:57 +0100 Subject: Update --- pyload/plugin/crypter/BitshareCom.py | 21 ++ pyload/plugin/crypter/C1neonCom.py | 19 ++ pyload/plugin/crypter/ChipDe.py | 29 +++ pyload/plugin/crypter/CrockoCom.py | 20 ++ pyload/plugin/crypter/CryptItCom.py | 19 ++ pyload/plugin/crypter/CzshareCom.py | 32 +++ pyload/plugin/crypter/DDLMusicOrg.py | 51 +++++ pyload/plugin/crypter/DailymotionBatch.py | 106 ++++++++++ pyload/plugin/crypter/DataHu.py | 40 ++++ pyload/plugin/crypter/DdlstorageCom.py | 20 ++ pyload/plugin/crypter/DepositfilesCom.py | 20 ++ pyload/plugin/crypter/Dereferer.py | 26 +++ pyload/plugin/crypter/DevhostStFolder.py | 58 +++++ pyload/plugin/crypter/DlProtectCom.py | 65 ++++++ pyload/plugin/crypter/DontKnowMe.py | 29 +++ pyload/plugin/crypter/DuckCryptInfo.py | 59 ++++++ pyload/plugin/crypter/DuploadOrg.py | 19 ++ pyload/plugin/crypter/EasybytezCom.py | 22 ++ pyload/plugin/crypter/EmbeduploadCom.py | 60 ++++++ pyload/plugin/crypter/FilebeerInfo.py | 19 ++ pyload/plugin/crypter/FilecloudIo.py | 21 ++ pyload/plugin/crypter/FilecryptCc.py | 148 +++++++++++++ pyload/plugin/crypter/FilefactoryCom.py | 28 +++ pyload/plugin/crypter/FilerNet.py | 26 +++ pyload/plugin/crypter/FileserveCom.py | 38 ++++ pyload/plugin/crypter/FilesonicCom.py | 18 ++ pyload/plugin/crypter/FilestubeCom.py | 21 ++ pyload/plugin/crypter/FiletramCom.py | 22 ++ pyload/plugin/crypter/FiredriveCom.py | 19 ++ pyload/plugin/crypter/FourChanOrg.py | 27 +++ pyload/plugin/crypter/FreakhareCom.py | 38 ++++ pyload/plugin/crypter/FreetexthostCom.py | 27 +++ pyload/plugin/crypter/FshareVn.py | 20 ++ pyload/plugin/crypter/Go4UpCom.py | 49 +++++ pyload/plugin/crypter/GooGl.py | 32 +++ pyload/plugin/crypter/HoerbuchIn.py | 62 ++++++ pyload/plugin/crypter/HotfileCom.py | 19 ++ pyload/plugin/crypter/ILoadTo.py | 19 ++ pyload/plugin/crypter/ImgurComAlbum.py | 27 +++ pyload/plugin/crypter/JunocloudMe.py | 20 ++ pyload/plugin/crypter/LetitbitNet.py | 33 +++ pyload/plugin/crypter/LinkCryptWs.py | 327 +++++++++++++++++++++++++++++ pyload/plugin/crypter/LinkSaveIn.py | 246 ++++++++++++++++++++++ pyload/plugin/crypter/LinkdecrypterCom.py | 92 ++++++++ pyload/plugin/crypter/LixIn.py | 62 ++++++ pyload/plugin/crypter/LofCc.py | 19 ++ pyload/plugin/crypter/MBLinkInfo.py | 20 ++ pyload/plugin/crypter/MediafireCom.py | 58 +++++ pyload/plugin/crypter/MegaRapidCz.py | 20 ++ pyload/plugin/crypter/MegauploadCom.py | 18 ++ pyload/plugin/crypter/Movie2kTo.py | 19 ++ pyload/plugin/crypter/MultiUpOrg.py | 38 ++++ pyload/plugin/crypter/MultiloadCz.py | 42 ++++ pyload/plugin/crypter/MultiuploadCom.py | 18 ++ pyload/plugin/crypter/NCryptIn.py | 315 +++++++++++++++++++++++++++ pyload/plugin/crypter/NetfolderIn.py | 70 ++++++ pyload/plugin/crypter/NosvideoCom.py | 21 ++ pyload/plugin/crypter/OneKhDe.py | 40 ++++ pyload/plugin/crypter/OronCom.py | 19 ++ pyload/plugin/crypter/PastebinCom.py | 21 ++ pyload/plugin/crypter/QuickshareCz.py | 31 +++ pyload/plugin/crypter/RSLayerCom.py | 19 ++ pyload/plugin/crypter/RapidfileshareNet.py | 20 ++ pyload/plugin/crypter/RelinkUs.py | 293 ++++++++++++++++++++++++++ pyload/plugin/crypter/SafelinkingNet.py | 79 +++++++ pyload/plugin/crypter/SecuredIn.py | 19 ++ pyload/plugin/crypter/SexuriaCom.py | 94 +++++++++ pyload/plugin/crypter/ShareLinksBiz.py | 286 +++++++++++++++++++++++++ pyload/plugin/crypter/SharingmatrixCom.py | 18 ++ pyload/plugin/crypter/SpeedLoadOrg.py | 19 ++ pyload/plugin/crypter/StealthTo.py | 19 ++ pyload/plugin/crypter/TnyCz.py | 27 +++ pyload/plugin/crypter/TrailerzoneInfo.py | 19 ++ pyload/plugin/crypter/TurbobitNet.py | 44 ++++ pyload/plugin/crypter/TusfilesNet.py | 45 ++++ pyload/plugin/crypter/UlozTo.py | 46 ++++ pyload/plugin/crypter/UploadableCh.py | 24 +++ pyload/plugin/crypter/UploadedTo.py | 34 +++ pyload/plugin/crypter/WiiReloadedOrg.py | 19 ++ pyload/plugin/crypter/WuploadCom.py | 18 ++ pyload/plugin/crypter/XFileSharingPro.py | 47 +++++ pyload/plugin/crypter/XupPl.py | 25 +++ pyload/plugin/crypter/YoutubeBatch.py | 148 +++++++++++++ pyload/plugin/crypter/__init__.py | 1 + 84 files changed, 4307 insertions(+) create mode 100644 pyload/plugin/crypter/BitshareCom.py create mode 100644 pyload/plugin/crypter/C1neonCom.py create mode 100644 pyload/plugin/crypter/ChipDe.py create mode 100644 pyload/plugin/crypter/CrockoCom.py create mode 100644 pyload/plugin/crypter/CryptItCom.py create mode 100644 pyload/plugin/crypter/CzshareCom.py create mode 100644 pyload/plugin/crypter/DDLMusicOrg.py create mode 100644 pyload/plugin/crypter/DailymotionBatch.py create mode 100644 pyload/plugin/crypter/DataHu.py create mode 100644 pyload/plugin/crypter/DdlstorageCom.py create mode 100644 pyload/plugin/crypter/DepositfilesCom.py create mode 100644 pyload/plugin/crypter/Dereferer.py create mode 100644 pyload/plugin/crypter/DevhostStFolder.py create mode 100644 pyload/plugin/crypter/DlProtectCom.py create mode 100644 pyload/plugin/crypter/DontKnowMe.py create mode 100644 pyload/plugin/crypter/DuckCryptInfo.py create mode 100644 pyload/plugin/crypter/DuploadOrg.py create mode 100644 pyload/plugin/crypter/EasybytezCom.py create mode 100644 pyload/plugin/crypter/EmbeduploadCom.py create mode 100644 pyload/plugin/crypter/FilebeerInfo.py create mode 100644 pyload/plugin/crypter/FilecloudIo.py create mode 100644 pyload/plugin/crypter/FilecryptCc.py create mode 100644 pyload/plugin/crypter/FilefactoryCom.py create mode 100644 pyload/plugin/crypter/FilerNet.py create mode 100644 pyload/plugin/crypter/FileserveCom.py create mode 100644 pyload/plugin/crypter/FilesonicCom.py create mode 100644 pyload/plugin/crypter/FilestubeCom.py create mode 100644 pyload/plugin/crypter/FiletramCom.py create mode 100644 pyload/plugin/crypter/FiredriveCom.py create mode 100644 pyload/plugin/crypter/FourChanOrg.py create mode 100644 pyload/plugin/crypter/FreakhareCom.py create mode 100644 pyload/plugin/crypter/FreetexthostCom.py create mode 100644 pyload/plugin/crypter/FshareVn.py create mode 100644 pyload/plugin/crypter/Go4UpCom.py create mode 100644 pyload/plugin/crypter/GooGl.py create mode 100644 pyload/plugin/crypter/HoerbuchIn.py create mode 100644 pyload/plugin/crypter/HotfileCom.py create mode 100644 pyload/plugin/crypter/ILoadTo.py create mode 100644 pyload/plugin/crypter/ImgurComAlbum.py create mode 100644 pyload/plugin/crypter/JunocloudMe.py create mode 100644 pyload/plugin/crypter/LetitbitNet.py create mode 100644 pyload/plugin/crypter/LinkCryptWs.py create mode 100644 pyload/plugin/crypter/LinkSaveIn.py create mode 100644 pyload/plugin/crypter/LinkdecrypterCom.py create mode 100644 pyload/plugin/crypter/LixIn.py create mode 100644 pyload/plugin/crypter/LofCc.py create mode 100644 pyload/plugin/crypter/MBLinkInfo.py create mode 100644 pyload/plugin/crypter/MediafireCom.py create mode 100644 pyload/plugin/crypter/MegaRapidCz.py create mode 100644 pyload/plugin/crypter/MegauploadCom.py create mode 100644 pyload/plugin/crypter/Movie2kTo.py create mode 100644 pyload/plugin/crypter/MultiUpOrg.py create mode 100644 pyload/plugin/crypter/MultiloadCz.py create mode 100644 pyload/plugin/crypter/MultiuploadCom.py create mode 100644 pyload/plugin/crypter/NCryptIn.py create mode 100644 pyload/plugin/crypter/NetfolderIn.py create mode 100644 pyload/plugin/crypter/NosvideoCom.py create mode 100644 pyload/plugin/crypter/OneKhDe.py create mode 100644 pyload/plugin/crypter/OronCom.py create mode 100644 pyload/plugin/crypter/PastebinCom.py create mode 100644 pyload/plugin/crypter/QuickshareCz.py create mode 100644 pyload/plugin/crypter/RSLayerCom.py create mode 100644 pyload/plugin/crypter/RapidfileshareNet.py create mode 100644 pyload/plugin/crypter/RelinkUs.py create mode 100644 pyload/plugin/crypter/SafelinkingNet.py create mode 100644 pyload/plugin/crypter/SecuredIn.py create mode 100644 pyload/plugin/crypter/SexuriaCom.py create mode 100644 pyload/plugin/crypter/ShareLinksBiz.py create mode 100644 pyload/plugin/crypter/SharingmatrixCom.py create mode 100644 pyload/plugin/crypter/SpeedLoadOrg.py create mode 100644 pyload/plugin/crypter/StealthTo.py create mode 100644 pyload/plugin/crypter/TnyCz.py create mode 100644 pyload/plugin/crypter/TrailerzoneInfo.py create mode 100644 pyload/plugin/crypter/TurbobitNet.py create mode 100644 pyload/plugin/crypter/TusfilesNet.py create mode 100644 pyload/plugin/crypter/UlozTo.py create mode 100644 pyload/plugin/crypter/UploadableCh.py create mode 100644 pyload/plugin/crypter/UploadedTo.py create mode 100644 pyload/plugin/crypter/WiiReloadedOrg.py create mode 100644 pyload/plugin/crypter/WuploadCom.py create mode 100644 pyload/plugin/crypter/XFileSharingPro.py create mode 100644 pyload/plugin/crypter/XupPl.py create mode 100644 pyload/plugin/crypter/YoutubeBatch.py create mode 100644 pyload/plugin/crypter/__init__.py (limited to 'pyload/plugin/crypter') diff --git a/pyload/plugin/crypter/BitshareCom.py b/pyload/plugin/crypter/BitshareCom.py new file mode 100644 index 000000000..dfa7b71df --- /dev/null +++ b/pyload/plugin/crypter/BitshareCom.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- + +from pyload.plugin.internal.SimpleCrypter import SimpleCrypter + + +class BitshareCom(SimpleCrypter): + __name = "BitshareCom" + __type = "crypter" + __version = "0.03" + + __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" + __authors = [("stickell", "l.stickell@yahoo.it")] + + + LINK_PATTERN = r'.+' + NAME_PATTERN = r'View public folder "(?P.+)"' diff --git a/pyload/plugin/crypter/C1neonCom.py b/pyload/plugin/crypter/C1neonCom.py new file mode 100644 index 000000000..ad428f6dd --- /dev/null +++ b/pyload/plugin/crypter/C1neonCom.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +from pyload.plugin.internal.DeadCrypter import DeadCrypter, create_getInfo + + +class C1neonCom(DeadCrypter): + __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")] + + +getInfo = create_getInfo(C1neonCom) diff --git a/pyload/plugin/crypter/ChipDe.py b/pyload/plugin/crypter/ChipDe.py new file mode 100644 index 000000000..36735fd13 --- /dev/null +++ b/pyload/plugin/crypter/ChipDe.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- + +import re +from pyload.plugin.Crypter import Crypter + + +class ChipDe(Crypter): + __name = "ChipDe" + __type = "crypter" + __version = "0.10" + + __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" + __authors = [("4Christopher", "4Christopher@gmx.de")] + + + def decrypt(self, pyfile): + self.html = self.load(pyfile.url) + try: + f = re.search(r'"(http://video\.chip\.de/.+)"', self.html) + except Exception: + 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/pyload/plugin/crypter/CrockoCom.py b/pyload/plugin/crypter/CrockoCom.py new file mode 100644 index 000000000..8782c86e6 --- /dev/null +++ b/pyload/plugin/crypter/CrockoCom.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +from pyload.plugin.internal.SimpleCrypter import SimpleCrypter + + +class CrockoCom(SimpleCrypter): + __name = "CrockoCom" + __type = "crypter" + __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" + __authors = [("zoidberg", "zoidberg@mujmail.cz")] + + + LINK_PATTERN = r'download' diff --git a/pyload/plugin/crypter/CryptItCom.py b/pyload/plugin/crypter/CryptItCom.py new file mode 100644 index 000000000..dfb6be954 --- /dev/null +++ b/pyload/plugin/crypter/CryptItCom.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +from pyload.plugin.internal.DeadCrypter import DeadCrypter, create_getInfo + + +class CryptItCom(DeadCrypter): + __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")] + + +getInfo = create_getInfo(CryptItCom) diff --git a/pyload/plugin/crypter/CzshareCom.py b/pyload/plugin/crypter/CzshareCom.py new file mode 100644 index 000000000..e36394426 --- /dev/null +++ b/pyload/plugin/crypter/CzshareCom.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- + +import re +from pyload.plugin.Crypter import Crypter + + +class CzshareCom(Crypter): + __name = "CzshareCom" + __type = "crypter" + __version = "0.20" + + __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" + __authors = [("zoidberg", "zoidberg@mujmail.cz")] + + + FOLDER_PATTERN = r'\s*\s*(.*?)
' + LINK_PATTERN = r'info' + + + def decrypt(self, pyfile): + html = self.load(pyfile.url) + + m = re.search(self.FOLDER_PATTERN, html, re.S) + if m is None: + self.error(_("FOLDER_PATTERN not found")) + + self.urls.extend(re.findall(self.LINK_PATTERN, m.group(1))) diff --git a/pyload/plugin/crypter/DDLMusicOrg.py b/pyload/plugin/crypter/DDLMusicOrg.py new file mode 100644 index 000000000..a24cac22d --- /dev/null +++ b/pyload/plugin/crypter/DDLMusicOrg.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- + +import re + +from time import sleep + +from pyload.plugin.Crypter import Crypter + + +class DDLMusicOrg(Crypter): + __name = "DDLMusicOrg" + __type = "crypter" + __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), + ("subfolder_per_package", "bool", "Create a subfolder for each package", True)] + + __description = """Ddl-music.org decrypter plugin""" + __license = "GPLv3" + __authors = [("mkaay", "mkaay@mkaay.de")] + + + def setup(self): + self.multiDL = False + + + def decrypt(self, pyfile): + html = self.load(pyfile.url, cookies=True) + + if re.search(r"Wer dies nicht rechnen kann", html) is not None: + self.offline() + + math = re.search(r"(\d+) ([+-]) (\d+) =\s+", htmlwithlink) + if m: + self.urls = [m.group(1)] + else: + self.retry() diff --git a/pyload/plugin/crypter/DailymotionBatch.py b/pyload/plugin/crypter/DailymotionBatch.py new file mode 100644 index 000000000..4b5b7106c --- /dev/null +++ b/pyload/plugin/crypter/DailymotionBatch.py @@ -0,0 +1,106 @@ +# -*- coding: utf-8 -*- + +import re + +from urlparse import urljoin + +from pyload.utils import json_loads +from pyload.plugin.Crypter import Crypter +from pyload.utils import safe_join + + +class DailymotionBatch(Crypter): + __name = "DailymotionBatch" + __type = "crypter" + __version = "0.01" + + __pattern = r'https?://(?:www\.)?dailymotion\.com/((playlists/)?(?Pplaylist|user)/)?(?P[\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" + __authors = [("Walter Purcaro", "vuolter@gmail.com")] + + + def api_response(self, ref, req=None): + url = urljoin("https://api.dailymotion.com/", ref) + page = self.load(url, get=req) + return json_loads(page) + + + def getPlaylistInfo(self, id): + ref = "playlist/" + id + req = {"fields": "name,owner.screenname"} + playlist = self.api_response(ref, req) + + if "error" in playlist: + return + + name = playlist['name'] + 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} + user = self.api_response(ref, req) + + if "error" in user: + return + + for playlist in user['list']: + yield playlist['id'] + + if user['has_more']: + 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} + playlist = self.api_response(ref, req) + + if "error" in playlist: + return + + for video in playlist['list']: + yield video['url'] + + if playlist['has_more']: + 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") + m_type = m.group("TYPE") + + if m_type == "playlist": + self.logDebug("Url recognized as Playlist") + p_info = self.getPlaylistInfo(m_id) + playlists = [(m_id,) + p_info] if p_info else None + else: + self.logDebug("Url recognized as Channel") + playlists = self.getPlaylists(m_id) + self.logDebug("%s playlist\s found on channel \"%s\"" % (len(playlists), m_id)) + + if not playlists: + self.fail(_("No playlist available")) + + for p_id, p_name, p_owner in playlists: + p_videos = self.getVideos(p_id) + p_folder = safe_join(self.config['general']['download_folder'], p_owner, p_name) + self.logDebug("%s video\s found on playlist \"%s\"" % (len(p_videos), p_name)) + self.packages.append((p_name, p_videos, p_folder)) #: folder is NOT recognized by pyload 0.4.9! diff --git a/pyload/plugin/crypter/DataHu.py b/pyload/plugin/crypter/DataHu.py new file mode 100644 index 000000000..bc677253a --- /dev/null +++ b/pyload/plugin/crypter/DataHu.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- + +import re + +from pyload.plugin.internal.SimpleCrypter import SimpleCrypter + + +class DataHu(SimpleCrypter): + __name = "DataHu" + __type = "crypter" + __version = "0.06" + + __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" + __authors = [("crash", ""), + ("stickell", "l.stickell@yahoo.it")] + + + LINK_PATTERN = r'\1' + NAME_PATTERN = ur'(?P<N>.+) Let\xf6lt\xe9se' + + + def prepare(self): + super(DataHu, self).prepare() + + if u'K\xe9rlek add meg a jelsz\xf3t' in self.html: # Password protected + password = self.getPassword() + if not password: + self.fail(_("Password required")) + + self.logDebug("The folder is password protected', 'Using password: " + password) + + self.html = self.load(self.pyfile.url, post={'mappa_pass': password}, decode=True) + + if u'Hib\xe1s jelsz\xf3' in self.html: # Wrong password + self.fail(_("Wrong password")) diff --git a/pyload/plugin/crypter/DdlstorageCom.py b/pyload/plugin/crypter/DdlstorageCom.py new file mode 100644 index 000000000..c6f423bb6 --- /dev/null +++ b/pyload/plugin/crypter/DdlstorageCom.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +from pyload.plugin.internal.DeadCrypter import DeadCrypter, create_getInfo + + +class DdlstorageCom(DeadCrypter): + __name = "DdlstorageCom" + __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")] + + +getInfo = create_getInfo(DdlstorageCom) diff --git a/pyload/plugin/crypter/DepositfilesCom.py b/pyload/plugin/crypter/DepositfilesCom.py new file mode 100644 index 000000000..8ecbb6f8d --- /dev/null +++ b/pyload/plugin/crypter/DepositfilesCom.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +from pyload.plugin.internal.SimpleCrypter import SimpleCrypter + + +class DepositfilesCom(SimpleCrypter): + __name = "DepositfilesCom" + __type = "crypter" + __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" + __authors = [("zoidberg", "zoidberg@mujmail.cz")] + + + LINK_PATTERN = r'
]*>\s*' diff --git a/pyload/plugin/crypter/Dereferer.py b/pyload/plugin/crypter/Dereferer.py new file mode 100644 index 000000000..ec7f48a52 --- /dev/null +++ b/pyload/plugin/crypter/Dereferer.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- + +import re + +from urllib import unquote + +from pyload.plugin.Crypter import Crypter + + +class Dereferer(Crypter): + __name = "Dereferer" + __type = "crypter" + __version = "0.10" + + __pattern = r'https?://([^/]+)/.*?(?P(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/pyload/plugin/crypter/DevhostStFolder.py b/pyload/plugin/crypter/DevhostStFolder.py new file mode 100644 index 000000000..aa00fe60e --- /dev/null +++ b/pyload/plugin/crypter/DevhostStFolder.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# +# Test links: +# http://d-h.st/users/shine/?fld_id=37263#files + +import re + +from urlparse import urljoin + +from pyload.plugin.internal.SimpleCrypter import SimpleCrypter + + +class DevhostStFolder(SimpleCrypter): + __name = "DevhostStFolder" + __type = "crypter" + __version = "0.03" + + __pattern = r'http://(?:www\.)?d-h\.st/users/(?P\w+)(/\?fld_id=(?P\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" + __authors = [("zapp-brannigan", "fuerst.reinje@web.de"), + ("Walter Purcaro", "vuolter@gmail.com")] + + + LINK_PATTERN = r'(?:/> |;">)Back to \w+<)' + OFFLINE_PATTERN = r'"/cHP">test\.png<' + + + 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": + 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(e) + name = folder = re.match(self.__pattern, self.pyfile.url).group('USER') + + return {'name': name, 'folder': folder} + + + def getLinks(self): + return [urljoin("http://d-h.st", link) for link in re.findall(self.LINK_PATTERN, self.html)] diff --git a/pyload/plugin/crypter/DlProtectCom.py b/pyload/plugin/crypter/DlProtectCom.py new file mode 100644 index 000000000..0a9f00cc4 --- /dev/null +++ b/pyload/plugin/crypter/DlProtectCom.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- + +import re + +from base64 import urlsafe_b64encode +from time import time + +from pyload.plugin.internal.SimpleCrypter import SimpleCrypter + + +class DlProtectCom(SimpleCrypter): + __name = "DlProtectCom" + __type = "crypter" + __version = "0.01" + + __pattern = r'http://(?:www\.)?dl-protect\.com/((en|fr)/)?(?P\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" + __authors = [("Walter Purcaro", "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): + return [self.req.http.lastEffectiveURL] + + #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": ""} + + if self.OFFLINE_PATTERN in self.html: + self.offline() + elif ">Please click on continue to see the content" in self.html: + post_req.update({"submitform": "Continue"}) + else: + mstime = int(round(time() * 1000)) + b64time = "_" + urlsafe_b64encode(str(mstime)).replace("=", "%3D") + + post_req.update({"i": b64time, "submitform": "Decrypt+link"}) + + if ">Password :" in self.html: + 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 + + self.html = self.load(self.pyfile.url, post=post_req) + + for errmsg in (">The password is incorrect", ">The security code is incorrect"): + if errmsg in self.html: + self.fail(_(errmsg[1:])) + + pattern = r'' + return re.findall(pattern, self.html) diff --git a/pyload/plugin/crypter/DontKnowMe.py b/pyload/plugin/crypter/DontKnowMe.py new file mode 100644 index 000000000..7fc1c87e4 --- /dev/null +++ b/pyload/plugin/crypter/DontKnowMe.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- + +import re + +from urllib import unquote + +from pyload.plugin.Crypter import Crypter + + +class DontKnowMe(Crypter): + __name = "DontKnowMe" + __type = "crypter" + __version = "0.10" + + __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" + __authors = [("selaux", "")] + + + LINK_PATTERN = r'http://dontknow\.me/at/\?(.+)$' + + + def decrypt(self, pyfile): + link = re.findall(self.LINK_PATTERN, pyfile.url)[0] + self.urls = [unquote(link)] diff --git a/pyload/plugin/crypter/DuckCryptInfo.py b/pyload/plugin/crypter/DuckCryptInfo.py new file mode 100644 index 000000000..28f9a1505 --- /dev/null +++ b/pyload/plugin/crypter/DuckCryptInfo.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- + +import re + +from BeautifulSoup import BeautifulSoup + +from pyload.plugin.Crypter import Crypter + + +class DuckCryptInfo(Crypter): + __name = "DuckCryptInfo" + __type = "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" + __authors = [("godofdream", "soilfiction@gmail.com")] + + + TIMER_PATTERN = r'(.*)' + + + def decrypt(self, pyfile): + url = pyfile.url + + m = re.match(self.__pattern, url) + if m is None: + self.fail(_("Weird error in link")) + if str(m.group(1)) == "link": + self.handleLink(url) + else: + self.handleFolder(m) + + + def handleFolder(self, m): + 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))) + 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: + self.error(_("No link found")) + for clink in cryptlinks: + if clink.find("a"): + self.handleLink(clink.find("a")['href']) + + + def handleLink(self, url): + 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/pyload/plugin/crypter/DuploadOrg.py b/pyload/plugin/crypter/DuploadOrg.py new file mode 100644 index 000000000..d5839bce0 --- /dev/null +++ b/pyload/plugin/crypter/DuploadOrg.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +from pyload.plugin.internal.DeadCrypter import DeadCrypter, create_getInfo + + +class DuploadOrg(DeadCrypter): + __name = "DuploadOrg" + __type = "crypter" + __version = "0.02" + + __pattern = r'http://(?:www\.)?dupload\.org/folder/\d+' + __config = [] + + __description = """Dupload.org folder decrypter plugin""" + __license = "GPLv3" + __authors = [("stickell", "l.stickell@yahoo.it")] + + +getInfo = create_getInfo(DuploadOrg) diff --git a/pyload/plugin/crypter/EasybytezCom.py b/pyload/plugin/crypter/EasybytezCom.py new file mode 100644 index 000000000..2e7e37537 --- /dev/null +++ b/pyload/plugin/crypter/EasybytezCom.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +from pyload.plugin.internal.XFSCrypter import XFSCrypter + + +class EasybytezCom(XFSCrypter): + __name = "EasybytezCom" + __type = "crypter" + __version = "0.10" + + __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)] + + __description = """Easybytez.com folder decrypter plugin""" + __license = "GPLv3" + __authors = [("stickell", "l.stickell@yahoo.it")] + + + HOSTER_DOMAIN = "easybytez.com" + + LOGIN_ACCOUNT = True diff --git a/pyload/plugin/crypter/EmbeduploadCom.py b/pyload/plugin/crypter/EmbeduploadCom.py new file mode 100644 index 000000000..88f6db50b --- /dev/null +++ b/pyload/plugin/crypter/EmbeduploadCom.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- + +import re +from pyload.plugin.Crypter import Crypter +from pyload.network.HTTPRequest import BadHeader + + +class EmbeduploadCom(Crypter): + __name = "EmbeduploadCom" + __type = "crypter" + __version = "0.02" + + __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"), + ("ignoredHoster", "str", "Ignored hoster list (bar-separated)", "")] + + __description = """EmbedUpload.com decrypter plugin""" + __license = "GPLv3" + __authors = [("zoidberg", "zoidberg@mujmail.cz")] + + + LINK_PATTERN = r'
]*>\s*' + + + def decrypt(self, pyfile): + self.html = self.load(pyfile.url, decode=True) + tmp_links = [] + + 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) + + 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) + + 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) + + + def getLocation(self, tmp_links): + new_links = [] + for link in tmp_links: + try: + header = self.load(link, just_header=True) + if 'location' in header: + new_links.append(header['location']) + except BadHeader: + pass + return new_links diff --git a/pyload/plugin/crypter/FilebeerInfo.py b/pyload/plugin/crypter/FilebeerInfo.py new file mode 100644 index 000000000..294f57451 --- /dev/null +++ b/pyload/plugin/crypter/FilebeerInfo.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +from pyload.plugin.internal.DeadCrypter import DeadCrypter, create_getInfo + + +class FilebeerInfo(DeadCrypter): + __name = "FilebeerInfo" + __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")] + + +getInfo = create_getInfo(FilebeerInfo) diff --git a/pyload/plugin/crypter/FilecloudIo.py b/pyload/plugin/crypter/FilecloudIo.py new file mode 100644 index 000000000..1926d04bb --- /dev/null +++ b/pyload/plugin/crypter/FilecloudIo.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- + +from pyload.plugin.internal.SimpleCrypter import SimpleCrypter + + +class FilecloudIo(SimpleCrypter): + __name = "FilecloudIo" + __type = "crypter" + __version = "0.03" + + __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" + __authors = [("Walter Purcaro", "vuolter@gmail.com")] + + + LINK_PATTERN = r'href="(http://filecloud\.io/\w+)" title' + NAME_PATTERN = r'>(?P.+?) - filecloud\.io<' diff --git a/pyload/plugin/crypter/FilecryptCc.py b/pyload/plugin/crypter/FilecryptCc.py new file mode 100644 index 000000000..7db82f24c --- /dev/null +++ b/pyload/plugin/crypter/FilecryptCc.py @@ -0,0 +1,148 @@ +# -*- coding: utf-8 -*- + +import base64 +import binascii +import re + +from Crypto.Cipher import AES + +from pyload.plugin.Crypter import Crypter + + +class FilecryptCc(Crypter): + __name = "FilecryptCc" + __type = "crypter" + __version = "0.05" + + __pattern = r'https?://(?:www\.)?filecrypt\.cc/Container/\w+' + + __description = """Filecrypt.cc decrypter plugin""" + __license = "GPLv3" + __authors = [("zapp-brannigan", "fuerst.reinje@web.de")] + + + # URL_REPLACEMENTS = [(r'.html$', ""), (r'$', ".html")] #@TODO: Extend SimpleCrypter + + DLC_LINK_PATTERN = r'