Merge shared code into __init__.py

develop
Sven Slootweg 12 years ago
parent 92bceed168
commit fd3011e96d

@ -1,6 +1,12 @@
import re
import re, sys
from resolvers import *
from HTMLParser import HTMLParser
# Fix encoding to deal with UTF-8 page contents
reload(sys)
sys.setdefaultencoding("UTF-8")
# Main functions
def resolve(url):
if re.match("https?:\/\/(www\.)?putlocker\.com", url) is not None:
return putlocker.resolve(url)
@ -32,3 +38,15 @@ def recurse(url):
url = result['url']
previous_result = result
# Exception classes
class ResolverError(Exception):
def __init__(self, value):
self.val = value
def __str__(self):
return repr(self.val)
# Utility functions
def unescape(s):
return HTMLParser.unescape.__func__(HTMLParser, s)

@ -1,23 +1,23 @@
import re, time, urllib2
from resolv.shared import ResolverError
import resolv
def resolve(url):
matches = re.search("https?:\/\/(www\.)?filebox\.com\/([a-zA-Z0-9]+)", url)
if matches is None:
raise ResolverError("The provided URL is not a valid Filebox.com URL.")
raise resolv.ResolverError("The provided URL is not a valid Filebox.com URL.")
video_id = matches.group(2)
try:
contents = urllib2.urlopen("http://www.filebox.com/embed-%s-970x543.html" % video_id).read()
except:
raise ResolverError("Could not retrieve the video page.")
raise resolv.ResolverError("Could not retrieve the video page.")
matches = re.search("url: '([^']+)',", contents)
if matches is None:
raise ResolverError("No video was found on the specified URL.")
raise resolv.ResolverError("No video was found on the specified URL.")
video_file = matches.group(1)
@ -37,19 +37,19 @@ def resolve2(url):
try:
import mechanize
except ImportError:
raise ResolverError("The Python mechanize module is required to resolve Filebox.com URLs.")
raise resolv.ResolverError("The Python mechanize module is required to resolve Filebox.com URLs.")
matches = re.search("https?:\/\/(www\.)?filebox\.com\/([a-zA-Z0-9]+)", url)
if matches is None:
raise ResolverError("The provided URL is not a valid Filebox.com URL.")
raise resolv.ResolverError("The provided URL is not a valid Filebox.com URL.")
try:
browser = mechanize.Browser()
browser.set_handle_robots(False)
browser.open(url)
except:
raise ResolverError("The Filebox.com site could not be reached.")
raise resolv.ResolverError("The Filebox.com site could not be reached.")
time.sleep(6)
@ -58,12 +58,12 @@ def resolve2(url):
result = browser.submit()
page = result.read()
except Exception, e:
raise ResolverError("The file was removed, or the URL is incorrect.")
raise resolv.ResolverError("The file was removed, or the URL is incorrect.")
matches = re.search("this\.play\('([^']+)'\)", page)
if matches is None:
raise ResolverError("No video file was found on the given URL; the Filebox.com server for this file may be in maintenance mode, or the given URL may not be a video file. The Filebox.com resolver currently only supports video links.")
raise resolv.ResolverError("No video file was found on the given URL; the Filebox.com server for this file may be in maintenance mode, or the given URL may not be a video file. The Filebox.com resolver currently only supports video links.")
video_file = matches.group(1)

