summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Stefano <l.stickell@yahoo.it> 2014-01-04 21:25:59 +0100
committerGravatar Stefano <l.stickell@yahoo.it> 2014-04-21 16:52:56 +0200
commit095db1973937370be8b98d9379aeae8ea106fea7 (patch)
treec7b94783090e67f0a4959e5d7eed2e9b313d4eea
parentCloudzerNet: fixed #185 (diff)
downloadpyload-095db1973937370be8b98d9379aeae8ea106fea7.tar.xz
WebshareCz: rewritten
Fixes #452 (cherry picked from commit 2429e9666fb849236126d310791f3eed3a622442)
-rw-r--r--pyload/plugins/hoster/WebshareCz.py86
1 files changed, 56 insertions, 30 deletions
diff --git a/pyload/plugins/hoster/WebshareCz.py b/pyload/plugins/hoster/WebshareCz.py
index 1c9ddb290..1a3aabaaa 100644
--- a/pyload/plugins/hoster/WebshareCz.py
+++ b/pyload/plugins/hoster/WebshareCz.py
@@ -1,46 +1,72 @@
# -*- 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.
+############################################################################
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero 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 Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+############################################################################
- You should have received a copy of the GNU General Public License
- along with this program; if not, see <http://www.gnu.org/licenses/>.
+import re
- @author: zoidberg
-"""
+from module.plugins.internal.SimpleHoster import SimpleHoster
+from module.network.RequestFactory import getRequest
-import re
-from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
+
+def getInfo(urls):
+ h = getRequest()
+ for url in urls:
+ h.load(url)
+ fid = re.search(WebshareCz.__pattern__, url).group('ID')
+ api_data = h.load('https://webshare.cz/api/file_info/', post={'ident': fid})
+ if 'File not found' in api_data:
+ file_info = (url, 0, 1, url)
+ else:
+ name = re.search('<name>(.+)</name>', api_data).group(1)
+ size = re.search('<size>(.+)</size>', api_data).group(1)
+ file_info = (name, size, 2, url)
+ yield file_info
class WebshareCz(SimpleHoster):
__name__ = "WebshareCz"
__type__ = "hoster"
- __pattern__ = r"http://(\w+\.)?webshare.cz/(stahnout/)?(?P<ID>\w{10})-.+"
- __version__ = "0.12"
- __description__ = """WebShare.cz"""
- __author_name__ = ("zoidberg")
+ __pattern__ = r"https?://(?:www\.)?webshare.cz/(?:#/)?file/(?P<ID>\w+)"
+ __version__ = "0.13"
+ __description__ = """WebShare.cz hoster plugin"""
+ __author_name__ = ("stickell")
+ __author_mail__ = ("l.stickell@yahoo.it")
- FILE_NAME_PATTERN = r'<h3>Stahujete soubor: </h3>\s*<div class="textbox">(?P<N>[^<]+)</div>'
- FILE_SIZE_PATTERN = r'<h3>Velikost souboru je: </h3>\s*<div class="textbox">(?P<S>[^<]+)</div>'
- FILE_OFFLINE_PATTERN = r'<h3>Soubor ".*?" nebyl nalezen.</h3>'
+ def handleFree(self):
+ api_data = self.load('https://webshare.cz/api/file_link/', post={'ident': self.fid})
+ self.logDebug("API data: " + api_data)
+ m = re.search('<link>(.+)</link>', api_data)
+ if not m:
+ self.parseError('Unable to detect direct link')
+ direct = m.group(1)
+ self.logDebug("Direct link: " + direct)
+ self.download(direct, disposition=True)
- DOWNLOAD_LINK_PATTERN = r'id="download_link" href="(?P<url>.*?)"'
+ def getFileInfo(self):
+ self.logDebug("URL: %s" % self.pyfile.url)
- def handleFree(self):
- url_a = re.search(r"(var l.*)", self.html).group(1)
- url_b = re.search(r"(var keyStr.*)", self.html).group(1)
- url = self.js.eval("%s\n%s\ndec(l)" % (url_a, url_b))
+ self.fid = re.search(self.__pattern__, self.pyfile.url).group('ID')
- self.logDebug('Download link: ' + url)
- self.download(url)
+ self.load(self.pyfile.url)
+ api_data = self.load('https://webshare.cz/api/file_info/', post={'ident': self.fid})
+ if 'File not found' in api_data:
+ self.offline()
+ else:
+ self.pyfile.name = re.search('<name>(.+)</name>', api_data).group(1)
+ self.pyfile.size = re.search('<size>(.+)</size>', api_data).group(1)
-getInfo = create_getInfo(WebshareCz)
+ self.logDebug("FILE NAME: %s FILE SIZE: %s" % (self.pyfile.name, self.pyfile.size))