# -*- coding: utf-8 -*-
import re
from module.plugins.Crypter import Crypter
from module.network.HTTPRequest import BadHeader
class EmbeduploadCom(Crypter):
__name__ = "EmbeduploadCom"
__type__ = "crypter"
__pattern__ = r"http://(www\.)?embedupload.com/\?d=.*"
__version__ = "0.02"
__description__ = """EmbedUpload.com crypter"""
__config__ = [("preferedHoster", "str", "Prefered hoster list (bar-separated) ", "embedupload"),
("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")]
__author_name__ = ("zoidberg")
__author_mail__ = ("zoidberg@mujmail.cz")
LINK_PATTERN = r'
]*>\s*
'
def decrypt(self, pyfile):
self.html = self.load(self.pyfile.url, decode=True)
tmp_links = []
new_links = []
found = re.findall(self.LINK_PATTERN, self.html)
if found:
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])
self.getLocation(tmp_links, new_links)
if not new_links:
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)
if new_links:
self.core.files.addLinks(new_links, self.pyfile.package().id)
else:
self.fail('Could not extract any 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