From 1bd8de6bebb3f76bc5c09566aec682374150f2f8 Mon Sep 17 00:00:00 2001
From: Walter Purcaro <vuolter@gmail.com>
Date: Sun, 28 Sep 2014 21:32:34 +0200
Subject: Changed XFileSharingPro and UpdateManager to internal plugins

---
 pyload/plugins/hoster/BillionuploadsCom.py      |   2 +-
 pyload/plugins/hoster/CramitIn.py               |   2 +-
 pyload/plugins/hoster/DuploadOrg.py             |   2 +-
 pyload/plugins/hoster/EasybytezCom.py           |   2 +-
 pyload/plugins/hoster/EpicShareNet.py           |   2 +-
 pyload/plugins/hoster/File4safeCom.py           |   2 +-
 pyload/plugins/hoster/FileParadoxIn.py          |   2 +-
 pyload/plugins/hoster/FileomCom.py              |   2 +-
 pyload/plugins/hoster/FilerioCom.py             |   2 +-
 pyload/plugins/hoster/HugefilesNet.py           |   2 +-
 pyload/plugins/hoster/HundredEightyUploadCom.py |   2 +-
 pyload/plugins/hoster/LemUploadsCom.py          |   2 +-
 pyload/plugins/hoster/MegaFilesSe.py            |   2 +-
 pyload/plugins/hoster/MegareleaseOrg.py         |   2 +-
 pyload/plugins/hoster/MovReelCom.py             |   2 +-
 pyload/plugins/hoster/NosuploadCom.py           |   2 +-
 pyload/plugins/hoster/NovafileCom.py            |   2 +-
 pyload/plugins/hoster/PandaPlanet.py            |   2 +-
 pyload/plugins/hoster/PotloadCom.py             |   2 +-
 pyload/plugins/hoster/RarefileNet.py            |   2 +-
 pyload/plugins/hoster/RyushareCom.py            |   2 +-
 pyload/plugins/hoster/SecureUploadEu.py         |   2 +-
 pyload/plugins/hoster/SendmywayCom.py           |   2 +-
 pyload/plugins/hoster/StreamcloudEu.py          |   2 +-
 pyload/plugins/hoster/TusfilesNet.py            |   2 +-
 pyload/plugins/hoster/UptoboxCom.py             |   2 +-
 pyload/plugins/hoster/VidPlayNet.py             |   2 +-
 pyload/plugins/hoster/XFileSharingPro.py        | 352 ------------------------
 28 files changed, 27 insertions(+), 379 deletions(-)
 delete mode 100644 pyload/plugins/hoster/XFileSharingPro.py

(limited to 'pyload/plugins/hoster')

