From ce1c2b6b05c08b669357947e61ae40efce7fc50f Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Mon, 16 Feb 2015 10:46:28 +0100 Subject: module temp --- module/plugins/crypter/BitshareCom.py | 21 ++ module/plugins/crypter/C1NeonCom.py | 19 ++ module/plugins/crypter/ChipDe.py | 29 +++ module/plugins/crypter/CrockoCom.py | 20 ++ module/plugins/crypter/CryptItCom.py | 19 ++ module/plugins/crypter/CzshareCom.py | 32 +++ module/plugins/crypter/DDLMusicOrg.py | 51 +++++ module/plugins/crypter/DailymotionBatch.py | 106 +++++++++ module/plugins/crypter/DataHu.py | 40 ++++ module/plugins/crypter/DdlstorageCom.py | 20 ++ module/plugins/crypter/DepositfilesCom.py | 20 ++ module/plugins/crypter/Dereferer.py | 26 +++ module/plugins/crypter/DevhostStFolder.py | 58 +++++ module/plugins/crypter/DlProtectCom.py | 65 ++++++ module/plugins/crypter/DontKnowMe.py | 29 +++ module/plugins/crypter/DuckCryptInfo.py | 59 +++++ module/plugins/crypter/DuploadOrg.py | 19 ++ module/plugins/crypter/EasybytezCom.py | 22 ++ module/plugins/crypter/EmbeduploadCom.py | 60 +++++ module/plugins/crypter/FilebeerInfo.py | 19 ++ module/plugins/crypter/FilecloudIo.py | 21 ++ module/plugins/crypter/FilecryptCc.py | 148 +++++++++++++ module/plugins/crypter/FilefactoryCom.py | 28 +++ module/plugins/crypter/FilerNet.py | 26 +++ module/plugins/crypter/FileserveCom.py | 38 ++++ module/plugins/crypter/FilesonicCom.py | 18 ++ module/plugins/crypter/FilestubeCom.py | 21 ++ module/plugins/crypter/FiletramCom.py | 22 ++ module/plugins/crypter/FiredriveCom.py | 19 ++ module/plugins/crypter/FourChanOrg.py | 27 +++ module/plugins/crypter/FreakhareCom.py | 38 ++++ module/plugins/crypter/FreetexthostCom.py | 27 +++ module/plugins/crypter/FshareVn.py | 20 ++ module/plugins/crypter/Go4UpCom.py | 49 +++++ module/plugins/crypter/GooGl.py | 32 +++ module/plugins/crypter/HoerbuchIn.py | 62 ++++++ module/plugins/crypter/HotfileCom.py | 19 ++ module/plugins/crypter/ILoadTo.py | 19 ++ module/plugins/crypter/ImgurComAlbum.py | 27 +++ module/plugins/crypter/JunocloudMe.py | 20 ++ module/plugins/crypter/LetitbitNet.py | 33 +++ module/plugins/crypter/LinkCryptWs.py | 327 ++++++++++++++++++++++++++++ module/plugins/crypter/LinkSaveIn.py | 246 +++++++++++++++++++++ module/plugins/crypter/LinkdecrypterCom.py | 92 ++++++++ module/plugins/crypter/LixIn.py | 62 ++++++ module/plugins/crypter/LofCc.py | 19 ++ module/plugins/crypter/MBLinkInfo.py | 20 ++ module/plugins/crypter/MediafireCom.py | 58 +++++ module/plugins/crypter/MegaRapidCz.py | 20 ++ module/plugins/crypter/MegauploadCom.py | 18 ++ module/plugins/crypter/Movie2KTo.py | 19 ++ module/plugins/crypter/MultiUpOrg.py | 38 ++++ module/plugins/crypter/MultiloadCz.py | 42 ++++ module/plugins/crypter/MultiuploadCom.py | 18 ++ module/plugins/crypter/NCryptIn.py | 315 +++++++++++++++++++++++++++ module/plugins/crypter/NetfolderIn.py | 70 ++++++ module/plugins/crypter/NosvideoCom.py | 21 ++ module/plugins/crypter/OneKhDe.py | 40 ++++ module/plugins/crypter/OronCom.py | 19 ++ module/plugins/crypter/PastebinCom.py | 21 ++ module/plugins/crypter/QuickshareCz.py | 31 +++ module/plugins/crypter/RSLayerCom.py | 19 ++ module/plugins/crypter/RapidfileshareNet.py | 20 ++ module/plugins/crypter/RelinkUs.py | 293 +++++++++++++++++++++++++ module/plugins/crypter/SafelinkingNet.py | 79 +++++++ module/plugins/crypter/SecuredIn.py | 19 ++ module/plugins/crypter/SexuriaCom.py | 94 ++++++++ module/plugins/crypter/ShareLinksBiz.py | 286 ++++++++++++++++++++++++ module/plugins/crypter/SharingmatrixCom.py | 18 ++ module/plugins/crypter/SpeedLoadOrg.py | 19 ++ module/plugins/crypter/StealthTo.py | 19 ++ module/plugins/crypter/TnyCz.py | 27 +++ module/plugins/crypter/TrailerzoneInfo.py | 19 ++ module/plugins/crypter/TurbobitNet.py | 44 ++++ module/plugins/crypter/TusfilesNet.py | 45 ++++ module/plugins/crypter/UlozTo.py | 46 ++++ module/plugins/crypter/UploadableCh.py | 24 ++ module/plugins/crypter/UploadedTo.py | 34 +++ module/plugins/crypter/WiiReloadedOrg.py | 19 ++ module/plugins/crypter/WuploadCom.py | 18 ++ module/plugins/crypter/XFileSharingPro.py | 47 ++++ module/plugins/crypter/XupPl.py | 25 +++ module/plugins/crypter/YoutubeBatch.py | 148 +++++++++++++ module/plugins/crypter/__init__.py | 1 + 84 files changed, 4307 insertions(+) create mode 100644 module/plugins/crypter/BitshareCom.py create mode 100644 module/plugins/crypter/C1NeonCom.py create mode 100644 module/plugins/crypter/ChipDe.py create mode 100644 module/plugins/crypter/CrockoCom.py create mode 100644 module/plugins/crypter/CryptItCom.py create mode 100644 module/plugins/crypter/CzshareCom.py create mode 100644 module/plugins/crypter/DDLMusicOrg.py create mode 100644 module/plugins/crypter/DailymotionBatch.py create mode 100644 module/plugins/crypter/DataHu.py create mode 100644 module/plugins/crypter/DdlstorageCom.py create mode 100644 module/plugins/crypter/DepositfilesCom.py create mode 100644 module/plugins/crypter/Dereferer.py create mode 100644 module/plugins/crypter/DevhostStFolder.py create mode 100644 module/plugins/crypter/DlProtectCom.py create mode 100644 module/plugins/crypter/DontKnowMe.py create mode 100644 module/plugins/crypter/DuckCryptInfo.py create mode 100644 module/plugins/crypter/DuploadOrg.py create mode 100644 module/plugins/crypter/EasybytezCom.py create mode 100644 module/plugins/crypter/EmbeduploadCom.py create mode 100644 module/plugins/crypter/FilebeerInfo.py create mode 100644 module/plugins/crypter/FilecloudIo.py create mode 100644 module/plugins/crypter/FilecryptCc.py create mode 100644 module/plugins/crypter/FilefactoryCom.py create mode 100644 module/plugins/crypter/FilerNet.py create mode 100644 module/plugins/crypter/FileserveCom.py create mode 100644 module/plugins/crypter/FilesonicCom.py create mode 100644 module/plugins/crypter/FilestubeCom.py create mode 100644 module/plugins/crypter/FiletramCom.py create mode 100644 module/plugins/crypter/FiredriveCom.py create mode 100644 module/plugins/crypter/FourChanOrg.py create mode 100644 module/plugins/crypter/FreakhareCom.py create mode 100644 module/plugins/crypter/FreetexthostCom.py create mode 100644 module/plugins/crypter/FshareVn.py create mode 100644 module/plugins/crypter/Go4UpCom.py create mode 100644 module/plugins/crypter/GooGl.py create mode 100644 module/plugins/crypter/HoerbuchIn.py create mode 100644 module/plugins/crypter/HotfileCom.py create mode 100644 module/plugins/crypter/ILoadTo.py create mode 100644 module/plugins/crypter/ImgurComAlbum.py create mode 100644 module/plugins/crypter/JunocloudMe.py create mode 100644 module/plugins/crypter/LetitbitNet.py create mode 100644 module/plugins/crypter/LinkCryptWs.py create mode 100644 module/plugins/crypter/LinkSaveIn.py create mode 100644 module/plugins/crypter/LinkdecrypterCom.py create mode 100644 module/plugins/crypter/LixIn.py create mode 100644 module/plugins/crypter/LofCc.py create mode 100644 module/plugins/crypter/MBLinkInfo.py create mode 100644 module/plugins/crypter/MediafireCom.py create mode 100644 module/plugins/crypter/MegaRapidCz.py create mode 100644 module/plugins/crypter/MegauploadCom.py create mode 100644 module/plugins/crypter/Movie2KTo.py create mode 100644 module/plugins/crypter/MultiUpOrg.py create mode 100644 module/plugins/crypter/MultiloadCz.py create mode 100644 module/plugins/crypter/MultiuploadCom.py create mode 100644 module/plugins/crypter/NCryptIn.py create mode 100644 module/plugins/crypter/NetfolderIn.py create mode 100644 module/plugins/crypter/NosvideoCom.py create mode 100644 module/plugins/crypter/OneKhDe.py create mode 100644 module/plugins/crypter/OronCom.py create mode 100644 module/plugins/crypter/PastebinCom.py create mode 100644 module/plugins/crypter/QuickshareCz.py create mode 100644 module/plugins/crypter/RSLayerCom.py create mode 100644 module/plugins/crypter/RapidfileshareNet.py create mode 100644 module/plugins/crypter/RelinkUs.py create mode 100644 module/plugins/crypter/SafelinkingNet.py create mode 100644 module/plugins/crypter/SecuredIn.py create mode 100644 module/plugins/crypter/SexuriaCom.py create mode 100644 module/plugins/crypter/ShareLinksBiz.py create mode 100644 module/plugins/crypter/SharingmatrixCom.py create mode 100644 module/plugins/crypter/SpeedLoadOrg.py create mode 100644 module/plugins/crypter/StealthTo.py create mode 100644 module/plugins/crypter/TnyCz.py create mode 100644 module/plugins/crypter/TrailerzoneInfo.py create mode 100644 module/plugins/crypter/TurbobitNet.py create mode 100644 module/plugins/crypter/TusfilesNet.py create mode 100644 module/plugins/crypter/UlozTo.py create mode 100644 module/plugins/crypter/UploadableCh.py create mode 100644 module/plugins/crypter/UploadedTo.py create mode 100644 module/plugins/crypter/WiiReloadedOrg.py create mode 100644 module/plugins/crypter/WuploadCom.py create mode 100644 module/plugins/crypter/XFileSharingPro.py create mode 100644 module/plugins/crypter/XupPl.py create mode 100644 module/plugins/crypter/YoutubeBatch.py create mode 100644 module/plugins/crypter/__init__.py (limited to 'module/plugins/crypter') diff --git a/module/plugins/crypter/BitshareCom.py b/module/plugins/crypter/BitshareCom.py new file mode 100644 index 000000000..524307127 --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/C1NeonCom.py b/module/plugins/crypter/C1NeonCom.py new file mode 100644 index 000000000..a7973b041 --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/ChipDe.py b/module/plugins/crypter/ChipDe.py new file mode 100644 index 000000000..3e00a7f66 --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/CrockoCom.py b/module/plugins/crypter/CrockoCom.py new file mode 100644 index 000000000..577433510 --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/CryptItCom.py b/module/plugins/crypter/CryptItCom.py new file mode 100644 index 000000000..cb3347f55 --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/CzshareCom.py b/module/plugins/crypter/CzshareCom.py new file mode 100644 index 000000000..71847ab48 --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/DDLMusicOrg.py b/module/plugins/crypter/DDLMusicOrg.py new file mode 100644 index 000000000..2b6738799 --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/DailymotionBatch.py b/module/plugins/crypter/DailymotionBatch.py new file mode 100644 index 000000000..a056c73a4 --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/DataHu.py b/module/plugins/crypter/DataHu.py new file mode 100644 index 000000000..f69d6ee3e --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/DdlstorageCom.py b/module/plugins/crypter/DdlstorageCom.py new file mode 100644 index 000000000..1d87e975b --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/DepositfilesCom.py b/module/plugins/crypter/DepositfilesCom.py new file mode 100644 index 000000000..24fa9134a --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/Dereferer.py b/module/plugins/crypter/Dereferer.py new file mode 100644 index 000000000..598cba8bd --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/DevhostStFolder.py b/module/plugins/crypter/DevhostStFolder.py new file mode 100644 index 000000000..9c81879c6 --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/DlProtectCom.py b/module/plugins/crypter/DlProtectCom.py new file mode 100644 index 000000000..539cdc21c --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/DontKnowMe.py b/module/plugins/crypter/DontKnowMe.py new file mode 100644 index 000000000..c2b9649ed --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/DuckCryptInfo.py b/module/plugins/crypter/DuckCryptInfo.py new file mode 100644 index 000000000..55681fd5e --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/DuploadOrg.py b/module/plugins/crypter/DuploadOrg.py new file mode 100644 index 000000000..70745b550 --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/EasybytezCom.py b/module/plugins/crypter/EasybytezCom.py new file mode 100644 index 000000000..9a4fca74a --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/EmbeduploadCom.py b/module/plugins/crypter/EmbeduploadCom.py new file mode 100644 index 000000000..3265a939e --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/FilebeerInfo.py b/module/plugins/crypter/FilebeerInfo.py new file mode 100644 index 000000000..a6faa5cab --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/FilecloudIo.py b/module/plugins/crypter/FilecloudIo.py new file mode 100644 index 000000000..f4c967a07 --- /dev/null +++ b/module/plugins/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/module/plugins/crypter/FilecryptCc.py b/module/plugins/crypter/FilecryptCc.py new file mode 100644 index 000000000..475c1503f --- /dev/null +++ b/module/plugins/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'