From fc3d05bfc4f026efbdc0e9299a2fcbb463397f78 Mon Sep 17 00:00:00 2001 From: zoidberg10 Date: Tue, 25 Sep 2012 23:21:23 +0200 Subject: filebeer.info (free only) - closed #687 --- module/plugins/hoster/FilebeerInfo.py | 88 +++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 module/plugins/hoster/FilebeerInfo.py (limited to 'module/plugins/hoster/FilebeerInfo.py') diff --git a/module/plugins/hoster/FilebeerInfo.py b/module/plugins/hoster/FilebeerInfo.py new file mode 100644 index 000000000..d7d3640a8 --- /dev/null +++ b/module/plugins/hoster/FilebeerInfo.py @@ -0,0 +1,88 @@ +# -*- 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 . + + @author: zoidberg +""" + +import re +from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo +from module.plugins.ReCaptcha import ReCaptcha +from pycurl import FOLLOWLOCATION + +class FilebeerInfo(SimpleHoster): + __name__ = "FilebeerInfo" + __type__ = "hoster" + __pattern__ = r"http://(?:www\.)?filebeer\.info/(?!\d*~f)\w+" + __version__ = "0.01" + __description__ = """Filebeer.info plugin""" + __author_name__ = ("zoidberg") + __author_mail__ = ("zoidberg@mujmail.cz") + + FILE_INFO_PATTERN = r'\s*(?P.+?) \((?P[0-9.]+) (?P[kKMG])i?B\)(
\s*)?
' + FILE_OFFLINE_PATTERN = r'Upload Files - FileBeer.info' + + RECAPTCHA_KEY_PATTERN = r'http://www.google.com/recaptcha/api/(?:challenge|noscript)?k=(\w+)' + FREE_URL_PATTERN = r"" + WAIT_TIME_PATTERN = r"\(\'\.download-timer-seconds\'\)\.html\((\d+)\)" + + def setup(self): + self.resumeDownload = True + self.multiDL = False + + def handleFree(self): + if not 'id="form-join"' in self.html: + found = re.search(self.FREE_URL_PATTERN, self.html) + url = found.group(1) if found else "%s?d=1" % self.pyfile.url.rstrip('/') + + found = re.search(self.WAIT_TIME_PATTERN, self.html) + self.setWait(int(found.group(1)) if found else 60) + self.wait() + + self.html = self.load(url) + + action, inputs = self.parseHtmlForm('form-join') + if not action: + self.retry(max_tries=5, wait_time=60, reason='Form not found') + + found = re.search(self.RECAPTCHA_KEY_PATTERN, self.html) + recaptcha_key = found.group(1) if found else '6LeuAc4SAAAAAOSry8eo2xW64K1sjHEKsQ5CaS10' + + recaptcha = ReCaptcha(self) + for i in range(5): + inputs['recaptcha_challenge_field'], inputs['recaptcha_response_field'] = recaptcha.challenge(recaptcha_key) + + self.req.http.c.setopt(FOLLOWLOCATION, 0) + self.html = self.load(action, post = inputs) + self.header = self.req.http.header + self.req.http.c.setopt(FOLLOWLOCATION, 1) + + found = re.search("Location\s*:\s*(.*)", self.header, re.I) + if found: + download_url = found.group(1).strip() + self.correctCaptcha() + break + elif 'Captcha confirmation text is invalid' in self.html: + self.invalidCaptcha() + else: + self.parseError('download url') + + else: self.fail("No valid captcha solution received") + + self.multiDL = True + + self.req.http.lastURL = action + self.download(download_url) + +getInfo = create_getInfo(FilebeerInfo) \ No newline at end of file -- cgit v1.2.3 From df0b35be0bc0e2b13be8c6787bbce03082f0e08e Mon Sep 17 00:00:00 2001 From: zoidberg10 Date: Thu, 27 Sep 2012 20:28:32 +0200 Subject: add filebeer.info/fastshare.cz/quickshare.cz premium, closed #688 --- module/plugins/hoster/FilebeerInfo.py | 46 ++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 17 deletions(-) (limited to 'module/plugins/hoster/FilebeerInfo.py') diff --git a/module/plugins/hoster/FilebeerInfo.py b/module/plugins/hoster/FilebeerInfo.py index d7d3640a8..a51f70a09 100644 --- a/module/plugins/hoster/FilebeerInfo.py +++ b/module/plugins/hoster/FilebeerInfo.py @@ -24,37 +24,42 @@ from pycurl import FOLLOWLOCATION class FilebeerInfo(SimpleHoster): __name__ = "FilebeerInfo" __type__ = "hoster" - __pattern__ = r"http://(?:www\.)?filebeer\.info/(?!\d*~f)\w+" - __version__ = "0.01" + __pattern__ = r"http://(?:www\.)?filebeer\.info/(?!\d*~f)(?P\w+).*" + __version__ = "0.02" __description__ = """Filebeer.info plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("zoidberg@mujmail.cz") + FILE_NAME_PATTERN = r'Filename:\s*\s*\s*(?P.+?)  ' + FILE_SIZE_PATTERN = r'Filesize:\s*\s*\s*(?P[0-9.]+) (?P[kKMG])i?B' FILE_INFO_PATTERN = r'\s*(?P.+?) \((?P[0-9.]+) (?P[kKMG])i?B\)(
\s*)?
' FILE_OFFLINE_PATTERN = r'Upload Files - FileBeer.info' + FILE_URL_REPLACEMENTS = [(__pattern__, 'http://filebeer.info/\g~i')] + RECAPTCHA_KEY_PATTERN = r'http://www.google.com/recaptcha/api/(?:challenge|noscript)?k=(\w+)' - FREE_URL_PATTERN = r"
" + DOWNLOAD_URL_PATTERN = r"\[url\](.+?)\[/url\]" WAIT_TIME_PATTERN = r"\(\'\.download-timer-seconds\'\)\.html\((\d+)\)" def setup(self): self.resumeDownload = True - self.multiDL = False - - def handleFree(self): - if not 'id="form-join"' in self.html: - found = re.search(self.FREE_URL_PATTERN, self.html) - url = found.group(1) if found else "%s?d=1" % self.pyfile.url.rstrip('/') - - found = re.search(self.WAIT_TIME_PATTERN, self.html) - self.setWait(int(found.group(1)) if found else 60) - self.wait() - - self.html = self.load(url) + self.multiDL = self.premium + def handleFree(self): + url = self.getDownloadUrl() + + for i in range(5): + self.html = self.load(url) + if i == 4 or 'id="form-join"' in self.html: + break + else: + found = re.search(self.WAIT_TIME_PATTERN, self.html) + self.setWait(int(found.group(1)) +1 if found else 61) + self.wait() + action, inputs = self.parseHtmlForm('form-join') if not action: - self.retry(max_tries=5, wait_time=60, reason='Form not found') + self.fail('Form not found') found = re.search(self.RECAPTCHA_KEY_PATTERN, self.html) recaptcha_key = found.group(1) if found else '6LeuAc4SAAAAAOSry8eo2xW64K1sjHEKsQ5CaS10' @@ -83,6 +88,13 @@ class FilebeerInfo(SimpleHoster): self.multiDL = True self.req.http.lastURL = action - self.download(download_url) + self.download(download_url) + + def handlePremium(self): + self.download(self.getDownloadUrl()) + + def getDownloadUrl(self): + found = re.search(self.DOWNLOAD_URL_PATTERN, self.html) + return ("%s?d=1" % found.group(1)) if found else ("http://filebeer.info/%s?d=1" % self.file_info['ID']) getInfo = create_getInfo(FilebeerInfo) \ No newline at end of file -- cgit v1.2.3 From 176e44d0565d854291b4f48e1ceabd39536d5948 Mon Sep 17 00:00:00 2001 From: Stefano Date: Wed, 20 Mar 2013 20:45:38 +0100 Subject: FilebeerInfo: Dead hoster --- module/plugins/hoster/FilebeerInfo.py | 93 ++--------------------------------- 1 file changed, 4 insertions(+), 89 deletions(-) (limited to 'module/plugins/hoster/FilebeerInfo.py') diff --git a/module/plugins/hoster/FilebeerInfo.py b/module/plugins/hoster/FilebeerInfo.py index a51f70a09..216ecfbca 100644 --- a/module/plugins/hoster/FilebeerInfo.py +++ b/module/plugins/hoster/FilebeerInfo.py @@ -1,100 +1,15 @@ # -*- 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. +from module.plugins.internal.DeadHoster import DeadHoster, create_getInfo - 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 . - - @author: zoidberg -""" - -import re -from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo -from module.plugins.ReCaptcha import ReCaptcha -from pycurl import FOLLOWLOCATION - -class FilebeerInfo(SimpleHoster): +class FilebeerInfo(DeadHoster): __name__ = "FilebeerInfo" __type__ = "hoster" __pattern__ = r"http://(?:www\.)?filebeer\.info/(?!\d*~f)(?P\w+).*" - __version__ = "0.02" + __version__ = "0.03" __description__ = """Filebeer.info plugin""" __author_name__ = ("zoidberg") __author_mail__ = ("zoidberg@mujmail.cz") - FILE_NAME_PATTERN = r'Filename:\s*\s*\s*(?P.+?)  ' - FILE_SIZE_PATTERN = r'Filesize:\s*\s*\s*(?P[0-9.]+) (?P[kKMG])i?B' - FILE_INFO_PATTERN = r'\s*(?P.+?) \((?P[0-9.]+) (?P[kKMG])i?B\)(
\s*)?
' - FILE_OFFLINE_PATTERN = r'Upload Files - FileBeer.info' - - FILE_URL_REPLACEMENTS = [(__pattern__, 'http://filebeer.info/\g~i')] - - RECAPTCHA_KEY_PATTERN = r'http://www.google.com/recaptcha/api/(?:challenge|noscript)?k=(\w+)' - DOWNLOAD_URL_PATTERN = r"\[url\](.+?)\[/url\]" - WAIT_TIME_PATTERN = r"\(\'\.download-timer-seconds\'\)\.html\((\d+)\)" - - def setup(self): - self.resumeDownload = True - self.multiDL = self.premium - - def handleFree(self): - url = self.getDownloadUrl() - - for i in range(5): - self.html = self.load(url) - if i == 4 or 'id="form-join"' in self.html: - break - else: - found = re.search(self.WAIT_TIME_PATTERN, self.html) - self.setWait(int(found.group(1)) +1 if found else 61) - self.wait() - - action, inputs = self.parseHtmlForm('form-join') - if not action: - self.fail('Form not found') - - found = re.search(self.RECAPTCHA_KEY_PATTERN, self.html) - recaptcha_key = found.group(1) if found else '6LeuAc4SAAAAAOSry8eo2xW64K1sjHEKsQ5CaS10' - - recaptcha = ReCaptcha(self) - for i in range(5): - inputs['recaptcha_challenge_field'], inputs['recaptcha_response_field'] = recaptcha.challenge(recaptcha_key) - - self.req.http.c.setopt(FOLLOWLOCATION, 0) - self.html = self.load(action, post = inputs) - self.header = self.req.http.header - self.req.http.c.setopt(FOLLOWLOCATION, 1) - - found = re.search("Location\s*:\s*(.*)", self.header, re.I) - if found: - download_url = found.group(1).strip() - self.correctCaptcha() - break - elif 'Captcha confirmation text is invalid' in self.html: - self.invalidCaptcha() - else: - self.parseError('download url') - - else: self.fail("No valid captcha solution received") - - self.multiDL = True - - self.req.http.lastURL = action - self.download(download_url) - - def handlePremium(self): - self.download(self.getDownloadUrl()) - - def getDownloadUrl(self): - found = re.search(self.DOWNLOAD_URL_PATTERN, self.html) - return ("%s?d=1" % found.group(1)) if found else ("http://filebeer.info/%s?d=1" % self.file_info['ID']) - + getInfo = create_getInfo(FilebeerInfo) \ No newline at end of file -- cgit v1.2.3