diff --git a/pyload/plugins/hoster/BillionuploadsCom.py b/pyload/plugins/hoster/BillionuploadsCom.py
index d6f39b61c..08d3bb1e5 100644
--- a/pyload/plugins/hoster/BillionuploadsCom.py
+++ b/pyload/plugins/hoster/BillionuploadsCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class BillionuploadsCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/CramitIn.py b/pyload/plugins/hoster/CramitIn.py
index 7091e02c2..6b492f6ed 100644
--- a/pyload/plugins/hoster/CramitIn.py
+++ b/pyload/plugins/hoster/CramitIn.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class CramitIn(XFileSharingPro):
diff --git a/pyload/plugins/hoster/DuploadOrg.py b/pyload/plugins/hoster/DuploadOrg.py
index 8c2430c87..071759017 100644
--- a/pyload/plugins/hoster/DuploadOrg.py
+++ b/pyload/plugins/hoster/DuploadOrg.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class DuploadOrg(XFileSharingPro):
diff --git a/pyload/plugins/hoster/EasybytezCom.py b/pyload/plugins/hoster/EasybytezCom.py
index e010aee2a..cdb07de0e 100644
--- a/pyload/plugins/hoster/EasybytezCom.py
+++ b/pyload/plugins/hoster/EasybytezCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class EasybytezCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/EpicShareNet.py b/pyload/plugins/hoster/EpicShareNet.py
index a4a6008ae..bf746ce2a 100644
--- a/pyload/plugins/hoster/EpicShareNet.py
+++ b/pyload/plugins/hoster/EpicShareNet.py
@@ -3,7 +3,7 @@
 # Test links:
 # BigBuckBunny_320x180.mp4 - 61.7 Mb - http://epicshare.net/fch3m2bk6ihp/BigBuckBunny_320x180.mp4.html
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class EpicShareNet(XFileSharingPro):
diff --git a/pyload/plugins/hoster/File4safeCom.py b/pyload/plugins/hoster/File4safeCom.py
index a86ed033e..a67c90014 100644
--- a/pyload/plugins/hoster/File4safeCom.py
+++ b/pyload/plugins/hoster/File4safeCom.py
@@ -4,7 +4,7 @@ import re
 
 from pycurl import FOLLOWLOCATION
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class File4safeCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/FileParadoxIn.py b/pyload/plugins/hoster/FileParadoxIn.py
index 436fed357..80a58bdf5 100644
--- a/pyload/plugins/hoster/FileParadoxIn.py
+++ b/pyload/plugins/hoster/FileParadoxIn.py
@@ -2,7 +2,7 @@
 
 import re
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class FileParadoxIn(XFileSharingPro):
diff --git a/pyload/plugins/hoster/FileomCom.py b/pyload/plugins/hoster/FileomCom.py
index a5de24a3f..a7c91106a 100644
--- a/pyload/plugins/hoster/FileomCom.py
+++ b/pyload/plugins/hoster/FileomCom.py
@@ -3,7 +3,7 @@
 # Test links:
 # http://fileom.com/gycaytyzdw3g/random.bin.html
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class FileomCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/FilerioCom.py b/pyload/plugins/hoster/FilerioCom.py
index 5c62b0da8..c9c63c38e 100644
--- a/pyload/plugins/hoster/FilerioCom.py
+++ b/pyload/plugins/hoster/FilerioCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class FilerioCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/HugefilesNet.py b/pyload/plugins/hoster/HugefilesNet.py
index 8a960c7fa..6450141ca 100644
--- a/pyload/plugins/hoster/HugefilesNet.py
+++ b/pyload/plugins/hoster/HugefilesNet.py
@@ -3,7 +3,7 @@
 # Test links:
 # http://hugefiles.net/prthf9ya4w6s
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class HugefilesNet(XFileSharingPro):
diff --git a/pyload/plugins/hoster/HundredEightyUploadCom.py b/pyload/plugins/hoster/HundredEightyUploadCom.py
index fa3dd8de3..eef6e045c 100644
--- a/pyload/plugins/hoster/HundredEightyUploadCom.py
+++ b/pyload/plugins/hoster/HundredEightyUploadCom.py
@@ -3,7 +3,7 @@
 # Test links:
 # http://180upload.com/js9qdm6kjnrs
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class HundredEightyUploadCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/LemUploadsCom.py b/pyload/plugins/hoster/LemUploadsCom.py
index 08d999478..432154981 100644
--- a/pyload/plugins/hoster/LemUploadsCom.py
+++ b/pyload/plugins/hoster/LemUploadsCom.py
@@ -3,7 +3,7 @@
 # Test links:
 # BigBuckBunny_320x180.mp4 - 61.7 Mb - http://lemuploads.com/uwol0aly9dld
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class LemUploadsCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/MegaFilesSe.py b/pyload/plugins/hoster/MegaFilesSe.py
index 48306cd7f..ae2244e94 100644
--- a/pyload/plugins/hoster/MegaFilesSe.py
+++ b/pyload/plugins/hoster/MegaFilesSe.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class MegaFilesSe(XFileSharingPro):
diff --git a/pyload/plugins/hoster/MegareleaseOrg.py b/pyload/plugins/hoster/MegareleaseOrg.py
index adfe68026..979fb60a6 100644
--- a/pyload/plugins/hoster/MegareleaseOrg.py
+++ b/pyload/plugins/hoster/MegareleaseOrg.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class MegareleaseOrg(XFileSharingPro):
diff --git a/pyload/plugins/hoster/MovReelCom.py b/pyload/plugins/hoster/MovReelCom.py
index 8a754f6c8..d85337e46 100644
--- a/pyload/plugins/hoster/MovReelCom.py
+++ b/pyload/plugins/hoster/MovReelCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class MovReelCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/NosuploadCom.py b/pyload/plugins/hoster/NosuploadCom.py
index 83e018355..e7ea7e56b 100644
--- a/pyload/plugins/hoster/NosuploadCom.py
+++ b/pyload/plugins/hoster/NosuploadCom.py
@@ -2,7 +2,7 @@
 
 import re
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class NosuploadCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/NovafileCom.py b/pyload/plugins/hoster/NovafileCom.py
index 8f3f78de1..4f897d1b4 100644
--- a/pyload/plugins/hoster/NovafileCom.py
+++ b/pyload/plugins/hoster/NovafileCom.py
@@ -4,7 +4,7 @@
 # http://novafile.com/vfun4z6o2cit
 # http://novafile.com/s6zrr5wemuz4
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class NovafileCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/PandaPlanet.py b/pyload/plugins/hoster/PandaPlanet.py
index 8b26202df..0ba09eb53 100644
--- a/pyload/plugins/hoster/PandaPlanet.py
+++ b/pyload/plugins/hoster/PandaPlanet.py
@@ -4,7 +4,7 @@
 # test.bin - 214 B - http://pandapla.net/pew1cz3ot586
 # BigBuckBunny_320x180.mp4 - 61.7 Mb - http://pandapla.net/tz0rgjfyyoh7
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class PandaPlanet(XFileSharingPro):
diff --git a/pyload/plugins/hoster/PotloadCom.py b/pyload/plugins/hoster/PotloadCom.py
index 6a97d0289..dc8009bdf 100644
--- a/pyload/plugins/hoster/PotloadCom.py
+++ b/pyload/plugins/hoster/PotloadCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class PotloadCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/RarefileNet.py b/pyload/plugins/hoster/RarefileNet.py
index 7082dc19e..5366b475f 100644
--- a/pyload/plugins/hoster/RarefileNet.py
+++ b/pyload/plugins/hoster/RarefileNet.py
@@ -2,7 +2,7 @@
 
 import re
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 from pyload.utils import html_unescape
 
 
diff --git a/pyload/plugins/hoster/RyushareCom.py b/pyload/plugins/hoster/RyushareCom.py
index 326c55e0c..9641bf6e5 100644
--- a/pyload/plugins/hoster/RyushareCom.py
+++ b/pyload/plugins/hoster/RyushareCom.py
@@ -5,7 +5,7 @@
 
 import re
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 from pyload.plugins.internal.CaptchaService import SolveMedia
 
 
diff --git a/pyload/plugins/hoster/SecureUploadEu.py b/pyload/plugins/hoster/SecureUploadEu.py
index 0edc1860d..afe839f51 100644
--- a/pyload/plugins/hoster/SecureUploadEu.py
+++ b/pyload/plugins/hoster/SecureUploadEu.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class SecureUploadEu(XFileSharingPro):
diff --git a/pyload/plugins/hoster/SendmywayCom.py b/pyload/plugins/hoster/SendmywayCom.py
index 0306206ca..be9d5854e 100644
--- a/pyload/plugins/hoster/SendmywayCom.py
+++ b/pyload/plugins/hoster/SendmywayCom.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class SendmywayCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/StreamcloudEu.py b/pyload/plugins/hoster/StreamcloudEu.py
index 875766fd7..57ddabb98 100644
--- a/pyload/plugins/hoster/StreamcloudEu.py
+++ b/pyload/plugins/hoster/StreamcloudEu.py
@@ -5,7 +5,7 @@ import re
 from time import sleep
 
 from pyload.network.HTTPRequest import HTTPRequest
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class StreamcloudEu(XFileSharingPro):
diff --git a/pyload/plugins/hoster/TusfilesNet.py b/pyload/plugins/hoster/TusfilesNet.py
index bbed62a6a..4ba847d96 100644
--- a/pyload/plugins/hoster/TusfilesNet.py
+++ b/pyload/plugins/hoster/TusfilesNet.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class TusfilesNet(XFileSharingPro):
diff --git a/pyload/plugins/hoster/UptoboxCom.py b/pyload/plugins/hoster/UptoboxCom.py
index 2786deb5a..5ef2ad69b 100644
--- a/pyload/plugins/hoster/UptoboxCom.py
+++ b/pyload/plugins/hoster/UptoboxCom.py
@@ -2,7 +2,7 @@
 
 import re
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class UptoboxCom(XFileSharingPro):
diff --git a/pyload/plugins/hoster/VidPlayNet.py b/pyload/plugins/hoster/VidPlayNet.py
index 82afde07d..c52b43d1f 100644
--- a/pyload/plugins/hoster/VidPlayNet.py
+++ b/pyload/plugins/hoster/VidPlayNet.py
@@ -3,7 +3,7 @@
 # Test links:
 # BigBuckBunny_320x180.mp4 - 61.7 Mb - http://vidplay.net/38lkev0h3jv0
 
