summaryrefslogtreecommitdiffstats
path: root/module/plugins/hoster/FilefactoryCom.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/hoster/FilefactoryCom.py')
-rw-r--r--module/plugins/hoster/FilefactoryCom.py50
1 files changed, 25 insertions, 25 deletions
diff --git a/module/plugins/hoster/FilefactoryCom.py b/module/plugins/hoster/FilefactoryCom.py
index 21b803649..1ac7550fc 100644
--- a/module/plugins/hoster/FilefactoryCom.py
+++ b/module/plugins/hoster/FilefactoryCom.py
@@ -1,38 +1,41 @@
# -*- coding: utf-8 -*-
-############################################################################
-# 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/>. #
-############################################################################
import re
-from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo
+from module.network.RequestFactory import getURL
+from module.plugins.internal.SimpleHoster import SimpleHoster, parseFileInfo
+
+
+def getInfo(urls):
+ for url in urls:
+ h = getURL(url, just_header=True)
+ m = re.search(r'Location: (.+)\r\n', h)
+ if m and not re.match(m.group(1), FilefactoryCom.__pattern__): # It's a direct link! Skipping
+ yield (url, 0, 3, url)
+ else: # It's a standard html page
+ file_info = parseFileInfo(FilefactoryCom, url, getURL(url))
+ yield file_info
class FilefactoryCom(SimpleHoster):
__name__ = "FilefactoryCom"
__type__ = "hoster"
+ __version__ = "0.50"
+
__pattern__ = r'https?://(?:www\.)?filefactory\.com/file/(?P<id>[a-zA-Z0-9]+)'
- __version__ = "0.48"
+
__description__ = """Filefactory.com hoster plugin"""
__author_name__ = "stickell"
__author_mail__ = "l.stickell@yahoo.it"
FILE_INFO_PATTERN = r'<div id="file_name"[^>]*>\s*<h2>(?P<N>[^<]+)</h2>\s*<div id="file_info">\s*(?P<S>[\d.]+) (?P<U>\w+) uploaded'
- DIRECT_LINK_PATTERN = r'<a href="(https?://[^"]+)"[^>]*><i[^>]*></i> Download with FileFactory Premium</a>'
- FILE_OFFLINE_PATTERN = r'<h2>File Removed</h2>'
+ LINK_PATTERN = r'<a href="(https?://[^"]+)"[^>]*><i[^>]*></i> Download with FileFactory Premium</a>'
+ OFFLINE_PATTERN = r'<h2>File Removed</h2>|This file is no longer available'
PREMIUM_ONLY_PATTERN = r'>Premium Account Required<'
+ SH_COOKIES = [(".filefactory.com", "locale", "en_US.utf8")]
+
+
def handleFree(self):
self.html = self.load(self.pyfile.url, decode=True)
if "Currently only Premium Members can download files larger than" in self.html:
@@ -53,7 +56,7 @@ class FilefactoryCom(SimpleHoster):
else: # This section could be completely useless now
# Load the page that contains the direct link
url = re.search(r"document\.location\.host \+\s*'(.+)';", self.html)
- if not url:
+ if url is None:
self.parseError('Unable to detect free link')
url = 'http://www.filefactory.com' + url.group(1)
self.html = self.load(url, decode=True)
@@ -93,14 +96,11 @@ class FilefactoryCom(SimpleHoster):
else:
self.logInfo('You could enable "Direct Downloads" on http://filefactory.com/account/')
html = self.load(self.pyfile.url)
- found = re.search(self.DIRECT_LINK_PATTERN, html)
- if found:
- url = found.group(1)
+ m = re.search(self.LINK_PATTERN, html)
+ if m:
+ url = m.group(1)
else:
self.parseError('Unable to detect premium direct link')
self.logDebug('DIRECT PREMIUM LINK: ' + url)
self.download(url, disposition=True)
-
-
-getInfo = create_getInfo(FilefactoryCom)