summaryrefslogtreecommitdiffstats
path: root/module/plugins/hoster
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/hoster')
-rw-r--r--module/plugins/hoster/BasePlugin.py25
-rw-r--r--module/plugins/hoster/DepositfilesCom.py46
-rw-r--r--module/plugins/hoster/FileserveCom.py92
-rw-r--r--module/plugins/hoster/FreakshareNet.py111
-rw-r--r--module/plugins/hoster/Ftp.py58
-rw-r--r--module/plugins/hoster/HotfileCom.py127
-rw-r--r--module/plugins/hoster/MegauploadCom.py100
-rw-r--r--module/plugins/hoster/MegavideoCom.py111
-rw-r--r--module/plugins/hoster/MyvideoDe.py43
-rw-r--r--module/plugins/hoster/NetloadIn.py212
-rw-r--r--module/plugins/hoster/PornhostCom.py76
-rw-r--r--module/plugins/hoster/PornhubCom.py65
-rw-r--r--module/plugins/hoster/RapidshareCom.py188
-rw-r--r--module/plugins/hoster/RedtubeCom.py56
-rw-r--r--module/plugins/hoster/ShareCx.py155
-rw-r--r--module/plugins/hoster/ShareonlineBiz.py128
-rw-r--r--module/plugins/hoster/ShragleCom.py70
-rw-r--r--module/plugins/hoster/StorageTo.py99
-rw-r--r--module/plugins/hoster/UploadedTo.py151
-rw-r--r--module/plugins/hoster/Xdcc.py71
-rw-r--r--module/plugins/hoster/YoupornCom.py60
-rw-r--r--module/plugins/hoster/YoutubeCom.py48
-rw-r--r--module/plugins/hoster/ZippyshareCom.py60
-rw-r--r--module/plugins/hoster/__init__.py0
24 files changed, 0 insertions, 2152 deletions
diff --git a/module/plugins/hoster/BasePlugin.py b/module/plugins/hoster/BasePlugin.py
deleted file mode 100644
index 09545d493..000000000
--- a/module/plugins/hoster/BasePlugin.py
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from module.plugins.Hoster import Hoster
-
-class BasePlugin(Hoster):
- __name__ = "BasePlugin"
- __type__ = "hoster"
- __pattern__ = r"^unmatchable$"
- __version__ = "0.1"
- __description__ = """Base Plugin when any other didnt fit"""
- __author_name__ = ("RaNaN")
- __author_mail__ = ("RaNaN@pyload.org")
-
- def process(self, pyfile):
- """main function"""
-
- if pyfile.url.startswith("http://"):
-
- pyfile.name = re.findall("([^\/=]+)", pyfile.url)[-1]
- self.download(pyfile.url)
-
- else:
- self.fail("No Plugin matched and not a downloadable url.") \ No newline at end of file
diff --git a/module/plugins/hoster/DepositfilesCom.py b/module/plugins/hoster/DepositfilesCom.py
deleted file mode 100644
index c91341887..000000000
--- a/module/plugins/hoster/DepositfilesCom.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-import urllib
-from module.plugins.Hoster import Hoster
-
-class DepositfilesCom(Hoster):
- __name__ = "DepositfilesCom"
- __type__ = "hoster"
- __pattern__ = r"http://[\w\.]*?depositfiles\.com(/\w{1,3})?/files/[\w]+"
- __version__ = "0.1"
- __description__ = """Depositfiles.com Download Hoster"""
- __author_name__ = ("spoob")
- __author_mail__ = ("spoob@pyload.org")
-
- def setup(self):
- self.req.canContinue = self.multiDL = True if self.account else False
-
- def process(self, pyfile):
- self.html = self.load(self.pyfile.url, cookies=False if self.account else False)
-
- if re.search(r"Such file does not exist or it has been removed for infringement of copyrights", self.html):
- self.offline()
-
- if not self.account:
- self.handleFree()
-
- pyfile.name = re.search('File name: <b title="(.*)">', self.html).group(1)
-
- link = urllib.unquote(re.search('<form action="(http://.+?\.depositfiles.com/.+?)" method="get"', self.html).group(1))
- self.download(link)
-
- def handleFree(self):
- if re.search(r'File is checked, please try again in a minute.', self.html) != None:
- self.log.info("DepositFiles.com: The file is being checked. Waiting 1 minute.")
- self.setWait(61)
- self.wait()
-
- if re.search(r'Such file does not exist or it has been removed for infringement of copyrights', self.html) != None:
- self.offline()
-
- self.html = self.load(self.pyfile.url, post={"gateway_result":"1"})
- wait_time = int(re.search(r'<span id="download_waiter_remain">(.*?)</span>', self.html).group(1))
- self.setWait(wait_time)
- self.log.debug("DepositFiles.com: Waiting %d seconds." % wait_time)
diff --git a/module/plugins/hoster/FileserveCom.py b/module/plugins/hoster/FileserveCom.py
deleted file mode 100644
index ff09d9a0a..000000000
--- a/module/plugins/hoster/FileserveCom.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-from module.plugins.Hoster import Hoster
-from module.plugins.ReCaptcha import ReCaptcha
-
-from module.network.Request import getURL
-
-def getInfo(urls):
- result = []
-
- for url in urls:
- html = getURL(url)
- if re.search(r'<h1>File not available</h1>', html):
- result.append((url, 0, 1, url))
- continue
-
- size = re.search(r"<span><strong>(.*?) MB</strong>", html).group(1)
- size = int(float(size)*1024*1024)
-
- name = re.search('<h1>(.*?)<br/></h1>', html).group(1)
- result.append((name, size, 2, url))
-
- yield result
-
-class FileserveCom(Hoster):
- __name__ = "FileserveCom"
- __type__ = "hoster"
- __pattern__ = r"http://(www\.)?fileserve\.com/file/.*?(/.*)?"
- __version__ = "0.2"
- __description__ = """Fileserve.Com File Download Hoster"""
- __author_name__ = ("jeix", "mkaay")
- __author_mail__ = ("jeix@hasnomail.de", "mkaay@mkaay.de")
-
- def setup(self):
- self.req.canContinue = self.multiDL = True if self.account else False
-
- def process(self, pyfile):
-
- self.html = self.load(self.pyfile.url, cookies=False if self.account else True)
- if re.search(r'<h1>File not available</h1>', self.html) != None:
- self.offline
-
- self.pyfile.name = re.search('<h1>(.*?)<br/></h1>', self.html).group(1)
-
- if self.account:
- self.handlePremium()
- else:
- self.handleFree()
-
- def handlePremium(self):
- self.download(self.pyfile.url, post={"download":"premium"}, cookies=True)
-
- def handleFree(self):
-
- if r'<div id="captchaArea" style="display:none;">' in self.html or \
- r'/showCaptcha\(\);' in self.html:
- # we got a captcha
- id = re.search(r"var reCAPTCHA_publickey='(.*?)';", self.html).group(1)
- recaptcha = ReCaptcha(self)
- challenge, code = recaptcha.challenge(id)
-
- shortencode = re.search(r'name="recaptcha_shortencode_field" value="(.*?)"', self.html).group(1)
-
- self.html = self.load(r'http://www.fileserve.com/checkReCaptcha.php', post={'recaptcha_challenge_field':challenge,
- 'recaptcha_response_field':code, 'recaptcha_shortencode_field': shortencode})
-
- if r'incorrect-captcha-sol' in self.html:
- self.retry()
-
- html = self.load(self.pyfile.url, post={"downloadLink":"wait"})
-
- wait_time = 30
- m = re.search(r'<span>(.*?)\sSekunden</span>', html)
- if m != None:
- wait_time = int( m.group(1).split('.')[0] ) + 1
-
- m = re.search(r'You need to wait (.*?) seconds to start another download.', html)
- if m != None:
- wait_time = int( m.group(1) )
- self.wantReconnect = True
-
- if r'Your download link has expired.' in html:
- self.retry()
-
- self.log.debug("%s: Waiting %d seconds." % (self.__name__, wait_time))
- self.setWait(wait_time)
- self.wait()
-
- self.load(self.pyfile.url, post={"downloadLink":"show"})
-
- self.download(self.pyfile.url, post={"download":"normal"})
diff --git a/module/plugins/hoster/FreakshareNet.py b/module/plugins/hoster/FreakshareNet.py
deleted file mode 100644
index 1bb36737e..000000000
--- a/module/plugins/hoster/FreakshareNet.py
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from module.plugins.Hoster import Hoster
-from time import time
-
-
-class FreakshareNet(Hoster):
- __name__ = "FreakshareNet"
- __type__ = "hoster"
- __pattern__ = r"http://(?:www\.)?freakshare\.net/files/\S*?/"
- __version__ = "0.2"
- __description__ = """Freakshare.com Download Hoster"""
- __author_name__ = ("sitacuisses","spoob","mkaay")
- __author_mail__ = ("sitacuisses@yahoo.de","spoob@pyload.org","mkaay@mkaay.de")
-
- def setup(self):
- self.html = None
- self.wantReconnect = False
- self.multiDL = False
- self.req_opts = []
-
- def process(self, pyfile):
- self.pyfile = pyfile
- self.prepare()
- self.get_file_url()
-
- self.download(self.pyfile.url, post=self.req_opts)
-
-
- def prepare(self):
- pyfile = self.pyfile
-
- self.wantReconnect = False
-
- self.download_html()
-
- if not self.file_exists():
- self.offline
-
- self.setWait( self.get_waiting_time() )
-
- pyfile.name = self.get_file_name()
-
- self.wait()
-
- return True
-
- def download_html(self):
- url = self.pyfile.url
- self.html = self.load(url, cookies=True)
-
- def get_file_url(self):
- """ returns the absolute downloadable filepath
- """
- if self.html == None:
- self.download_html()
- if not self.wantReconnect:
- self.req_opts = self.get_download_options() # get the Post options for the Request
- #file_url = self.pyfile.url
- #return file_url
- else:
- self.offline()
-
- def get_file_name(self):
- if self.html == None:
- self.download_html()
- if not self.wantReconnect:
- file_name = re.search(r"<h1\sclass=\"box_heading\"\sstyle=\"text-align:center\;\">([^ ]+)", self.html).group(1)
- return file_name
- else:
- return self.pyfile.url
-
- def get_waiting_time(self):
- if self.html == None:
- self.download_html()
- timestring = re.search('\s*var\stime\s=\s(\d*?)\.\d*;', self.html).group(1)
- if timestring:
- sec = int(timestring) + 1 #add 1 sec as tenths of seconds are cut off
- else:
- sec = 0
- return sec
-
- def file_exists(self):
- """ returns True or False
- """
- if self.html == None:
- self.download_html()
- if re.search(r"Sorry, this Download doesnt exist anymore", self.html) != None:
- return False
- else:
- return True
-
- def get_download_options(self):
- re_envelope = re.search(r".*?value=\"Free\sDownload\".*?\n*?(.*?<.*?>\n*)*?\n*\s*?</form>", self.html).group(0) #get the whole request
- to_sort = re.findall(r"<input\stype=\"hidden\"\svalue=\"(.*?)\"\sname=\"(.*?)\"\s\/>", re_envelope)
- request_options = []
-
- for item in to_sort: #Name value pairs are output reversed from regex, so we reorder them
- request_options.append((item[1], item[0]))
-
- herewego = self.load(self.pyfile.url, None, request_options, cookies=True) # the actual download-Page
-
- to_sort = re.findall(r"<input\stype=\".*?\"\svalue=\"(\S*?)\".*?name=\"(\S*?)\"\s.*?\/>", herewego)
- request_options = []
-
- for item in to_sort: #Same as above
- request_options.append((item[1], item[0]))
-
- return request_options \ No newline at end of file
diff --git a/module/plugins/hoster/Ftp.py b/module/plugins/hoster/Ftp.py
deleted file mode 100644
index 9303b00c8..000000000
--- a/module/plugins/hoster/Ftp.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# -*- 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: jeix
- @author: mkaay
-"""
-
-import logging
-from os.path import exists
-from os.path import join
-from os.path import exists
-from os import makedirs
-import sys
-
-from module.plugins.Hoster import Hoster
-
-
-class Ftp(Hoster):
- __name__ = "Ftp"
- __version__ = "0.3"
- __pattern__ = r'ftp://(.*?:.*?@)?.*?/.*' # ftp://user:password@ftp.server.org/path/to/file
- __type__ = "hoster"
- __description__ = """A Plugin that allows you to download from an from an ftp directory"""
- __author_name__ = ("jeix", "mkaay")
- __author_mail__ = ("jeix@hasnomail.com", "mkaay@mkaay.de")
-
- def process(self, pyfile):
- self.req = pyfile.m.core.requestFactory.getRequest(self.__name__, type="FTP")
- pyfile.name = self.pyfile.url.rpartition('/')[2]
-
- self.doDownload(pyfile.url, pyfile.name)
-
- def doDownload(self, url, filename):
- self.pyfile.setStatus("downloading")
-
- download_folder = self.core.config['general']['download_folder']
- location = join(download_folder, self.pyfile.package().folder.decode(sys.getfilesystemencoding()))
- if not exists(location):
- makedirs(location)
-
- newname = self.req.download(str(url), join(location, filename.decode(sys.getfilesystemencoding())))
- self.pyfile.size = self.req.dl_size
-
- if newname:
- self.pyfile.name = newname
diff --git a/module/plugins/hoster/HotfileCom.py b/module/plugins/hoster/HotfileCom.py
deleted file mode 100644
index 8f231fcd5..000000000
--- a/module/plugins/hoster/HotfileCom.py
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from time import time
-from module.plugins.Hoster import Hoster
-from module.plugins.ReCaptcha import ReCaptcha
-
-from module.network.Request import getURL
-from module.plugins.Plugin import chunks
-
-def getInfo(urls):
- api_url_base = "http://api.hotfile.com/"
-
- for chunk in chunks(urls, 90):
- api_param_file = {"action":"checklinks","links": ",".join(chunk),"fields":"id,status,name,size"} #api only supports old style links
- src = getURL(api_url_base, post=api_param_file)
- result = []
- for i, res in enumerate(src.split("\n")):
- if not res:
- continue
- fields = res.split(",")
-
- if fields[1] in ("1", "2"):
- status = 2
- elif fields[1]:
- status = 1
-
- result.append((fields[2], int(fields[3]), status, chunk[i]))
- yield result
-
-class HotfileCom(Hoster):
- __name__ = "HotfileCom"
- __type__ = "hoster"
- __pattern__ = r"http://hotfile.com/dl/"
- __version__ = "0.3"
- __description__ = """Hotfile.com Download Hoster"""
- __author_name__ = ("sitacuisses","spoob","mkaay")
- __author_mail__ = ("sitacuisses@yhoo.de","spoob@pyload.org","mkaay@mkaay.de")
-
- def setup(self):
- self.html = [None, None]
- self.wantReconnect = False
- self.multiDL = False
- self.htmlwithlink = None
- self.url = None
-
- if self.account:
- self.multiDL = True
- self.req.canContinue = True
-
- def apiCall(self, method, post, login=False):
- if not self.account and login:
- return
- elif self.account and login:
- return self.account.apiCall(method, post)
- post.update({"action": method})
- return self.load("http://api.hotfile.com/", post=post)
-
- def process(self, pyfile):
- self.wantReconnect = False
-
- args = {"links":self.pyfile.url, "fields":"id,status,name,size,sha1"}
- resp = self.apiCall("checklinks", args)
- self.apiData = {}
- for k, v in zip(args["fields"].split(","), resp.strip().split(",")):
- self.apiData[k] = v
-
- if self.apiData["status"] == "0":
- self.offline()
-
- pyfile.name = self.apiData["name"]
-
- if not self.account:
- self.downloadHTML()
-
- self.setWait(self.getWaitTime())
- self.wait()
-
- self.freeDownload()
- else:
- dl = self.account.apiCall("getdirectdownloadlink", {"link":self.pyfile.url})
- self.download(dl)
-
- def downloadHTML(self):
- self.html[0] = self.load(self.pyfile.url, get={"lang":"en"}, cookies=True)
-
- def freeDownload(self):
-
- form_content = re.search(r"<form style=.*(\n<.*>\s*)*?\n<tr>", self.html[0]).group(0)
- form_posts = re.findall(r"<input\stype=hidden\sname=(\S*)\svalue=(\S*)>", form_content)
-
- self.html[1] = self.load(self.pyfile.url, post=form_posts, cookies=True)
-
- re_captcha = ReCaptcha(self)
-
- challenge = re.search(r"http://api\.recaptcha\.net/challenge\?k=([0-9A-Za-z]+)", self.html[1])
-
- if challenge:
- challenge, result = re_captcha.challenge(challenge.group(1))
-
- url = re.search(r'<form action="(/dl/[^"]+)', self.html[1] )
-
- self.html[1] = self.load("http://hotfile.com"+url.group(1), post={"action": "checkcaptcha",
- "recaptcha_challenge_field" : challenge,
- "recaptcha_response_field": result})
-
- if "Wrong Code. Please try again." in self.html[1]:
- self.freeDownload()
- return
-
- file_url = re.search(r'a href="(http://hotfile\.com/get/\S*?)"', self.html[1]).group(1)
- self.download(file_url)
-
- def getWaitTime(self):
- free_limit_pattern = re.compile(r"timerend=d\.getTime\(\)\+(\d+);")
- matches = free_limit_pattern.findall(self.html[0])
- if matches:
- for match in matches:
- if int(match) == 60000:
- continue
- if int(match) == 0:
- continue
- else:
- self.wantReconnect = True
- return int(match)/1000 + 65
- return 65
diff --git a/module/plugins/hoster/MegauploadCom.py b/module/plugins/hoster/MegauploadCom.py
deleted file mode 100644
index a14c2c76f..000000000
--- a/module/plugins/hoster/MegauploadCom.py
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-
-from module.plugins.Hoster import Hoster
-
-from module.network.Request import getURL
-
-def getInfo(urls):
- url = "http://megaupload.com/mgr_linkcheck.php"
-
- ids = [x.split("=")[-1] for x in urls]
-
- i = 0
- post = {}
- for id in ids:
- post["id%i"%i] = id
- i += 1
-
- api = getURL(url, {}, post)
- api = [x.split("&") for x in re.split(r"&?(?=id[\d]+=)", api)]
-
- result = []
- i=0
- for data in api:
- if data[0].startswith("id"):
- tmp = [x.split("=") for x in data]
- if tmp[2][1] == "3":
- status = 3
- elif tmp[0][1] == "0":
- status = 2
- elif tmp[0][1] == "1":
- status = 1
- else:
- status = 3
-
- name = tmp[3][1]
- size = tmp[1][1]
-
- result.append( (name, size, status, urls[i] ) )
- i += 1
-
- yield result
-
-class MegauploadCom(Hoster):
- __name__ = "MegauploadCom"
- __type__ = "hoster"
- __pattern__ = r"http://[\w\.]*?(megaupload)\.com/.*?(\?|&)d=[0-9A-Za-z]+"
- __version__ = "0.1"
- __description__ = """Megaupload.com Download Hoster"""
- __author_name__ = ("spoob")
- __author_mail__ = ("spoob@pyload.org")
-
- def setup(self):
- self.html = [None, None]
- self.multiDL = False
-
- def process(self, pyfile):
- self.pyfile = pyfile
- self.download_html()
- if not self.file_exists():
- self.offline()
-
- self.setWait(45)
- self.wait()
-
- pyfile.name = self.get_file_name()
- self.download(self.get_file_url())
-
- def download_html(self):
- for i in range(5):
- self.html[0] = self.load(self.pyfile.url)
- try:
- url_captcha_html = re.search('(http://www.{,3}\.megaupload\.com/gencap.php\?.*\.gif)', self.html[0]).group(1)
- except:
- continue
-
- captcha = self.decryptCaptcha(url_captcha_html)
- captchacode = re.search('name="captchacode" value="(.*)"', self.html[0]).group(1)
- megavar = re.search('name="megavar" value="(.*)">', self.html[0]).group(1)
- self.html[1] = self.load(self.pyfile.url, post={"captcha": captcha, "captchacode": captchacode, "megavar": megavar})
- if re.search(r"Waiting time before each download begins", self.html[1]) != None:
- break
-
- def get_file_url(self):
- file_url_pattern = 'id="downloadlink"><a href="(.*)" onclick="'
- search = re.search(file_url_pattern, self.html[1])
- return search.group(1).replace(" ", "%20")
-
- def get_file_name(self):
- file_name_pattern = 'id="downloadlink"><a href="(.*)" onclick="'
- return re.search(file_name_pattern, self.html[1]).group(1).split("/")[-1]
-
- def file_exists(self):
- self.download_html()
- if re.search(r"Unfortunately, the link you have clicked is not available.", self.html[0]) != None or \
- re.search(r"Download limit exceeded", self.html[0]):
- return False
- return True
diff --git a/module/plugins/hoster/MegavideoCom.py b/module/plugins/hoster/MegavideoCom.py
deleted file mode 100644
index 7ea045447..000000000
--- a/module/plugins/hoster/MegavideoCom.py
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from time import time
-from module.plugins.Hoster import Hoster
-from module.unescape import unescape
-
-class MegavideoCom(Hoster):
- __name__ = "MegavideoCom"
- __type__ = "hoster"
- __pattern__ = r"http://(www\.)?megavideo.com/\?v=.*"
- __version__ = "0.1"
- __description__ = """Megavideo.com Download Hoster"""
- __author_name__ = ("jeix","mkaay")
- __author_mail__ = ("jeix@hasnomail.de","mkaay@mkaay.de")
-
- def __init__(self, parent):
- Hoster.__init__(self, parent)
- self.parent = parent
- self.html = None
-
- def download_html(self):
- url = self.parent.url
- self.html = self.req.load(url)
-
- def get_file_url(self):
- """ returns the absolute downloadable filepath
- """
- if self.html == None:
- self.download_html()
-
- # get id
- id = re.search("previewplayer/\\?v=(.*?)&width", self.html).group(1)
-
- # check for hd link and return if there
- if "flashvars.hd = \"1\";" in self.html:
- content = self.req.load("http://www.megavideo.com/xml/videolink.php?v=%s" % id)
- return unescape(re.search("hd_url=\"(.*?)\"", content).group(1))
-
- # else get normal link
- s = re.search("flashvars.s = \"(\\d+)\";", self.html).group(1)
- un = re.search("flashvars.un = \"(.*?)\";", self.html).group(1)
- k1 = re.search("flashvars.k1 = \"(\\d+)\";", self.html).group(1)
- k2 = re.search("flashvars.k2 = \"(\\d+)\";", self.html).group(1)
- return "http://www%s.megavideo.com/files/%s/" % (s, self.__decrypt(un, int(k1), int(k2)))
-
- def __decrypt(self, input, k1, k2):
- req1 = []
- req3 = 0
- for c in input:
- c = int(c, 16)
- tmp = "".join([str((c >> y) & 1) for y in range(4 -1, -1, -1)])
- req1.extend([int(x) for x in tmp])
-
- req6 = []
- req3 = 0
- while req3 < 384:
- k1 = (k1 * 11 + 77213) % 81371
- k2 = (k2 * 17 + 92717) % 192811
- req6.append((k1 + k2) % 128)
- req3 += 1
-
- req3 = 256
- while req3 >= 0:
- req5 = req6[req3]
- req4 = req3 % 128
- req8 = req1[req5]
- req1[req5] = req1[req4]
- req1[req4] = req8
- req3 -= 1
-
- req3 = 0
- while req3 < 128:
- req1[req3] = req1[req3] ^ (req6[req3+256] & 1)
- req3 += 1
-
- out = ""
- req3 = 0
- while req3 < len(req1):
- tmp = req1[req3] * 8
- tmp += req1[req3+1] * 4
- tmp += req1[req3+2] * 2
- tmp += req1[req3+3]
-
- out += "%X" % tmp
-
- req3 += 4
-
- return out.lower()
-
- def get_file_name(self):
- if self.html == None:
- self.download_html()
-
- name = re.search("flashvars.title = \"(.*?)\";", self.html).group(1)
- name = "%s.flv" % unescape(name.encode("ascii", "ignore")).decode("utf-8").encode("ascii", "ignore").replace("+", " ")
- return name
-
- def file_exists(self):
- """ returns True or False
- """
- if self.html == None:
- self.download_html()
-
- if re.search(r"Dieses Video ist nicht verfügbar.", self.html) != None or \
- re.search(r"This video is unavailable.", self.html) != None:
- return False
- else:
- return True
-
diff --git a/module/plugins/hoster/MyvideoDe.py b/module/plugins/hoster/MyvideoDe.py
deleted file mode 100644
index f2d2082a7..000000000
--- a/module/plugins/hoster/MyvideoDe.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-from module.plugins.Hoster import Hoster
-from module.unescape import unescape
-
-class MyvideoDe(Hoster):
- __name__ = "MyvideoDe"
- __type__ = "hoster"
- __pattern__ = r"http://(www\.)?myvideo.de/watch/"
- __version__ = "0.9"
- __description__ = """Myvideo.de Video Download Hoster"""
- __author_name__ = ("spoob")
- __author_mail__ = ("spoob@pyload.org")
-
- def setup(self):
- self.html = None
-
- def process(self, pyfile):
- self.pyfile = pyfile
- self.download_html()
- pyfile.name = self.get_file_name()
- self.download(self.get_file_url())
-
- def download_html(self):
- self.html = self.load(self.pyfile.url)
-
- def get_file_url(self):
- videoId = re.search(r"addVariable\('_videoid','(.*)'\);p.addParam\('quality'", self.html).group(1)
- videoServer = re.search("rel='image_src' href='(.*)thumbs/.*' />", self.html).group(1)
- file_url = videoServer + videoId + ".flv"
- return file_url
-
- def get_file_name(self):
- file_name_pattern = r"<h1 class='globalHd'>(.*)</h1>"
- return unescape(re.search(file_name_pattern, self.html).group(1).replace("/", "") + '.flv')
-
- def file_exists(self):
- self.download_html()
- self.load(str(self.pyfile.url), cookies=False, just_header=True)
- if self.req.lastEffectiveURL == "http://www.myvideo.de/":
- return False
- return True
diff --git a/module/plugins/hoster/NetloadIn.py b/module/plugins/hoster/NetloadIn.py
deleted file mode 100644
index 6f0cb9461..000000000
--- a/module/plugins/hoster/NetloadIn.py
+++ /dev/null
@@ -1,212 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from time import sleep
-
-
-from module.plugins.Hoster import Hoster
-from module.network.Request import getURL
-from module.plugins.Plugin import chunks
-
-
-
-def getInfo(urls):
- ## returns list of tupels (name, size (in bytes), status (see FileDatabase), url)
-
-
- apiurl = "http://api.netload.in/info.php?auth=Zf9SnQh9WiReEsb18akjvQGqT0I830e8&bz=1&md5=1&file_id="
- id_regex = re.compile("http://.*netload\.in/(?:datei(.*?)(?:\.htm|/)|index.php?id=10&file_id=)")
- urls_per_query = 80
-
- for chunk in chunks(urls, urls_per_query):
- ids = ""
- for url in chunk:
- match = id_regex.search(url)
- if match:
- ids = ids + match.group(1) +";"
-
- api = getURL(apiurl+ids)
-
- if api == None or len(api) < 10:
- print "Netload prefetch: failed "
- return
- if api.find("unknown_auth") >= 0:
- print "Netload prefetch: Outdated auth code "
- return
-
- result = []
-
- for i, r in enumerate(api.split()):
- try:
- tmp = r.split(";")
- try:
- size = int(tmp[2])
- except:
- size = 0
- result.append( (tmp[1], size, 2 if tmp[3] == "online" else 1, chunk[i] ) )
- except:
- print "Netload prefetch: Error while processing response: "
- print r
-
- yield result
-
-class NetloadIn(Hoster):
- __name__ = "NetloadIn"
- __type__ = "hoster"
- __pattern__ = r"http://.*netload\.in/(?:datei(.*?)(?:\.htm|/)|index.php?id=10&file_id=)"
- __version__ = "0.2"
- __description__ = """Netload.in Download Hoster"""
- __config__ = [ ("dumpgen", "bool", "Generate debug page dumps on stdout", "False") ]
- __author_name__ = ("spoob", "RaNaN", "Gregy")
- __author_mail__ = ("spoob@pyload.org", "ranan@pyload.org", "gregy@gregy.cz")
-
- def setup(self):
- self.multiDL = False
- if self.account:
- self.multiDL = True
- self.req.canContinue = True
-
- def process(self, pyfile):
- self.url = pyfile.url
- self.prepare()
- self.pyfile.setStatus("downloading")
- self.proceed(self.url)
-
- def prepare(self):
- self.download_api_data()
-
- if self.api_data and self.api_data["filename"]:
- self.pyfile.name = self.api_data["filename"]
-
- if self.account:
- self.log.debug("Netload: Use Premium Account")
- return True
-
- if self.download_html():
- return True
- else:
- self.fail("Failed")
- return False
-
- def download_api_data(self):
- url = self.url
- id_regex = re.compile("http://.*netload\.in/(?:datei(.*?)(?:\.htm|/)|index.php?id=10&file_id=)")
- match = id_regex.search(url)
- if match:
- apiurl = "http://netload.in/share/fileinfos2.php"
- src = self.load(apiurl, cookies=False, get={"file_id": match.group(1)})
- self.log.debug("Netload: APIDATA: "+src.strip())
- self.api_data = {}
- if src == "unknown_server_data":
- self.api_data = False
- elif not src == "unknown file_data":
-
- lines = src.split(";")
- self.api_data["exists"] = True
- self.api_data["fileid"] = lines[0]
- self.api_data["filename"] = lines[1]
- self.api_data["size"] = lines[2] #@TODO formatting? (ex: '2.07 KB')
- self.api_data["status"] = lines[3]
- if self.api_data["status"] == "online":
- self.api_data["checksum"] = lines[4].strip()
- else:
- self.offline();
- else:
- self.api_data["exists"] = False
- else:
- self.api_data = False
- self.html[0] = self.load(self.url, cookies=False)
-
- def final_wait(self, page):
- wait_time = self.get_wait_time(page)
- self.setWait(wait_time)
- self.log.debug(_("Netload: final wait %d seconds" % wait_time))
- self.wait()
- self.url = self.get_file_url(page)
-
- def download_html(self):
- self.log.debug("Netload: Entering download_html")
- page = self.load(self.url, cookies=True)
- captchawaited = False
- for i in range(10):
- self.log.debug(_("Netload: try number %d " % i))
- if self.getConf('dumpgen'):
- print page
-
- if re.search(r"(We will prepare your download..)", page) != None:
- self.log.debug("Netload: We will prepare your download")
- self.final_wait(page);
- return True
- if re.search(r"(We had a reqeust with the IP)", page) != None:
- wait = self.get_wait_time(page);
- if wait == 0:
- self.log.debug("Netload: Wait was 0 setting 30")
- wait = 30
- self.log.info(_("Netload: waiting between downloads %d s." % wait))
- self.wantReconnect = True
- self.setWait(wait)
- self.wait()
-
- link = re.search(r"You can download now your next file. <a href=\"(index.php\?id=10&amp;.*)\" class=\"Orange_Link\">Click here for the download</a>", page)
- if link != None:
- self.log.debug("Netload: Using new link found on page")
- page = self.load("http://netload.in/" + link.group(1).replace("amp;", ""))
- else:
- self.log.debug("Netload: No new link found, using old one")
- page = self.load(self.url, cookies=True)
- continue
-
-
- self.log.debug("Netload: Trying to find captcha")
-
- url_captcha_html = "http://netload.in/" + re.search('(index.php\?id=10&amp;.*&amp;captcha=1)', page).group(1).replace("amp;", "")
- page = self.load(url_captcha_html, cookies=True)
-
- try:
- captcha_url = "http://netload.in/" + re.search('(share/includes/captcha.php\?t=\d*)', page).group(1)
- except:
- open("dump.html", "w").write(page)
- self.log.debug("Netload: Could not find captcha, try again from begining")
- continue
-
- file_id = re.search('<input name="file_id" type="hidden" value="(.*)" />', page).group(1)
- if not captchawaited:
- wait = self.get_wait_time(page);
- self.log.info(_("Netload: waiting for captcha %d s." % wait))
- self.setWait(wait)
- self.wait()
- captchawaited = True
-
- captcha = self.decryptCaptcha(captcha_url)
- sleep(4)
- page = self.load("http://netload.in/index.php?id=10", post={"file_id": file_id, "captcha_check": captcha}, cookies=True)
-
- return False
-
-
- def get_file_url(self, page):
- try:
- file_url_pattern = r"<a class=\"Orange_Link\" href=\"(http://.+)\" >Click here"
- attempt = re.search(file_url_pattern, page)
- if attempt != None:
- return attempt.group(1)
- else:
- self.log.debug("Netload: Backup try for final link")
- file_url_pattern = r"<a href=\"(.+)\" class=\"Orange_Link\">Click here"
- attempt = re.search(file_url_pattern, page)
- return "http://netload.in/"+attempt.group(1);
- except:
- self.log.debug("Netload: Getting final link failed")
- return None
-
- def get_wait_time(self, page):
- wait_seconds = int(re.search(r"countdown\((.+),'change\(\)'\)", page).group(1)) / 100
- return wait_seconds
-
-
- def proceed(self, url):
- self.log.debug("Netload: Downloading..")
-
- self.download(url, cookies=True)
-
diff --git a/module/plugins/hoster/PornhostCom.py b/module/plugins/hoster/PornhostCom.py
deleted file mode 100644
index 5dd681b5b..000000000
--- a/module/plugins/hoster/PornhostCom.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from module.plugins.Hoster import Hoster
-
-class PornhostCom(Hoster):
- __name__ = "PornhostCom"
- __type__ = "hoster"
- __pattern__ = r'http://[\w\.]*?pornhost\.com/([0-9]+/[0-9]+\.html|[0-9]+)'
- __version__ = "0.2"
- __description__ = """Pornhost.com Download Hoster"""
- __author_name__ = ("jeix")
- __author_mail__ = ("jeix@hasnomail.de")
-
- def process(self, pyfile):
- self.download_html()
- if not self.file_exists():
- offline()
-
- pyfile.name = self.get_file_name()
- self.download(self.get_file_url())
-
-
- ### old interface
- def download_html(self):
- url = self.pyfile.url
- self.html = self.load(url)
-
- def get_file_url(self):
- """ returns the absolute downloadable filepath
- """
- if self.html == None:
- self.download_html()
-
- file_url = re.search(r'download this file</label>.*?<a href="(.*?)"', self.html)
- if not file_url:
- file_url = re.search(r'"(http://dl[0-9]+\.pornhost\.com/files/.*?/.*?/.*?/.*?/.*?/.*?\..*?)"', self.html)
- if not file_url:
- file_url = re.search(r'width: 894px; height: 675px">.*?<img src="(.*?)"', self.html)
- if not file_url:
- file_url = re.search(r'"http://file[0-9]+\.pornhost\.com/[0-9]+/.*?"', self.html) # TODO: fix this one since it doesn't match
-
- file_url = file_url.group(1).strip()
-
- return file_url
-
- def get_file_name(self):
- if self.html == None:
- self.download_html()
-
- name = re.search(r'<title>pornhost\.com - free file hosting with a twist - gallery(.*?)</title>', self.html)
- if not name:
- name = re.search(r'id="url" value="http://www\.pornhost\.com/(.*?)/"', self.html)
- if not name:
- name = re.search(r'<title>pornhost\.com - free file hosting with a twist -(.*?)</title>', self.html)
- if not name:
- name = re.search(r'"http://file[0-9]+\.pornhost\.com/.*?/(.*?)"', self.html)
-
- name = name.group(1).strip() + ".flv"
-
- return name
-
- def file_exists(self):
- """ returns True or False
- """
- if self.html == None:
- self.download_html()
-
- if re.search(r'gallery not found', self.html) != None \
- or re.search(r'You will be redirected to', self.html) != None:
- return False
- else:
- return True
-
-
diff --git a/module/plugins/hoster/PornhubCom.py b/module/plugins/hoster/PornhubCom.py
deleted file mode 100644
index ea7e1423c..000000000
--- a/module/plugins/hoster/PornhubCom.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from module.plugins.Hoster import Hoster
-
-class PornhubCom(Hoster):
- __name__ = "PornhubCom"
- __type__ = "hoster"
- __pattern__ = r'http://[\w\.]*?pornhub\.com/view_video\.php\?viewkey=[\w\d]+'
- __version__ = "0.2"
- __description__ = """Pornhub.com Download Hoster"""
- __author_name__ = ("jeix")
- __author_mail__ = ("jeix@hasnomail.de")
-
- def process(self, pyfile):
- self.download_html()
- if not self.file_exists():
- offline()
-
- pyfile.name = self.get_file_name()
- self.download(self.get_file_url())
-
- def download_html(self):
- url = self.pyfile.url
- self.html = self.load(url)
-
- def get_file_url(self):
- """ returns the absolute downloadable filepath
- """
- if self.html == None:
- self.download_html()
-
- url = "http://www.pornhub.com//gateway.php"
- video_id = self.pyfile.url.split('=')[-1]
- # thanks to jD team for this one v
- post_data = "\x00\x03\x00\x00\x00\x01\x00\x0c\x70\x6c\x61\x79\x65\x72\x43\x6f\x6e\x66\x69\x67\x00\x02\x2f\x31\x00\x00\x00\x44\x0a\x00\x00\x00\x03\x02\x00"
- post_data += chr(len(video_id))
- post_data += video_id
- post_data += "\x02\x00\x02\x2d\x31\x02\x00\x20"
- post_data += "add299463d4410c6d1b1c418868225f7"
-
- content = self.req.load(url, post=str(post_data), no_post_encode=True)
- file_url = re.search(r'flv_url.*(http.*?)\?r=.*', content).group(1)
-
- return file_url
-
- def get_file_name(self):
- if self.html == None:
- self.download_html()
-
- name = re.findall('<h1>(.*?)</h1>', self.html)[1] + ".flv"
-
- return name
-
- def file_exists(self):
- """ returns True or False
- """
- if self.html == None:
- self.download_html()
-
- if re.search(r'This video is no longer in our database or is in conversion', self.html) != None:
- return False
- else:
- return True
diff --git a/module/plugins/hoster/RapidshareCom.py b/module/plugins/hoster/RapidshareCom.py
deleted file mode 100644
index fa5f053de..000000000
--- a/module/plugins/hoster/RapidshareCom.py
+++ /dev/null
@@ -1,188 +0,0 @@
-
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from time import time
-
-from module.network.Request import getURL
-from module.plugins.Hoster import Hoster
-import hashlib
-
-def getInfo(urls):
-
- ids = ""
- names = ""
-
- for url in urls:
- tmp = url.split("/")
- ids+= ","+tmp[-2]
- names+= ","+tmp[-1]
-
- url = "http://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=checkfiles_v1&files=%s&filenames=%s" % (ids[1:], names[1:])
-
-
- api = getURL(url)
- result = []
- i = 0
- for res in api.split():
- tmp = res.split(",")
- if tmp[4] in ("0", "4", "5"): status = 1
- elif tmp[4] == "1": status = 2
- else: status = 3
-
- result.append( (tmp[1], tmp[2], status, urls[i]) )
- i += 1
-
- yield result
-
-class RapidshareCom(Hoster):
- __name__ = "RapidshareCom"
- __type__ = "hoster"
- __pattern__ = r"http://[\w\.]*?rapidshare.com/files/(\d*?)/(.*)"
- __version__ = "1.1"
- __description__ = """Rapidshare.com Download Hoster"""
- __config__ = [ ("server", "str", "Preferred Server", "None") ]
- __author_name__ = ("spoob", "RaNaN", "mkaay")
- __author_mail__ = ("spoob@pyload.org", "ranan@pyload.org", "mkaay@mkaay.de")
-
- def setup(self):
- self.html = [None, None]
- self.no_slots = True
- self.api_data = None
- self.multiDL = False
- if self.account:
- self.multiDL = True
- self.req.canContinue = True
-
- def process(self, pyfile):
- self.url = self.pyfile.url
- self.prepare()
- self.proceed(self.url)
-
- def prepare(self):
- # self.no_slots = True
- # self.want_reconnect = False
-
- self.download_api_data()
- if self.api_data["status"] == "1":
- self.pyfile.name = self.get_file_name()
-
- if self.account:
- info = self.account.getAccountInfo(self.account.getAccountData(self)[0])
- self.log.debug(_("%s: Use Premium Account (%sGB left)") % (self.__name__, info["trafficleft"]/1000/1000))
- if self.api_data["size"] / 1024 > info["trafficleft"]:
- self.log.info(_("%s: Not enough traffic left" % self.__name__))
- self.resetAcount()
- else:
- self.url = self.api_data["mirror"]
- return True
-
- self.download_html()
- while self.no_slots:
- self.setWait(self.get_wait_time())
- self.wait()
- # self.pyfile.status.waituntil = self.time_plus_wait
- # self.pyfile.status.want_reconnect = self.want_reconnect
- # thread.wait(self.pyfile)
-
- self.url = self.get_file_url()
-
- return True
- elif self.api_data["status"] == "2":
- self.log.info(_("Rapidshare: Traffic Share (direct download)"))
- self.pyfile.name = self.get_file_name()
- # self.pyfile.status.url = self.parent.url
- return True
- else:
- self.fail("Unknown response code.")
-
- def download_api_data(self, force=False):
- """
- http://images.rapidshare.com/apidoc.txt
- """
- if self.api_data and not force:
- return
- api_url_base = "http://api.rapidshare.com/cgi-bin/rsapi.cgi"
- api_param_file = {"sub": "checkfiles_v1", "files": "", "filenames": "", "incmd5": "1"}
- m = re.compile(self.__pattern__).search(self.url)
- if m:
- api_param_file["files"] = m.group(1)
- api_param_file["filenames"] = m.group(2)
- src = self.load(api_url_base, cookies=False, get=api_param_file)
- if src.startswith("ERROR"):
- return
- fields = src.split(",")
- self.api_data = {}
- self.api_data["fileid"] = fields[0]
- self.api_data["filename"] = fields[1]
- self.api_data["size"] = int(fields[2]) # in bytes
- self.api_data["serverid"] = fields[3]
- self.api_data["status"] = fields[4]
- """
- status codes:
- 0=File not found
- 1=File OK (Downloading possible without any logging)
- 2=File OK (TrafficShare direct download without any logging)
- 3=Server down
- 4=File marked as illegal
- 5=Anonymous file locked, because it has more than 10 downloads already
- 6=File OK (TrafficShare direct download with enabled logging)
- """
- self.api_data["shorthost"] = fields[5]
- self.api_data["checksum"] = fields[6].strip().lower() # md5
-
- self.api_data["mirror"] = "http://rs%(serverid)s%(shorthost)s.rapidshare.com/files/%(fileid)s/%(filename)s" % self.api_data
-
- def download_html(self):
- """ gets the url from self.parent.url saves html in self.html and parses
- """
- self.html[0] = self.load(self.url, cookies=False)
-
- def get_wait_time(self):
- """downloads html with the important informations
- """
- file_server_url = re.search(r"<form action=\"(.*?)\"", self.html[0]).group(1)
- self.html[1] = self.load(file_server_url, cookies=False, post={"dl.start": "Free"})
-
- if re.search(r"is already downloading", self.html[1]):
- self.log.info(_("Rapidshare: Already downloading, wait 30 minutes"))
- return 30 * 60
- self.no_slots = False
- try:
- wait_minutes = re.search(r"Or try again in about (\d+) minute", self.html[1]).group(1)
- self.no_slots = True
- self.wantReconnect = True
- return 60 * int(wait_minutes) + 60
- except:
- if re.search(r"(Currently a lot of users|no more download slots|servers are overloaded)", self.html[1], re.I) != None:
- self.log.info(_("Rapidshare: No free slots!"))
- self.no_slots = True
- return time() + 130
- self.no_slots = False
- wait_seconds = re.search(r"var c=(.*);.*", self.html[1]).group(1)
- return int(wait_seconds) + 5
-
- def get_file_url(self):
- """ returns the absolute downloadable filepath
- """
- if self.getConf('server') == "None":
- file_url_pattern = r".*name=\"dlf\" action=\"(.*)\" method=.*"
- else:
- file_url_pattern = '(http://rs.*)\';" /> %s<br />' % getConf('server')
-
- return re.search(file_url_pattern, self.html[1]).group(1)
-
- def get_file_name(self):
- if self.api_data["filename"]:
- return self.api_data["filename"]
- elif self.html[0]:
- file_name_pattern = r"<p class=\"downloadlink\">.+/(.+) <font"
- file_name_search = re.search(file_name_pattern, self.html[0])
- if file_name_search:
- return file_name_search.group(1)
- return self.url.split("/")[-1]
-
- def proceed(self, url):
- self.download(url, get={"directstart":1}, cookies=True)
-
diff --git a/module/plugins/hoster/RedtubeCom.py b/module/plugins/hoster/RedtubeCom.py
deleted file mode 100644
index 6a9baffbe..000000000
--- a/module/plugins/hoster/RedtubeCom.py
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from module.plugins.Hoster import Hoster
-from module.unescape import unescape
-
-class RedtubeCom(Hoster):
- __name__ = "RedtubeCom"
- __type__ = "hoster"
- __pattern__ = r'http://[\w\.]*?redtube\.com/\d+'
- __version__ = "0.2"
- __description__ = """Redtube.com Download Hoster"""
- __author_name__ = ("jeix")
- __author_mail__ = ("jeix@hasnomail.de")
-
- def process(self, pyfile):
- self.download_html()
- if not self.file_exists():
- offline()
-
- pyfile.name = self.get_file_name()
- self.download(self.get_file_url())
-
- def download_html(self):
- url = self.pyfile.url
- self.html = self.load(url)
-
- def get_file_url(self):
- """ returns the absolute downloadable filepath
- """
- if self.html == None:
- self.download_html()
-
- file_url = unescape(re.search(r'hashlink=(http.*?)"', self.html).group(1))
-
- return file_url
-
- def get_file_name(self):
- if self.html == None:
- self.download_html()
-
- name = re.search('<title>(.*?)- RedTube - Free Porn Videos</title>', self.html).group(1).strip() + ".flv"
- return name
-
- def file_exists(self):
- """ returns True or False
- """
- if self.html == None:
- self.download_html()
-
- if re.search(r'This video has been removed.', self.html) != None:
- return False
- else:
- return True
-
diff --git a/module/plugins/hoster/ShareCx.py b/module/plugins/hoster/ShareCx.py
deleted file mode 100644
index e64459754..000000000
--- a/module/plugins/hoster/ShareCx.py
+++ /dev/null
@@ -1,155 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from module.plugins.Hoster import Hoster
-from module.plugins.Plugin import chunks
-from module.network.Request import getURL
-#from module.BeautifulSoup import BeautifulSoup
-
-def getInfo(urls):
- api_url = "http://www.share.cx/uapi?do=check&links="
-
- for chunk in chunks(urls, 90):
- get = ""
- for url in chunk:
- get += ";"+url
-
- api = getURL(api_url+get[1:])
- result = []
-
- for i, link in enumerate(api.split()):
- url,name,size = link.split(";")
- if name and size:
- status = 2
- else:
- status = 1
-
- if not name: name = chunk[i]
- if not size: size = 0
-
- result.append( (name, size, status, chunk[i]) )
-
- yield result
-
-class ShareCx(Hoster):
- __name__ = "ShareCx"
- __type__ = "hoster"
- __pattern__ = r"http://[\w\.]*?share\.cx/(files|videos)/\d+"
- __version__ = "0.1"
- __description__ = """Share.cx Download Hoster"""
- __author_name__ = ("jeix")
- __author_mail__ = ("jeix@hasnomail.de")
-
-
- def setup(self):
- self.multiDL = False
-
-
- def process(self, pyfile):
- self.pyfile = pyfile
- self.download_html()
- if not self.file_exists():
- offline()
-
- pyfile.name = self.get_file_name()
- self.doDownload()
-
-
- def download_html(self):
- self.html = self.load(self.pyfile.url)
-
- def doDownload(self):
- """ returns the absolute downloadable filepath
- """
- if self.html == None:
- self.download_html()
-
- op = re.search(r'name="op" value="(.*?)"', self.html).group(1)
- usr_login = re.search(r'name="usr_login" value="(.*?)"', self.html).group(1)
- id = re.search(r'name="id" value="(.*?)"', self.html).group(1)
- fname = re.search(r'name="fname" value="(.*?)"', self.html).group(1)
- referer = re.search(r'name="referer" value="(.*?)"', self.html).group(1)
- method_free = "Datei+herunterladen"
-
- self.html = self.load(self.pyfile.url, post={
- "op" : op,
- "usr_login" : usr_login,
- "id" : id,
- "fname" : fname,
- "referer" : referer,
- "method_free" : method_free
- })
-
-
- m = re.search(r'startTimer\((\d+)\)', self.html)
- if m != None:
- wait_time = int(m.group(1))
- self.setWait(wait_time)
- self.wantReconnect = True
- self.log.debug("%s: IP blocked wait %d seconds." % (self.__name__, wait_time))
- self.wait()
-
- m = re.search(r'countdown">.*?(\d+).*?</span>', self.html)
- if m == None:
- m = re.search(r'id="countdown_str".*?<span id=".*?">.*?(\d+).*?</span', self.html)
- if m != None:
- wait_time = int(m.group(1))
- self.setWait(wait_time)
- self.wantReconnect = False
- self.log.debug("%s: Waiting %d seconds." % (self.__name__, wait_time))
- self.wait()
-
-
- op = re.search(r'name="op" value="(.*?)"', self.html).group(1)
- id = re.search(r'name="id" value="(.*?)"', self.html).group(1)
- rand = re.search(r'name="rand" value="(.*?)"', self.html).group(1)
- referer = re.search(r'name="referer" value="(.*?)"', self.html).group(1)
- method_free = re.search(r'name="method_free" value="(.*?)"', self.html).group(1)
- method_premium = re.search(r'name="method_premium" value="(.*?)"', self.html).group(1)
- down_script = re.search(r'name="down_script" value="(.*?)"', self.html).group(1)
-
- data = {
- "op" : op,
- "id" : id,
- "rand" : rand,
- "referer" : referer,
- "method_free" : method_free,
- "method_premium" : method_premium,
- "down_script" : down_script
- }
-
- if '/captchas/' in self.html:
- captcha_url = re.search(r'(http://(?:[\w\d]+\.)?.*?/captchas/.*?)').group(1)
- captcha = self.decryptCaptcha(captcha_url)
- data["code"] = captcha
-
-
- self.download(self.pyfile.url, post=data)
-
- # soup = BeautifulSoup(html)
- # form = soup.find("form")
- # postfields = {}
- # for input in form,findall("input"):
- # postfields[input["name"]] = input["value"]
- # postfields["method_free"] = "Datei herunterladen"
-
- def get_file_name(self):
- if self.html == None:
- self.download_html()
-
- name = re.search(r'alt="Download" /></span>(.*?)</h3>', self.html).group(1)
- return name
-
- def file_exists(self):
- """ returns True or False
- """
- if self.html == None:
- self.download_html()
-
- if re.search(r'File not found<br>It was deleted due to inactivity or abuse request', self.html) != None:
- return False
-
- return True
-
-
diff --git a/module/plugins/hoster/ShareonlineBiz.py b/module/plugins/hoster/ShareonlineBiz.py
deleted file mode 100644
index bc1951602..000000000
--- a/module/plugins/hoster/ShareonlineBiz.py
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import os
-import os.path
-import re
-import tempfile
-from time import time
-from base64 import b64decode
-import hashlib
-import random
-from time import sleep
-
-from module.plugins.Hoster import Hoster
-from module.network.Request import getURL
-from module.plugins.Plugin import chunks
-
-
-def getInfo(urls):
- api_url_base = "http://www.share-online.biz/linkcheck/linkcheck.php"
-
- for chunk in chunks(urls, 90):
- api_param_file = {"links": "\n".join(x.replace("http://www.share-online.biz/dl/","") for x in chunk)} #api only supports old style links
- src = getURL(api_url_base, post=api_param_file)
- result = []
- for i, res in enumerate(src.split("\n")):
- if not res:
- continue
- fields = res.split(";")
-
- if fields[1] == "OK":
- status = 2
- elif fields[1] in ("DELETED", "NOT FOUND"):
- status = 1
- else:
- status = 3
-
- result.append((fields[2], int(fields[3]), status, chunk[i]))
- yield result
-
-class ShareonlineBiz(Hoster):
- __name__ = "ShareonlineBiz"
- __type__ = "hoster"
- __pattern__ = r"(?:http://)?(?:www.)?share-online.biz/(download.php\?id=|dl/)"
- __version__ = "0.2"
- __description__ = """Shareonline.biz Download Hoster"""
- __author_name__ = ("spoob", "mkaay")
- __author_mail__ = ("spoob@pyload.org", "mkaay@mkaay.de")
-
- def setup(self):
- #self.req.canContinue = self.multiDL = True if self.account else False
- # range request not working?
- self.multiDL = True if self.account else False
-
- def process(self, pyfile):
- self.convertURL()
- self.downloadAPIData()
- pyfile.name = self.api_data["filename"]
- pyfile.sync()
-
- self.downloadHTML()
-
- self.download(self.getFileUrl(), cookies=True)
-
- def downloadAPIData(self):
- api_url_base = "http://www.share-online.biz/linkcheck/linkcheck.php?md5=1"
- api_param_file = {"links": self.pyfile.url.replace("http://www.share-online.biz/dl/","")} #api only supports old style links
- src = self.load(api_url_base, cookies=False, post=api_param_file)
-
- fields = src.split(";")
- self.api_data = {}
- self.api_data["fileid"] = fields[0]
- self.api_data["status"] = fields[1]
- if not self.api_data["status"] == "OK":
- self.offline()
- self.api_data["filename"] = fields[2]
- self.api_data["size"] = fields[3] # in bytes
- self.api_data["checksum"] = fields[4].strip().lower().replace("\n\n", "") # md5
-
- def downloadHTML(self):
- self.html = self.load(self.pyfile.url, cookies=True)
-
- if not self.account:
- html = self.load("%s/free/" % self.pyfile.url, post={"dl_free":"1"}, cookies=True)
- if re.search(r"/failure/full/1", self.req.lastEffectiveURL):
- self.setWait(120)
- self.log.debug("%s: no free slots, waiting 120 seconds" % (self.__name__))
- self.wait()
- self.retry()
- captcha = self.decryptCaptcha("http://www.share-online.biz/captcha.php", get={"rand":"0.%s" % random.randint(10**15,10**16)}, cookies=True)
-
- self.log.debug("%s Captcha: %s" % (self.__name__, captcha))
- sleep(3)
-
- html = self.load(self.pyfile.url, post={"captchacode": captcha}, cookies=True)
- if re.search(r"Der Download ist Ihnen zu langsam", html):
- #m = re.search("var timeout='(\d+)';", self.html[1])
- #self.waitUntil = time() + int(m.group(1)) if m else 30
- return True
-
- self.retry()
- else:
- return True
-
- def convertURL(self):
- self.pyfile.url = self.pyfile.url.replace("http://www.share-online.biz/download.php?id=", "http://www.share-online.biz/dl/")
-
- def getFileUrl(self):
- """ returns the absolute downloadable filepath
- """
- if self.account:
- return b64decode(re.search('var dl="(.*?)"', self.html).group(1))
- file_url_pattern = 'loadfilelink\.decode\("([^"]+)'
- return b64decode(re.search(file_url_pattern, self.html).group(1))
-
- def checksum(self, local_file):
- if self.api_data and self.api_data["checksum"]:
- h = hashlib.md5()
- f = open(local_file, "rb")
- h.update(f.read())
- f.close()
- hexd = h.hexdigest()
- if hexd == self.api_data["checksum"]:
- return (True, 0)
- else:
- return (False, 1)
- else:
- return (True, 5)
diff --git a/module/plugins/hoster/ShragleCom.py b/module/plugins/hoster/ShragleCom.py
deleted file mode 100644
index e634607b0..000000000
--- a/module/plugins/hoster/ShragleCom.py
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-import time
-
-from module.plugins.Hoster import Hoster
-
-class ShragleCom(Hoster):
- __name__ = "ShragleCom"
- __type__ = "hoster"
- __pattern__ = r"http://(?:www.)?shragle.com/files/"
- __version__ = "0.1"
- __description__ = """Shragle Download PLugin"""
- __author_name__ = ("RaNaN")
- __author_mail__ = ("RaNaN@pyload.org")
-
- def __init__(self, parent):
- Hoster.__init__(self, parent)
- self.parent = parent
- self.html = None
- self.multi_dl = False
-
- def set_parent_status(self):
- """ sets all available Statusinfos about a File in self.parent.status
- """
- if self.html == None:
- self.download_html()
- self.parent.status.filename = self.get_file_name()
- self.parent.status.url = self.get_file_url()
- self.parent.status.wait = self.wait_until()
-
- def download_html(self):
- url = self.parent.url
- self.html = self.load(url)
- self.time_plus_wait = time.time() + 10
-
- def get_file_url(self):
- """ returns the absolute downloadable filepath
- """
- if self.html == None:
- self.download_html()
-
- self.fileID = re.search(r"name=\"fileID\" value=\"([^\"]+)", self.html).group(1)
- self.dlSession = re.search(r"name=\"dlSession\" value=\"([^\"]+)", self.html).group(1)
- self.userID = ""
- self.password = ""
- self.lang = "de"
- return "http://srv4.shragle.com/download.php"
-
- def get_file_name(self):
- if self.html == None:
- self.download_html()
-
- file_name_pattern = r"<\/div><h2>(.+)<\/h2"
- return re.search(file_name_pattern, self.html).group(1)
-
- def file_exists(self):
- """ returns True or False
- """
- if self.html == None:
- self.download_html()
-
- if re.search(r"html", self.html) == None:
- return False
- else:
- return True
-
- def proceed(self, url, location):
- self.download(url, location, {'fileID': self.fileID, 'dlSession': self.dlSession, 'userID': self.userID, 'password': self.password, 'lang': self.lang})
diff --git a/module/plugins/hoster/StorageTo.py b/module/plugins/hoster/StorageTo.py
deleted file mode 100644
index f0660b40d..000000000
--- a/module/plugins/hoster/StorageTo.py
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from time import time
-
-from module.plugins.Hoster import Hoster
-
-class StorageTo(Hoster):
- __name__ = "StorageTo"
- __type__ = "hoster"
- __pattern__ = r"http://(?:www)?\.storage\.to/get/.*"
- __version__ = "0.2"
- __description__ = """Storage.to Download Hoster"""
- __author_name__ = ("mkaay")
-
- def setup(self):
- self.wantReconnect = False
- self.api_data = None
- self.html = None
- self.multiDL = False
-
- def process(self, pyfile):
- self.pyfile = pyfile
- self.prepare()
- self.download( self.get_file_url() )
-
-
-
-
- def prepare(self):
- pyfile = self.pyfile
-
- self.req.clear_cookies()
-
- self.wantReconnect = False
-
- if not self.file_exists():
- self.offline()
-
- pyfile.name = self.get_file_name()
-
- self.setWait( self.get_wait_time() )
-
- while self.wantReconnect:
- self.wait()
- self.download_api_data()
- self.setWait( self.get_wait_time() )
-
- return True
-
- def download_html(self):
- url = self.parent.url
- self.html = self.load(url, cookies=True)
-
- def download_api_data(self):
- url = self.parent.url
- info_url = url.replace("/get/", "/getlink/")
- src = self.load(info_url, cookies=True)
- pattern = re.compile(r"'(\w+)' : (.*?)[,|\}]")
- self.api_data = {}
- for pair in pattern.findall(src):
- self.api_data[pair[0]] = pair[1].strip("'")
- print self.api_data
-
- def get_wait_time(self):
- if not self.api_data:
- self.download_api_data()
- if self.api_data["state"] == "wait":
- self.wantReconnect = True
- else:
- self.wantReconnect = False
-
- return int(self.api_data["countdown"]) + 3
-
-
-
- def file_exists(self):
- """ returns True or False
- """
- if not self.api_data:
- self.download_api_data()
- if self.api_data["state"] == "failed":
- return False
- else:
- return True
-
- def get_file_url(self):
- """ returns the absolute downloadable filepath
- """
- if not self.api_data:
- self.download_api_data()
- return self.api_data["link"]
-
- def get_file_name(self):
- if not self.html:
- self.download_html()
- file_name_pattern = r"<span class=\"orange\">Downloading:</span>(.*?)<span class=\"light\">(.*?)</span>"
- return re.search(file_name_pattern, self.html).group(1).strip()
diff --git a/module/plugins/hoster/UploadedTo.py b/module/plugins/hoster/UploadedTo.py
deleted file mode 100644
index b6bd872f1..000000000
--- a/module/plugins/hoster/UploadedTo.py
+++ /dev/null
@@ -1,151 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-from time import time
-from module.plugins.Hoster import Hoster
-from module.network.Request import getURL
-import hashlib
-
-def getInfo(urls):
- for url in urls:
- match = re.compile(UploadedTo.__pattern__).search(url)
- if match:
- src = getURL("http://uploaded.to/api/file", get={"id": match.group(1).split("/")[0]})
- if src.find("404 Not Found") >= 0:
- result.append((url, 0, 1, url))
- continue
- lines = src.splitlines()
- result.append((lines[0], int(lines[1]), 2, url))
-
-class UploadedTo(Hoster):
- __name__ = "UploadedTo"
- __type__ = "hoster"
- __pattern__ = r"http://(?:www\.)?u(?:p)?l(?:oaded)?\.to/(?:file/|\?id=)?(.+)"
- __version__ = "0.4"
- __description__ = """Uploaded.to Download Hoster"""
- __author_name__ = ("spoob", "mkaay")
- __author_mail__ = ("spoob@pyload.org", "mkaay@mkaay.de")
-
-
- def setup(self):
- self.html = None
- self.api_data = None
- self.multiDL = False
- if self.account:
- self.multiDL = True
- self.req.canContinue = True
-
- def process(self, pyfile):
- self.url = False
- self.pyfile = pyfile
- self.prepare()
- self.proceed()
-
-
- def getInfo(self):
- self.download_api_data()
- self.pyfile.name = self.api_data["filename"]
- self.pyfile.sync()
-
- def prepare(self):
- tries = 0
-
- while not self.url:
- self.download_html()
-
- if not self.file_exists():
- self.offline()
-
- self.download_api_data()
-
- # self.pyfile.name = self.get_file_name()
-
- if self.account:
- info = self.account.getAccountInfo(self.account.getAccountData(self)[0])
- self.log.debug(_("%s: Use Premium Account (%sGB left)") % (self.__name__, info["trafficleft"]/1024/1024))
- if self.api_data["size"]/1024 > info["trafficleft"]:
- self.log.info(_("%s: Not enough traffic left" % self.__name__))
- self.resetAcount()
- else:
- self.url = self.get_file_url()
- self.pyfile.name = self.get_file_name()
- return True
-
- self.url = self.get_file_url()
-
- self.setWait(self.get_waiting_time())
- self.wait()
-
- self.pyfile.name = self.get_file_name()
-
- tries += 1
- if tries > 5:
- self.fail("Error while preparing DL")
- return True
-
- def download_api_data(self, force=False):
- if self.api_data and not force:
- return
- match = re.compile(self.__pattern__).search(self.pyfile.url)
- if match:
- src = self.load("http://uploaded.to/api/file", cookies=False, get={"id": match.group(1).split("/")[0]})
- if not src.find("404 Not Found"):
- return
- self.api_data = {}
- lines = src.splitlines()
- self.api_data["filename"] = lines[0]
- self.api_data["size"] = int(lines[1]) # in bytes
- self.api_data["checksum"] = lines[2] #sha1
-
- def download_html(self):
- self.html = self.load(self.pyfile.url, cookies=False)
-
- def get_waiting_time(self):
- try:
- wait_minutes = re.search(r"Or wait ([\d\-]+) minutes", self.html).group(1)
- if int(wait_minutes) < 0: wait_minutes = 1
- self.wantReconnect = True
- return 60 * int(wait_minutes)
- except:
- return 0
-
- def get_file_url(self):
- if self.account:
- self.start_dl = True
- return self.cleanUrl(self.pyfile.url)
- try:
- file_url_pattern = r".*<form name=\"download_form\" method=\"post\" action=\"(.*)\">"
- return re.search(file_url_pattern, self.html).group(1)
- except:
- return None
-
- def get_file_name(self):
- try:
- if self.api_data and self.api_data["filename"]:
- return self.api_data["filename"]
- file_name = re.search(r"<td><b>\s+(.+)\s", self.html).group(1)
- file_suffix = re.search(r"</td><td>(\..+)</td></tr>", self.html)
- if not file_suffix:
- return file_name
- return file_name + file_suffix.group(1)
- except:
- return self.pyfile.url.split('/')[-1]
-
- def file_exists(self):
- if re.search(r"(File doesn't exist)", self.html) != None:
- return False
- else:
- return True
-
- def cleanUrl(self, url):
- url = url.replace("ul.to/", "uploaded.to/file/")
- url = url.replace("/?id=", "/file/")
- url = url.replace("?id=", "file/")
- url = re.sub("/\?(.*?)&id=", "/file/", url, 1)
- return url
-
- def proceed(self):
- if self.account:
- self.download(self.url+"?redirect", cookies=True)
- else:
- self.download(self.url, cookies=False, post={"download_submit": "Free Download"})
diff --git a/module/plugins/hoster/Xdcc.py b/module/plugins/hoster/Xdcc.py
deleted file mode 100644
index 52ece4ca4..000000000
--- a/module/plugins/hoster/Xdcc.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# -*- 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: jeix
-"""
-
-import logging
-from os.path import exists
-from os.path import join
-from os.path import exists
-from os import makedirs
-import re
-import sys
-
-from module.plugins.Hoster import Hoster
-
-
-class Xdcc(Hoster):
- __name__ = "Xdcc"
- __version__ = "0.2"
- __pattern__ = r'xdcc://.*?(/#?.*?)?/.*?/#?\d+/?' # xdcc://irc.Abjects.net/#channel/[XDCC]|Shit/#0004/
- __type__ = "hoster"
- __config__ = [
- ("nick", "str", "Nickname", "pyload"),
- ("ident", "str", "Ident", "pyloadident"),
- ("realname", "str", "Realname", "pyloadreal")
- ]
- __description__ = """A Plugin that allows you to download from an IRC XDCC bot"""
- __author_name__ = ("jeix")
- __author_mail__ = ("jeix@hasnomail.com")
-
- def process(self, pyfile):
- self.req = pyfile.m.core.requestFactory.getRequest(self.__name__, type="XDCC")
- self.doDownload(pyfile.url)
-
- def doDownload(self, url):
- self.pyfile.setStatus("downloading")
-
- download_folder = self.config['general']['download_folder']
- location = join(download_folder, self.pyfile.package().folder.decode(sys.getfilesystemencoding()))
- if not exists(location):
- makedirs(location)
-
- m = re.search(r'xdcc://(.*?)/#?(.*?)/(.*?)/#?(\d+)/?', url)
- server = m.group(1)
- chan = m.group(2)
- bot = m.group(3)
- pack = m.group(4)
- nick = self.getConf('nick')
- ident = self.getConf('ident')
- real = self.getConf('realname')
-
- newname = self.req.download(bot, pack, location, nick, ident, real, chan, server)
- self.pyfile.size = self.req.dl_size
-
- if newname:
- self.pyfile.name = newname
- \ No newline at end of file
diff --git a/module/plugins/hoster/YoupornCom.py b/module/plugins/hoster/YoupornCom.py
deleted file mode 100644
index 5c07f2c84..000000000
--- a/module/plugins/hoster/YoupornCom.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from module.plugins.Hoster import Hoster
-
-class YoupornCom(Hoster):
- __name__ = "YoupornCom"
- __type__ = "hoster"
- __pattern__ = r"http://(www\.)?youporn\.com/watch/.+"
- __version__ = "0.1"
- __description__ = """Youporn.com Video Download Hoster"""
- __author_name__ = ("willnix")
- __author_mail__ = ("willnix@pyload.org")
-
- def __init__(self, parent):
- Hoster.__init__(self, parent)
- self.parent = parent
- self.html = None
- self.html_old = None #time() where loaded the HTML
- self.time_plus_wait = None #time() + wait in seconds
-
- def set_parent_status(self):
- """ sets all available Statusinfos about a File in self.parent.status
- """
- if self.html == None:
- self.download_html()
- self.parent.status.filename = self.get_file_name()
- self.parent.status.url = self.get_file_url()
- self.parent.status.wait = self.wait_until()
-
- def download_html(self):
- url = self.parent.url
- self.html = self.load(url, post={"user_choice":"Enter"}, cookies=False)
-
- def get_file_url(self):
- """ returns the absolute downloadable filepath
- """
- if self.html == None:
- self.download_html()
-
- file_url = re.search(r'(http://download.youporn.com/download/\d*/.*\?download=1&ll=1&t=dd)">', self.html).group(1)
- return file_url
-
- def get_file_name(self):
- if self.html == None:
- self.download_html()
-
- file_name_pattern = r".*<title>(.*) - Free Porn Videos - YouPorn.com Lite \(BETA\)</title>.*"
- return re.search(file_name_pattern, self.html).group(1).replace("&amp;", "&").replace("/","") + '.flv'
-
- def file_exists(self):
- """ returns True or False
- """
- if self.html == None:
- self.download_html()
- if re.search(r"(.*invalid video_id.*)", self.html) != None:
- return False
- else:
- return True
diff --git a/module/plugins/hoster/YoutubeCom.py b/module/plugins/hoster/YoutubeCom.py
deleted file mode 100644
index 79c359ad7..000000000
--- a/module/plugins/hoster/YoutubeCom.py
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from module.plugins.Hoster import Hoster
-
-class YoutubeCom(Hoster):
- __name__ = "YoutubeCom"
- __type__ = "hoster"
- __pattern__ = r"http://(www\.)?(de\.)?\youtube\.com/watch\?v=.*"
- __version__ = "0.2"
- __config__ = [ ("quality", "str" , "Quality Setting", "hd") ]
- __description__ = """Youtube.com Video Download Hoster"""
- __author_name__ = ("spoob")
- __author_mail__ = ("spoob@pyload.org")
-
- def process(self, pyfile):
- html = self.load(pyfile.url)
-
- if re.search(r"(.*eine fehlerhafte Video-ID\.)", html) != None:
- self.offline()
-
- videoId = pyfile.url.split("v=")[1].split("&")[0]
- videoHash = re.search(r'&t=(.+?)&', html).group(1)
-
-
- file_name_pattern = '<meta name="title" content="(.+?)">'
- is_hd_pattern = r"'IS_HD_AVAILABLE': (false|true)"
- file_suffix = ".flv"
- is_hd = re.search(is_hd_pattern, html).group(1)
- hd_available = (is_hd == "true")
-
- if self.getConf("quality") == "hd" or self.getConf("quality") == "hq":
- file_suffix = ".mp4"
-
- name = (re.search(file_name_pattern, html).group(1).replace("/", "") + file_suffix).decode("utf8")
- pyfile.name = name #.replace("&amp;", "&").replace("ö", "oe").replace("ä", "ae").replace("ü", "ue")
-
- if self.getConf("quality") == "sd":
- quality = "&fmt=6"
- elif self.getConf("quality") == "hd" and hd_available:
- quality = "&fmt=22"
- else:
- quality = "&fmt=18"
-
- file_url = 'http://youtube.com/get_video?video_id=' + videoId + '&t=' + videoHash + quality + "&asv=2"
-
- self.download(file_url)
diff --git a/module/plugins/hoster/ZippyshareCom.py b/module/plugins/hoster/ZippyshareCom.py
deleted file mode 100644
index 3740f8c14..000000000
--- a/module/plugins/hoster/ZippyshareCom.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-import urllib
-from module.plugins.Hoster import Hoster
-
-class ZippyshareCom(Hoster):
- __name__ = "ZippyshareCom"
- __type__ = "hoster"
- __pattern__ = r"(http://)?www?\d{0,2}\.zippyshare.com/v/"
- __version__ = "0.2"
- __description__ = """Zippyshare.com Download Hoster"""
- __author_name__ = ("spoob")
- __author_mail__ = ("spoob@pyload.org")
-
- def setup(self):
- self.html = None
- self.wantReconnect = False
- self.multiDL = False
-
- def process(self, pyfile):
- self.pyfile = pyfile
- self.download_html()
- if not self.file_exists():
- self.offline()
-
- pyfile.name = self.get_file_name()
- self.download(self.get_file_url())
-
- def download_html(self):
- url = self.pyfile.url
- self.html = self.load(url, cookies=True)
-
- def get_file_url(self):
- """ returns the absolute downloadable filepath
- """
- file_url_pattern = r"var \w* = '(http%.*?)';"
- file_url_search = re.search(file_url_pattern, self.html).group(1)
- file_url = urllib.unquote(file_url_search.replace("nnn", "aaa").replace("unlg", "v").replace("serwus", "zippyshare"))
- return file_url
-
- def get_file_name(self):
- if self.html == None:
- self.download_html()
- if not self.wantReconnect:
- file_name = re.search(r'Name: </font> <font.*>(.*?)</font>', self.html).group(1)
- return file_name
- else:
- return self.pyfile.url
-
- def file_exists(self):
- """ returns True or False
- """
- if self.html == None:
- self.download_html()
- if re.search(r'File does not exist on this server', self.html) != None:
- return False
- else:
- return True
diff --git a/module/plugins/hoster/__init__.py b/module/plugins/hoster/__init__.py
deleted file mode 100644
index e69de29bb..000000000
--- a/module/plugins/hoster/__init__.py
+++ /dev/null