diff options
author | Jeix <devnull@localhost> | 2010-06-22 20:13:42 +0200 |
---|---|---|
committer | Jeix <devnull@localhost> | 2010-06-22 20:13:42 +0200 |
commit | 88b2e92ff8b48af1291088a87dd69d41842537b6 (patch) | |
tree | bcbdc6cdc4e7f906022e94318e818dbeba26acdf /module | |
parent | deleted some print statements (diff) | |
download | pyload-88b2e92ff8b48af1291088a87dd69d41842537b6.tar.xz |
porno update, new plugins:
Pornhub
Redtube
Pornhost
Diffstat (limited to 'module')
-rw-r--r-- | module/config/core_default.xml | 3 | ||||
-rwxr-xr-x | module/network/Request.py | 10 | ||||
-rw-r--r-- | module/plugins/hoster/PornhostCom.py | 73 | ||||
-rw-r--r-- | module/plugins/hoster/PornhubCom.py | 64 | ||||
-rw-r--r-- | module/plugins/hoster/RedtubeCom.py | 54 |
5 files changed, 200 insertions, 4 deletions
diff --git a/module/config/core_default.xml b/module/config/core_default.xml index a0d9ffbf2..4d2e59aad 100644 --- a/module/config/core_default.xml +++ b/module/config/core_default.xml @@ -107,7 +107,10 @@ module.plugins.hoster.MegavideoCom, module.plugins.hoster.MyvideoDe, module.plugins.hoster.NetloadIn, + module.plugins.hoster.PornhostCom, + module.plugins.hoster.PornhubCom, module.plugins.hoster.RapidshareCom, + module.plugins.hoster.RedtubeCom, module.plugins.hoster.ShareonlineBiz, module.plugins.hoster.ShragleCom, module.plugins.hoster.StorageTo, diff --git a/module/network/Request.py b/module/network/Request.py index 1fb76d7e0..4c7de2b22 100755 --- a/module/network/Request.py +++ b/module/network/Request.py @@ -123,12 +123,13 @@ class Request: return self.cookieJar.getCookie(name) return None - def load(self, url, get={}, post={}, ref=True, cookies=True, just_header=False): + def load(self, url, get={}, post={}, ref=True, cookies=True, just_header=False, no_post_encode=False): url = str(url) if post: - post = urllib.urlencode(post) + if not no_post_encode: + post = urllib.urlencode(post) else: post = None @@ -199,12 +200,13 @@ class Request: self.pycurl.setopt(pycurl.PROXY, adress.split(":")[0]) self.pycurl.setopt(pycurl.PROXYPORT, adress.split(":")[1]) - def download(self, url, file_name, get={}, post={}, ref=True, cookies=True): + def download(self, url, file_name, get={}, post={}, ref=True, cookies=True, no_post_encode=False): url = str(url) if post: - post = urllib.urlencode(post) + if not no_post_encode: + post = urllib.urlencode(post) else: post = None diff --git a/module/plugins/hoster/PornhostCom.py b/module/plugins/hoster/PornhostCom.py new file mode 100644 index 000000000..92bc93f24 --- /dev/null +++ b/module/plugins/hoster/PornhostCom.py @@ -0,0 +1,73 @@ +#!/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 PornhostCom(Hoster):
+ __name__ = "PornhostCom"
+ __type__ = "hoster"
+ __pattern__ = r'http://[\w\.]*?pornhost\.com/([0-9]+/[0-9]+\.html|[0-9]+)'
+ __version__ = "0.1"
+ __description__ = """Pornhost.com Download Hoster"""
+ __author_name__ = ("jeix")
+ __author_mail__ = ("jeix@hasnomail.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()
+
+ 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 new file mode 100644 index 000000000..c5fda76ae --- /dev/null +++ b/module/plugins/hoster/PornhubCom.py @@ -0,0 +1,64 @@ +#!/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 PornhubCom(Hoster):
+ __name__ = "PornhubCom"
+ __type__ = "hoster"
+ __pattern__ = r'http://[\w\.]*?pornhub\.com/view_video\.php\?viewkey=[\w\d]+'
+ __version__ = "0.1"
+ __description__ = """Pornhub.com Download Hoster"""
+ __author_name__ = ("jeix")
+ __author_mail__ = ("jeix@hasnomail.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()
+
+ url = "http://www.pornhub.com//gateway.php"
+ video_id = self.parent.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=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/RedtubeCom.py b/module/plugins/hoster/RedtubeCom.py new file mode 100644 index 000000000..3d97e12d6 --- /dev/null +++ b/module/plugins/hoster/RedtubeCom.py @@ -0,0 +1,54 @@ +#!/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 RedtubeCom(Hoster):
+ __name__ = "RedtubeCom"
+ __type__ = "hoster"
+ __pattern__ = r'http://[\w\.]*?redtube\.com/\d+'
+ __version__ = "0.1"
+ __description__ = """Redtube.com Download Hoster"""
+ __author_name__ = ("jeix")
+ __author_mail__ = ("jeix@hasnomail.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()
+
+ 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
+
|