summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2011-03-17 14:13:05 +0100
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2011-03-17 14:13:05 +0100
commita5c54449530aa558222a47354e7873b5203a3374 (patch)
tree046ad60aaf4120e16854a386e5ded7427d74ce48
parentAdded tag v0.4.5 for changeset 73cb51958a1d (diff)
downloadpyload-a5c54449530aa558222a47354e7873b5203a3374.tar.xz
closed #254
-rw-r--r--module/PluginThread.py6
-rw-r--r--module/database/DatabaseBackend.py16
-rw-r--r--module/database/FileDatabase.py4
-rw-r--r--module/plugins/accounts/ShareCx.py47
-rw-r--r--module/plugins/hoster/ShareCx.py30
-rw-r--r--module/plugins/hoster/UploadedTo.py12
6 files changed, 87 insertions, 28 deletions
diff --git a/module/PluginThread.py b/module/PluginThread.py
index 391844a62..c91ca1121 100644
--- a/module/PluginThread.py
+++ b/module/PluginThread.py
@@ -181,7 +181,11 @@ class DownloadThread(PluginThread):
continue
except Abort:
- self.m.log.info(_("Download aborted: %s") % pyfile.name)
+ try:
+ self.m.log.info(_("Download aborted: %s") % pyfile.name)
+ except :
+ pass
+
pyfile.setStatus("aborted")
self.clean(pyfile)
diff --git a/module/database/DatabaseBackend.py b/module/database/DatabaseBackend.py
index 02e09b3b3..9e9e73e43 100644
--- a/module/database/DatabaseBackend.py
+++ b/module/database/DatabaseBackend.py
@@ -16,8 +16,6 @@
@author: RaNaN
@author: mkaay
"""
-
-from threading import Lock
from threading import Thread
from threading import Event
from os import remove
@@ -97,7 +95,11 @@ class DatabaseJob():
try:
self.result = self.f(*self.args, **self.kwargs)
except Exception, e:
- print "Database Error @", self.f.__name__, self.args[1:], self.kwargs, e
+ try:
+ print "Database Error @", self.f.__name__, self.args[1:], self.kwargs, e
+ except:
+ pass
+
print_exc()
self.exception = e
finally:
@@ -147,10 +149,6 @@ class DatabaseBackend(Thread):
self.conn.close()
break
j.processJob()
- if j.exception:
- self.conn.rollback()
- else:
- self.conn.commit()
@style.queue
def shutdown(self):
@@ -259,6 +257,10 @@ class DatabaseBackend(Thread):
@style.async
def commit(self):
self.conn.commit()
+
+ @style.queue
+ def syncSave(self):
+ self.conn.commit()
@style.async
def rollback(self):
diff --git a/module/database/FileDatabase.py b/module/database/FileDatabase.py
index 528bf666d..5c976eda4 100644
--- a/module/database/FileDatabase.py
+++ b/module/database/FileDatabase.py
@@ -756,10 +756,6 @@ class FileMethods():
def restartPackage(self, id):
self.c.execute('UPDATE links SET status=3 WHERE package=?', (str(id),))
- @style.async
- def syncSave(self):
- self.commit()
-
@style.queue
def getPackage(self, id):
"""return package instance from id"""
diff --git a/module/plugins/accounts/ShareCx.py b/module/plugins/accounts/ShareCx.py
new file mode 100644
index 000000000..c4aac257f
--- /dev/null
+++ b/module/plugins/accounts/ShareCx.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+
+"""
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License,
+ or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+ @author: RaNaN
+"""
+
+import re
+from time import strptime, mktime
+
+from module.plugins.Account import Account
+
+class ShareCx(Account):
+ __name__ = "ShareCx"
+ __version__ = "0.1"
+ __type__ = "account"
+ __description__ = """share.cx account plugin"""
+ __author_name__ = ("RaNaN")
+ __author_mail__ = ("RaNaN@pyload.org")
+
+ def loadAccountInfo(self, user, req):
+ page = req.load("http://www.share.cx/myaccount")
+
+ valid = re.search("<TR><TD>Valid till</TD><TD>([0-9\.]+)</TD></TR>", page, re.IGNORECASE).group(1)
+ valid = int(mktime(strptime(valid, "%d.%m.%Y")))
+
+ return {"trafficleft": -1, "validuntil" : valid}
+
+
+ def login(self, user, data,req):
+ req.cj.setCookie("share.cx", "lang", "english")
+ page = req.load("http://www.share.cx", None, { "redirect" : "http://www.share.cx/", "login": user, "password" : data['password'], "op" : "login"})
+
+ if "Incorrect Login or Password" in page:
+ self.wrongPassword() \ No newline at end of file
diff --git a/module/plugins/hoster/ShareCx.py b/module/plugins/hoster/ShareCx.py
index d1a78f0dc..8381c7909 100644
--- a/module/plugins/hoster/ShareCx.py
+++ b/module/plugins/hoster/ShareCx.py
@@ -36,15 +36,18 @@ class ShareCx(Hoster):
__name__ = "ShareCx"
__type__ = "hoster"
__pattern__ = r"http://[\w\.]*?share\.cx/(files|videos)/\d+"
- __version__ = "0.2"
+ __version__ = "0.3"
__description__ = """Share.cx Download Hoster"""
__author_name__ = ("jeix")
__author_mail__ = ("jeix@hasnomail.de")
-
-
- def setup(self):
- self.multiDL = False
-
+
+
+ def init(self):
+ if self.account:
+ self.multiDL = True
+ else:
+ self.multiDL = False
+
def process(self, pyfile):
self.pyfile = pyfile
@@ -53,13 +56,16 @@ class ShareCx(Hoster):
self.offline()
pyfile.name = self.get_file_name()
- self.doDownload()
+ if self.account:
+ self.handlePremium()
+ else:
+ self.handleFree()
def download_html(self):
- self.html = self.load(self.pyfile.url)
+ self.html = self.load(self.pyfile.url, cookies=False)
- def doDownload(self):
+ def handleFree(self):
""" returns the absolute downloadable filepath
"""
if self.html is None:
@@ -145,7 +151,7 @@ class ShareCx(Hoster):
if self.html is None:
self.download_html()
- name = re.search(r'<title>Download: (.*?) at Share.cx</title>', self.html).group(1)
+ name = re.search(r'/></span>([^/]+)</h3>', self.html).group(1)
return name
def file_exists(self):
@@ -158,5 +164,7 @@ class ShareCx(Hoster):
return False
return True
-
+
+ def handlePremium(self):
+ self.download(self.pyfile.url)
diff --git a/module/plugins/hoster/UploadedTo.py b/module/plugins/hoster/UploadedTo.py
index 2dff549a4..311170c49 100644
--- a/module/plugins/hoster/UploadedTo.py
+++ b/module/plugins/hoster/UploadedTo.py
@@ -35,7 +35,7 @@ class UploadedTo(Hoster):
__name__ = "UploadedTo"
__type__ = "hoster"
__pattern__ = r"http://(?:www\.)?u(?:p)?l(?:oaded)?\.to/(?:file/|\?id=)?(.+)"
- __version__ = "0.4"
+ __version__ = "0.41"
__description__ = """Uploaded.to Download Hoster"""
__author_name__ = ("spoob", "mkaay")
__author_mail__ = ("spoob@pyload.org", "mkaay@mkaay.de")
@@ -45,11 +45,14 @@ class UploadedTo(Hoster):
self.html = None
self.data = {}
self.multiDL = False
+ self.resumeDownload = False
self.url = False
if self.account:
- self.multiDL = True
- self.chunkLimit = -1
- self.resumeDownload = True
+ self.premium = self.account.getAccountInfo(self.user)
+ if self.premium:
+ self.multiDL = True
+ self.chunkLimit = -1
+ self.resumeDownload = True
self.pyfile.url = self.cleanUrl(self.pyfile.url)
@@ -67,7 +70,6 @@ class UploadedTo(Hoster):
pyfile.name = self.data["name"]
# self.pyfile.name = self.get_file_name()
- self.premium = self.account.getAccountInfo(self.user)
if self.account and self.premium:
self.handlePremium()