@ -1,23 +1,23 @@
import re, urllib2
from resolv.shared import ResolverError, unescape
import resolv
def resolve(url):
try:
contents = urllib2.urlopen(url).read()
except:
raise ResolverError("Could not retrieve the specified URL.")
raise resolv.ResolverError("Could not retrieve the specified URL.")
matches = re.search('kNO = "([^"]+)";', contents)
if matches is None:
raise ResolverError("No download was found on the given URL; the server for this file may be in maintenance mode, or the given URL may not be valid. It is also possible that you have been blocked - CAPTCHA support is not yet present.")
raise resolv.ResolverError("No download was found on the given URL; the server for this file may be in maintenance mode, or the given URL may not be valid. It is also possible that you have been blocked - CAPTCHA support is not yet present.")
file_url = matches.group(1)
try:
file_title = unescape(re.search('<title>([^<]+)<\/title>', contents).group(1))
except:
raise ResolverError("Could not find the download title.")
raise resolv.ResolverError("Could not find the download title.")
file_dict = {
'url' : file_url,

@ -1,15 +1,15 @@
import re, base64
from resolv.shared import ResolverError
import resolv
def resolve(url):
matches = re.search("https?:\/\/(www\.)?1channel\.ch\/external\.php\?.*url=([^&]+)", url)
if matches is None:
raise ResolverError("The provided URL is not a valid external 1channel URL.")
raise resolv.ResolverError("The provided URL is not a valid external 1channel URL.")
try:
real_url = base64.b64decode(matches.group(2)).strip()
except TypeError:
raise ResolverError("The provided URL is malformed.")
raise resolv.ResolverError("The provided URL is malformed.")
return { 'url': real_url }

@ -1,23 +1,23 @@
import re, urllib, urllib2
from resolv.shared import ResolverError, unescape
import resolv
def resolve(url):
matches = re.search("https?:\/\/(www\.)?pastebin\.com\/([a-zA-Z0-9]+)", url)
if matches is None:
raise ResolverError("The provided URL is not a valid Pastebin URL.")
raise resolv.ResolverError("The provided URL is not a valid Pastebin URL.")
paste_id = matches.group(2)
try:
contents = urllib2.urlopen(url).read()
except:
raise ResolverError("Could not retrieve the specified URL. The specified paste may not exist.")
raise resolv.ResolverError("Could not retrieve the specified URL. The specified paste may not exist.")
matches = re.search("<h1>([^<]+)</h1>", contents)
if matches is None:
raise ResolverError("The provided URL is not a valid paste.")
raise resolv.ResolverError("The provided URL is not a valid paste.")
paste_title = unescape(matches.group(1))

@ -1,5 +1,5 @@
import re
from resolv.shared import ResolverError, unescape
import resolv
def resolve(url):
try:
@ -10,7 +10,7 @@ def resolve(url):
matches = re.search("https?:\/\/(www\.)?putlocker\.com\/(file|embed)\/([A-Z0-9]+)", url)
if matches is None:
raise ResolverError("The provided URL is not a valid PutLocker URL.")
raise resolv.ResolverError("The provided URL is not a valid PutLocker URL.")
video_id = matches.group(3)
@ -19,38 +19,38 @@ def resolve(url):
browser.set_handle_robots(False)
browser.open("http://putlocker.com/embed/%s" % video_id)
except:
raise ResolverError("The PutLocker site could not be reached.")
raise resolv.ResolverError("The PutLocker site could not be reached.")
try:
browser.select_form(nr=0)
result = browser.submit()
page = result.read()
except Exception, e:
raise ResolverError("The file was removed, or the URL is incorrect.")
raise resolv.ResolverError("The file was removed, or the URL is incorrect.")
matches = re.search("playlist: '([^']+)'", page)
if matches is None:
raise ResolverError("No playlist was found on the given URL; the PutLocker server for this file may be in maintenance mode, or the given URL may not be a video file. The PutLocker resolver currently only supports video links.")
raise resolv.ResolverError("No playlist was found on the given URL; the PutLocker server for this file may be in maintenance mode, or the given URL may not be a video file. The PutLocker resolver currently only supports video links.")
playlist = matches.group(1)
try:
browser.open("http://www.putlocker.com%s" % playlist)
except:
raise ResolverError("The playlist file for the given URL could not be loaded.")
raise resolv.ResolverError("The playlist file for the given URL could not be loaded.")
matches = re.search("url=\"([^\"]+)\" type=\"video\/x-flv\"", browser.response().read())
if matches is None:
raise ResolverError("The playlist file does not contain any video URLs. The PutLocker resolver currently only supports video links.")
raise resolv.ResolverError("The playlist file does not contain any video URLs. The PutLocker resolver currently only supports video links.")
video_file = matches.group(1)
try:
video_title = unescape(re.search('<a href="\/file\/[^"]+"[^>]*><strong>([^<]*)<\/strong><\/a>', page).group(1))
video_title = resolv.unescape(re.search('<a href="\/file\/[^"]+"[^>]*><strong>([^<]*)<\/strong><\/a>', page).group(1))
except:
raise ResolverError("Could not find the video title.")
raise resolv.ResolverError("Could not find the video title.")
stream_dict = {
'url' : video_file,

@ -1,16 +1,16 @@
import re
from resolv.shared import ResolverError, unescape
import resolv
def resolve(url):
try:
import mechanize
except ImportError:
raise ResolverError("The Python mechanize module is required to resolve SockShare URLs.")
raise resolv.ResolverError("The Python mechanize module is required to resolve SockShare URLs.")
matches = re.search("https?:\/\/(www\.)?sockshare\.com\/(file|embed)\/([A-Z0-9]+)", url)
if matches is None:
raise ResolverError("The provided URL is not a valid SockShare URL.")
raise resolv.ResolverError("The provided URL is not a valid SockShare URL.")
video_id = matches.group(3)
@ -19,38 +19,38 @@ def resolve(url):
browser.set_handle_robots(False)
browser.open("http://sockshare.com/embed/%s" % video_id)
except:
raise ResolverError("The SockShare site could not be reached.")
raise resolv.ResolverError("The SockShare site could not be reached.")
try:
browser.select_form(nr=0)
result = browser.submit()
page = result.read()
except Exception, e:
raise ResolverError("The file was removed, or the URL is incorrect.")
raise resolv.ResolverError("The file was removed, or the URL is incorrect.")
matches = re.search("playlist: '([^']+)'", page)
if matches is None:
raise ResolverError("No playlist was found on the given URL; the SockShare server for this file may be in maintenance mode, or the given URL may not be a video file. The SockShare resolver currently only supports video links.")
raise resolv.ResolverError("No playlist was found on the given URL; the SockShare server for this file may be in maintenance mode, or the given URL may not be a video file. The SockShare resolver currently only supports video links.")
playlist = matches.group(1)
try:
browser.open("http://www.sockshare.com%s" % playlist)
except:
raise ResolverError("The playlist file for the given URL could not be loaded.")
raise resolv.ResolverError("The playlist file for the given URL could not be loaded.")
matches = re.search("url=\"([^\"]+)\" type=\"video\/x-flv\"", browser.response().read())
if matches is None:
raise ResolverError("The playlist file does not contain any video URLs. The SockShare resolver currently only supports video links.")
raise resolv.ResolverError("The playlist file does not contain any video URLs. The SockShare resolver currently only supports video links.")
video_file = matches.group(1)
try:
video_title = unescape(re.search('<a href="\/file\/[^"]+"[^>]*><strong>([^<]*)<\/strong><\/a>', page).group(1))
except:
raise ResolverError("Could not find the video title.")
raise resolv.ResolverError("Could not find the video title.")
stream_dict = {
'url' : video_file,

@ -1,11 +1,11 @@
import re, urllib, urllib2
from resolv.shared import ResolverError, unescape
import resolv
def resolve(url):
try:
contents = urllib2.urlopen(url).read()
except:
raise ResolverError("Could not retrieve the specified URL.")
raise resolv.ResolverError("Could not retrieve the specified URL.")
map_start = "url_encoded_fmt_stream_map="
map_end = "\\u0026amp;"
@ -14,19 +14,19 @@ def resolve(url):
pos_start = contents.index(map_start) + len(map_start) + 6
snippet = contents[pos_start:]
except ValueError:
raise ResolverError("The starting position for the YouTube player configuration could not be found. Is the URL really a valid video page?")
raise resolv.ResolverError("The starting position for the YouTube player configuration could not be found. Is the URL really a valid video page?")
try:
pos_end = snippet.index(map_end)
stream_map = snippet[:pos_end]
except ValueError:
raise ResolverError("The ending position for the YouTube player configuration could not be found.")
raise resolv.ResolverError("The ending position for the YouTube player configuration could not be found.")
try:
stream_map = urllib.unquote(stream_map)
streams = stream_map.split(',url=')
except:
raise ResolverError("The YouTube player configuration is corrupted.")
raise resolv.ResolverError("The YouTube player configuration is corrupted.")
stream_pool = []
@ -34,7 +34,7 @@ def resolve(url):
fields = stream.split('&')
if len(fields) < 5:
raise ResolverError("The amount of fields in the YouTube player configuration is incorrect.")
raise resolv.ResolverError("The amount of fields in the YouTube player configuration is incorrect.")
video_url = urllib.unquote(fields[0])
quality = fields[1].split("=")[1]
@ -83,6 +83,6 @@ def resolve(url):
try:
video_title = unescape(re.search('<meta property="og:title" content="([^"]*)">', contents).group(1))
except:
raise ResolverError("Could not find the video title.")
raise resolv.ResolverError("Could not find the video title.")
return { 'title': video_title, 'videos': stream_pool }

@ -1,15 +0,0 @@
from HTMLParser import HTMLParser
import sys
reload(sys)
sys.setdefaultencoding("UTF-8")
class ResolverError(Exception):
def __init__(self, value):
self.val = value
def __str__(self):
return repr(self.val)
def unescape(s):
return HTMLParser.unescape.__func__(HTMLParser, s)
Loading…
Cancel
Save