# -*- coding: utf-8 -*-
import re
from random import random
from time import sleep
from pycurl import FOLLOWLOCATION, LOW_SPEED_TIME
from module.plugins.hoster.UnrestrictLi import secondsToMidnight
from module.plugins.internal.CaptchaService import ReCaptcha, SolveMedia
from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
from module.utils import html_unescape
class XFSHoster(SimpleHoster):
__name__ = "XFSHoster"
__type__ = "hoster"
__version__ = "0.18"
__pattern__ = r'^unmatchable$'
__description__ = """XFileSharing hoster plugin"""
__license__ = "GPLv3"
__authors__ = [("zoidberg", "zoidberg@mujmail.cz"),
("stickell", "l.stickell@yahoo.it"),
("Walter Purcaro", "vuolter@gmail.com")]
HOSTER_DOMAIN = None
HOSTER_NAME = None
URL_REPLACEMENTS = [(r'/(?:embed-)?(\w{12}).*', r'/\1')] #: plus support embedded files
COOKIES = [(HOSTER_DOMAIN, "lang", "english")]
INFO_PATTERN = r'
Filename: | (?P[^<]+) |
\s*.*?\((?P[^<]+)\)'
NAME_PATTERN = r'(>Filename:|name="fname" value="|)(?P.+?)(\s*<|")'
SIZE_PATTERN = r'(>Size: | |>File:.*>|)(?P[\d.,]+)\s*(?P[\w^_]+)'
OFFLINE_PATTERN = r'>\s*\w+ (Not Found|file (was|has been) removed)'
TEMP_OFFLINE_PATTERN = r'>\s*\w+ server (is in )?(maintenance|maintainance)'
WAIT_PATTERN = r'.*?>(\d+)|id="countdown" value=".*?(\d+).*?"'
OVR_LINK_PATTERN = r'Download Link\s*', html_unescape(captcha_div))
inputs['code'] = "".join([a[1] for a in sorted(numerals, key=lambda num: int(num[0]))])
self.logDebug("Captcha code: %s" % inputs['code'], numerals)
return 2
recaptcha = ReCaptcha(self)
try:
captcha_key = re.search(self.RECAPTCHA_PATTERN, self.html).group(1)
except:
captcha_key = recaptcha.detect_key()
if captcha_key:
self.logDebug("ReCaptcha key: %s" % captcha_key)
inputs['recaptcha_challenge_field'], inputs['recaptcha_response_field'] = recaptcha.challenge(captcha_key)
return 3
solvemedia = SolveMedia(self)
try:
captcha_key = re.search(self.SOLVEMEDIA_PATTERN, self.html).group(1)
except:
captcha_key = solvemedia.detect_key()
if captcha_key:
self.logDebug("SolveMedia key: %s" % captcha_key)
inputs['adcopy_challenge'], inputs['adcopy_response'] = solvemedia.challenge(captcha_key)
return 4
return 0
|