-from pyload.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+from pyload.plugins.internal.XFileSharingPro import XFileSharingPro, create_getInfo
 
 
 class VidPlayNet(XFileSharingPro):
diff --git a/pyload/plugins/hoster/XFileSharingPro.py b/pyload/plugins/hoster/XFileSharingPro.py
deleted file mode 100644
index 212ef23ef..000000000
--- a/pyload/plugins/hoster/XFileSharingPro.py
+++ /dev/null
@@ -1,352 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-
-from pycurl import FOLLOWLOCATION, LOW_SPEED_TIME
-from random import random
-from urllib import unquote
-from urlparse import urlparse
-
-from pyload.network.RequestFactory import getURL
-from pyload.plugins.internal.CaptchaService import ReCaptcha, SolveMedia
-from pyload.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo, PluginParseError, replace_patterns
-from pyload.utils import html_unescape
-
-
-class XFileSharingPro(SimpleHoster):
-    """
-    Common base for XFileSharingPro hosters like EasybytezCom, CramitIn, FiledinoCom...
-    Some hosters may work straight away when added to __pattern__
-    However, most of them will NOT work because they are either down or running a customized version
-    """
-    __name__ = "XFileSharingPro"
-    __type__ = "hoster"
-    __version__ = "0.36"
-
-    __pattern__ = r'^unmatchable$'
-
-    __description__ = """XFileSharingPro base hoster plugin"""
-    __author_name__ = ("zoidberg", "stickell", "Walter Purcaro")
-    __author_mail__ = ("zoidberg@mujmail.cz", "l.stickell@yahoo.it", "vuolter@gmail.com")
-
-
-    HOSTER_NAME = None
-
-    FILE_URL_REPLACEMENTS = [(r'/embed-(\w{12}).*', r'/\1')]  #: support embedded files
-
-    COOKIES = [(HOSTER_NAME, "lang", "english")]
-
-    FILE_INFO_PATTERN = r'<tr><td align=right><b>Filename:</b></td><td nowrap>(?P<N>[^<]+)</td></tr>\s*.*?<small>\((?P<S>[^<]+)\)</small>'
-    FILE_NAME_PATTERN = r'<input type="hidden" name="fname" value="(?P<N>[^"]+)"'
-    FILE_SIZE_PATTERN = r'You have requested .*\((?P<S>[\d\.\,]+) ?(?P<U>\w+)?\)</font>'
-
-    OFFLINE_PATTERN = r'>\w+ (Not Found|file (was|has been) removed)'
-
-    WAIT_PATTERN = r'<span id="countdown_str">.*?>(\d+)</span>'
-
-    OVR_LINK_PATTERN = r'<h2>Download Link</h2>\s*<textarea[^>]*>([^<]+)'
-    LINK_PATTERN = None  #: final download url pattern
-
-    CAPTCHA_URL_PATTERN = r'(http://[^"\']+?/captchas?/[^"\']+)'
-    RECAPTCHA_URL_PATTERN = r'http://[^"\']+?recaptcha[^"\']+?\?k=([^"\']+)"'
-    CAPTCHA_DIV_PATTERN = r'>Enter code.*?<div.*?>(.*?)</div>'
-    SOLVEMEDIA_PATTERN = r'http:\/\/api\.solvemedia\.com\/papi\/challenge\.script\?k=(.*?)"'
-
-    ERROR_PATTERN = r'class=["\']err["\'][^>]*>(.*?)</'
-
-
-    def setup(self):
-        self.chunkLimit = 1
-
-        if self.__name__ == "XFileSharingPro":
-            self.multiDL = True
-            self.__pattern__ = self.core.pluginManager.hosterPlugins[self.__name__]['pattern']
-            self.HOSTER_NAME = re.match(self.__pattern__, self.pyfile.url).group(1).lower()
-            self.COOKIES = [(self.HOSTER_NAME, "lang", "english")]
-        else:
-            self.resumeDownload = self.multiDL = self.premium
-
-
-    def prepare(self):
-        """ Initialize important variables """
-        if not self.HOSTER_NAME:
-            self.fail("Missing HOSTER_NAME")
-
-        if not self.LINK_PATTERN:
-            pattr = r'(http://([^/]*?%s|\d+\.\d+\.\d+\.\d+)(:\d+)?(/d/|(?:/files)?/\d+/\w+/)[^"\'<]+)'
-            self.LINK_PATTERN = pattr % self.HOSTER_NAME
-
-        if isinstance(self.COOKIES, list):
-            set_cookies(self.req.cj, self.COOKIES)
-
-        self.captcha = None
-        self.errmsg = None
-        self.passwords = self.getPassword().splitlines()
-
-
-    def process(self, pyfile):
-        self.prepare()
-
-        pyfile.url = replace_patterns(pyfile.url, self.FILE_URL_REPLACEMENTS)
-
-        if not re.match(self.__pattern__, pyfile.url):
-            if self.premium:
-                self.handleOverriden()
-            else:
-                self.fail("Only premium users can download from other hosters with %s" % self.HOSTER_NAME)
-        else:
-            try:
-                # Due to a 0.4.9 core bug self.load would use cookies even if
-                # cookies=False. Workaround using getURL to avoid cookies.
-                # Can be reverted in 0.4.10 as the cookies bug has been fixed.
-                self.html = getURL(pyfile.url, decode=True, cookies=self.COOKIES)
-                self.file_info = self.getFileInfo()
-            except PluginParseError:
-                self.file_info = None
-
-            self.location = self.getDirectDownloadLink()
-
-            if not self.file_info:
-                pyfile.name = html_unescape(unquote(urlparse(
-                    self.location if self.location else pyfile.url).path.split("/")[-1]))
-
-            if self.location:
-                self.startDownload(self.location)
-            elif self.premium:
-                self.handlePremium()
-            else:
-                self.handleFree()
-
-
-    def getDirectDownloadLink(self):
-        """ Get download link for premium users with direct download enabled """
-        self.req.http.lastURL = self.pyfile.url
-
-        self.req.http.c.setopt(FOLLOWLOCATION, 0)
-        self.html = self.load(self.pyfile.url, decode=True)
-        self.header = self.req.http.header
-        self.req.http.c.setopt(FOLLOWLOCATION, 1)
-
-        location = None
-        m = re.search(r"Location\s*:\s*(.*)", self.header, re.I)
-        if m and re.match(self.LINK_PATTERN, m.group(1)):
-            location = m.group(1).strip()
-
-        return location
-
-
-    def handleFree(self):
-        url = self.getDownloadLink()
-        self.logDebug("Download URL: %s" % url)
-        self.startDownload(url)
-
-
-    def getDownloadLink(self):
-        for i in xrange(5):
-            self.logDebug("Getting download link: #%d" % i)
-            data = self.getPostParameters()
-
-            self.req.http.c.setopt(FOLLOWLOCATION, 0)
-            self.html = self.load(self.pyfile.url, post=data, ref=True, decode=True)
-            self.header = self.req.http.header
-            self.req.http.c.setopt(FOLLOWLOCATION, 1)
-
-            m = re.search(r"Location\s*:\s*(.*)", self.header, re.I)
-            if m:
-                break
-
-            m = re.search(self.LINK_PATTERN, self.html, re.S)
-            if m:
-                break
-
-        else:
-            if self.errmsg and 'captcha' in self.errmsg:
-                self.fail("No valid captcha code entered")
-            else:
-                self.fail("Download link not found")
-
-        return m.group(1)
-
-
-    def handlePremium(self):
-        self.html = self.load(self.pyfile.url, post=self.getPostParameters())
-        m = re.search(self.LINK_PATTERN, self.html)
-        if m is None:
-            self.parseError('DIRECT LINK')
-        self.startDownload(m.group(1))
-
-
-    def handleOverriden(self):
-        #only tested with easybytez.com
-        self.html = self.load("http://www.%s/" % self.HOSTER_NAME)
-        action, inputs = self.parseHtmlForm('')
-        upload_id = "%012d" % int(random() * 10 ** 12)
-        action += upload_id + "&js_on=1&utype=prem&upload_type=url"
-        inputs['tos'] = '1'
-        inputs['url_mass'] = self.pyfile.url
-        inputs['up1oad_type'] = 'url'
-
-        self.logDebug(self.HOSTER_NAME, action, inputs)
-        #wait for file to upload to easybytez.com
-        self.req.http.c.setopt(LOW_SPEED_TIME, 600)
-        self.html = self.load(action, post=inputs)
-
-        action, inputs = self.parseHtmlForm('F1')
-        if not inputs:
-            self.parseError('TEXTAREA')
-        self.logDebug(self.HOSTER_NAME, inputs)
-        if inputs['st'] == 'OK':
-            self.html = self.load(action, post=inputs)
-        elif inputs['st'] == 'Can not leech file':
-            self.retry(max_tries=20, wait_time=3 * 60, reason=inputs['st'])
-        else:
-            self.fail(inputs['st'])
-
-        #get easybytez.com link for uploaded file
-        m = re.search(self.OVR_LINK_PATTERN, self.html)
-        if m is None:
-            self.parseError('DIRECT LINK (OVR)')
-        self.pyfile.url = m.group(1)
-        header = self.load(self.pyfile.url, just_header=True)
-        if 'location' in header:  # Direct link
-            self.startDownload(self.pyfile.url)
-        else:
-            self.retry()
-
-
-    def startDownload(self, link):
-        link = link.strip()
-        if self.captcha:
-            self.correctCaptcha()
-        self.logDebug("DIRECT LINK: %s" % link)
-        self.download(link, disposition=True)
-
-
-    def checkErrors(self):
-        m = re.search(self.ERROR_PATTERN, self.html)
-        if m:
-            self.errmsg = m.group(1)
-            self.logWarning(re.sub(r"<.*?>", " ", self.errmsg))
-
-            if 'wait' in self.errmsg:
-                wait_time = sum([int(v) * {"hour": 3600, "minute": 60, "second": 1}[u] for v, u in
-                                 re.findall(r'(\d+)\s*(hour|minute|second)', self.errmsg)])
-                self.wait(wait_time, True)
-            elif 'captcha' in self.errmsg:
-                self.invalidCaptcha()
-            elif 'premium' in self.errmsg and 'require' in self.errmsg:
-                self.fail("File can be downloaded by premium users only")
-            elif 'limit' in self.errmsg:
-                self.wait(1 * 60 * 60, True)
-                self.retry(25)
-            elif 'countdown' in self.errmsg or 'Expired' in self.errmsg:
-                self.retry()
-            elif 'maintenance' in self.errmsg:
-                self.tempOffline()
-            elif 'download files up to' in self.errmsg:
-                self.fail("File too large for free download")
-            else:
-                self.fail(self.errmsg)
-
-        else:
-            self.errmsg = None
-
-        return self.errmsg
-
-
-    def getPostParameters(self):
-        for _ in xrange(3):
-            if not self.errmsg:
-                self.checkErrors()
-
-            if hasattr(self, "FORM_PATTERN"):
-                action, inputs = self.parseHtmlForm(self.FORM_PATTERN)
-            else:
-                action, inputs = self.parseHtmlForm(input_names={"op": re.compile("^download")})
-
-            if not inputs:
-                action, inputs = self.parseHtmlForm('F1')
-                if not inputs:
-                    if self.errmsg:
-                        self.retry()
-                    else:
-                        self.parseError("Form not found")
-
-            self.logDebug(self.HOSTER_NAME, inputs)
-
-            if 'op' in inputs and inputs['op'] in ("download2", "download3"):
-                if "password" in inputs:
-                    if self.passwords:
-                        inputs['password'] = self.passwords.pop(0)
-                    else:
-                        self.fail("No or invalid passport")
-
-                if not self.premium:
-                    m = re.search(self.WAIT_PATTERN, self.html)
-                    if m:
-                        wait_time = int(m.group(1)) + 1
-                        self.setWait(wait_time, False)
-                    else:
-                        wait_time = 0
-
-                    self.captcha = self.handleCaptcha(inputs)
-
-                    if wait_time:
-                        self.wait()
-
-                self.errmsg = None
-                return inputs
-
-            else:
-                inputs['referer'] = self.pyfile.url
-
-                if self.premium:
-                    inputs['method_premium'] = "Premium Download"
-                    if 'method_free' in inputs:
-                        del inputs['method_free']
-                else:
-                    inputs['method_free'] = "Free Download"
-                    if 'method_premium' in inputs:
-                        del inputs['method_premium']
-
-                self.html = self.load(self.pyfile.url, post=inputs, ref=True)
-                self.errmsg = None
-
-        else:
-            self.parseError('FORM: %s' % (inputs['op'] if 'op' in inputs else 'UNKNOWN'))
-
-
-    def handleCaptcha(self, inputs):
-        m = re.search(self.RECAPTCHA_URL_PATTERN, self.html)
-        if m:
-            recaptcha_key = unquote(m.group(1))
-            self.logDebug("RECAPTCHA KEY: %s" % recaptcha_key)
-            recaptcha = ReCaptcha(self)
-            inputs['recaptcha_challenge_field'], inputs['recaptcha_response_field'] = recaptcha.challenge(recaptcha_key)
-            return 1
-        else:
-            m = re.search(self.CAPTCHA_URL_PATTERN, self.html)
-            if m:
-                captcha_url = m.group(1)
-                inputs['code'] = self.decryptCaptcha(captcha_url)
-                return 2
-            else:
-                m = re.search(self.CAPTCHA_DIV_PATTERN, self.html, re.DOTALL)
-                if m:
-                    captcha_div = m.group(1)
-                    self.logDebug(captcha_div)
-                    numerals = re.findall(r'<span.*?padding-left\s*:\s*(\d+).*?>(\d)</span>', html_unescape(captcha_div))
-                    inputs['code'] = "".join([a[1] for a in sorted(numerals, key=lambda num: int(num[0]))])
-                    self.logDebug("CAPTCHA", inputs['code'], numerals)
-                    return 3
-                else:
-                    m = re.search(self.SOLVEMEDIA_PATTERN, self.html)
-                    if m:
-                        captcha_key = m.group(1)
-                        captcha = SolveMedia(self)
-                        inputs['adcopy_challenge'], inputs['adcopy_response'] = captcha.challenge(captcha_key)
-                        return 4
-        return 0
-
-
-getInfo = create_getInfo(XFileSharingPro)
-- 
cgit v1.2.3