summaryrefslogtreecommitdiffstats
path: root/module
diff options
context:
space:
mode:
Diffstat (limited to 'module')
-rw-r--r--module/plugins/accounts/BoltsharingCom.py12
-rw-r--r--module/plugins/accounts/HellshareCz.py28
-rw-r--r--module/plugins/hoster/BoltsharingCom.py15
-rw-r--r--module/plugins/hoster/HellshareCz.py21
-rw-r--r--module/plugins/hoster/XFileSharingPro.py4
5 files changed, 55 insertions, 25 deletions
diff --git a/module/plugins/accounts/BoltsharingCom.py b/module/plugins/accounts/BoltsharingCom.py
new file mode 100644
index 000000000..678591d1d
--- /dev/null
+++ b/module/plugins/accounts/BoltsharingCom.py
@@ -0,0 +1,12 @@
+# -*- coding: utf-8 -*-
+from module.plugins.internal.XFSPAccount import XFSPAccount
+
+class BoltsharingCom(XFSPAccount):
+ __name__ = "BoltsharingCom"
+ __version__ = "0.01"
+ __type__ = "account"
+ __description__ = """Boltsharing.com account plugin"""
+ __author_name__ = ("zoidberg")
+ __author_mail__ = ("zoidberg@mujmail.cz")
+
+ MAIN_PAGE = "http://boltsharing.com/"
diff --git a/module/plugins/accounts/HellshareCz.py b/module/plugins/accounts/HellshareCz.py
index 312b1e76b..c7a918dec 100644
--- a/module/plugins/accounts/HellshareCz.py
+++ b/module/plugins/accounts/HellshareCz.py
@@ -19,16 +19,17 @@
from module.plugins.Account import Account
import re
+import time
class HellshareCz(Account):
__name__ = "HellshareCz"
- __version__ = "0.13"
+ __version__ = "0.14"
__type__ = "account"
__description__ = """hellshare.cz account plugin"""
__author_name__ = ("zoidberg")
__author_mail__ = ("zoidberg@mujmail.cz")
- CREDIT_LEFT_PATTERN = r'<div class="credit-link">\s*<table>\s*<tr>\s*<th>(\d+)</th>'
+ CREDIT_LEFT_PATTERN = r'<div class="credit-link">\s*<table>\s*<tr>\s*<th>(\d+|\d\d\.\d\d\.)</th>'
def loadAccountInfo(self, user, req):
self.relogin(user)
@@ -36,13 +37,30 @@ class HellshareCz(Account):
found = re.search(self.CREDIT_LEFT_PATTERN, html)
if found is None:
- credits = 0
+ trafficleft = None
+ validuntil = None
premium = False
else:
- credits = int(found.group(1)) * 1024
+ credit = found.group(1)
premium = True
+ try:
+ if "." in credit:
+ #Time-based account
+ vt = [int(x) for x in credit.split('.')[:2]]
+ lt = time.localtime()
+ year = lt.tm_year + int(vt[1] < lt.tm_mon or (vt[1] == lt.tm_mon and vt[0] < lt.tm_mday))
+ validuntil = time.mktime(time.strptime("%s%d 23:59:59" % (credit,year), "%d.%m.%Y %H:%M:%S"))
+ trafficleft = -1
+ else:
+ #Traffic-based account
+ trafficleft = int(credit) * 1024
+ validuntil = -1
+ except Exception, e:
+ self.logError('Unable to parse credit info', e)
+ validuntil = -1
+ trafficleft = -1
- return {"validuntil": -1, "trafficleft": credits, "premium": premium}
+ return {"validuntil": validuntil, "trafficleft": trafficleft, "premium": premium}
def login(self, user, data, req):
html = req.load('http://www.hellshare.com/')
diff --git a/module/plugins/hoster/BoltsharingCom.py b/module/plugins/hoster/BoltsharingCom.py
new file mode 100644
index 000000000..2f42c8b23
--- /dev/null
+++ b/module/plugins/hoster/BoltsharingCom.py
@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo
+
+class BoltsharingCom(XFileSharingPro):
+ __name__ = "BoltsharingCom"
+ __type__ = "hoster"
+ __pattern__ = r"http://(?:\w*\.)*?boltsharing.com/\w{12}"
+ __version__ = "0.01"
+ __description__ = """Boltsharing.com hoster plugin"""
+ __author_name__ = ("zoidberg")
+ __author_mail__ = ("zoidberg@mujmail.cz")
+
+ HOSTER_NAME = "boltsharing.com"
+
+getInfo = create_getInfo(BoltsharingCom)
diff --git a/module/plugins/hoster/HellshareCz.py b/module/plugins/hoster/HellshareCz.py
index fd9f2ac32..aa494e34e 100644
--- a/module/plugins/hoster/HellshareCz.py
+++ b/module/plugins/hoster/HellshareCz.py
@@ -25,17 +25,13 @@ class HellshareCz(SimpleHoster):
__name__ = "HellshareCz"
__type__ = "hoster"
__pattern__ = r"(http://(?:.*\.)*hellshare\.(?:cz|com|sk|hu|pl)/[^?]*/\d+).*"
- __version__ = "0.81"
+ __version__ = "0.82"
__description__ = """Hellshare.cz - premium only"""
__author_name__ = ("zoidberg")
- PREMIUM_URL_PATTERN = r"launchFullDownload\('([^']*)'\);"
FILE_NAME_PATTERN = r'<h1 id="filename"[^>]*>(?P<N>[^<]+)</h1>'
FILE_SIZE_PATTERN = r'<strong id="FileSize_master">(?P<S>[0-9.]*)&nbsp;(?P<U>[kKMG])i?B</strong>'
FILE_OFFLINE_PATTERN = r'<h1>File not found.</h1>'
- #FILE_CREDITS_PATTERN = r'<strong class="filesize">(\d+) MB</strong>'
- CREDIT_LEFT_PATTERN = r'<th>(\d+)</th><td>credits'
- DOWNLOAD_AGAIN_PATTERN = r'<p>This file you downloaded already and re-download is for free. </p>'
SHOW_WINDOW_PATTERN = r'<a href="([^?]+/(\d+)/\?do=(fileDownloadButton|relatedFileDownloadButton-\2)-showDownloadWindow)"'
def setup(self):
@@ -47,25 +43,14 @@ class HellshareCz(SimpleHoster):
pyfile.url = re.search(self.__pattern__, pyfile.url).group(1)
self.html = self.load(pyfile.url, decode = True)
self.getFileInfo()
+ if not self.checkTrafficLeft():
+ self.fail("Not enough traffic left for user %s." % self.user)
found = re.search(self.SHOW_WINDOW_PATTERN, self.html)
if not found: self.parseError('SHOW WINDOW')
self.url = "http://www.hellshare.com" + found.group(1)
self.logDebug("DOWNLOAD URL: " + self.url)
- # check credit
- if self.DOWNLOAD_AGAIN_PATTERN in self.html:
- self.logInfo("Downloading again for free")
- else:
- found = re.search(self.CREDIT_LEFT_PATTERN, self.html)
- credits_left = int(found.group(1)) if found else (self.account.getAccountInfo(self.user, True)["trafficleft"] / 1024)
- file_credits = ceil(self.pyfile.size / float(1024 ** 2))
-
- if credits_left < file_credits:
- self.fail("Not enough credit left for user %s: %d (%d needed)." % (self.user, credits_left, file_credits))
- else:
- self.logInfo("Downloading file for %d credits, %d credits left" % (file_credits, credits_left))
-
self.download(self.url)
getInfo = create_getInfo(HellshareCz)
diff --git a/module/plugins/hoster/XFileSharingPro.py b/module/plugins/hoster/XFileSharingPro.py
index d58a7073e..0bf7618c8 100644
--- a/module/plugins/hoster/XFileSharingPro.py
+++ b/module/plugins/hoster/XFileSharingPro.py
@@ -34,7 +34,7 @@ class XFileSharingPro(SimpleHoster):
__name__ = "XFileSharingPro"
__type__ = "hoster"
__pattern__ = r"^unmatchable$"
- __version__ = "0.14"
+ __version__ = "0.15"
__description__ = """XFileSharingPro common hoster base"""
__author_name__ = ("zoidberg")
__author_mail__ = ("zoidberg@mujmail.cz")
@@ -94,7 +94,7 @@ class XFileSharingPro(SimpleHoster):
if not hasattr(self, "HOSTER_NAME"):
self.HOSTER_NAME = re.search(self.__pattern__, self.pyfile.url).group(1)
if not hasattr(self, "DIRECT_LINK_PATTERN"):
- self.DIRECT_LINK_PATTERN = r'(http://(\w+\.%s|\d+\.\d+\.\d+\.\d+)(:\d+/d/|/files/\d+/\w+/)[^"\'<]+)' % self.HOSTER_NAME
+ self.DIRECT_LINK_PATTERN = r'(http://([^/]*?%s|\d+\.\d+\.\d+\.\d+)(:\d+/d/|/files/\d+/\w+/)[^"\'<]+)' % self.HOSTER_NAME
self.captcha = self.errmsg = None
self.passwords = self.getPassword().splitlines()