diff --git a/tools/downloading/putlocker-vlc.py b/tools/downloading/putlocker-vlc.py new file mode 100644 index 0000000..0249017 --- /dev/null +++ b/tools/downloading/putlocker-vlc.py @@ -0,0 +1,51 @@ +#!/usr/bin/python + +import re, mechanize, subprocess, sys + +if len(sys.argv) < 2: + print "Syntax: putlocker-vlc " + sys.exit(1) + +url = sys.argv[1] +matches = re.search("\/(file|embed)\/([A-Z0-9]+)", url) + +if matches is None: + print "The URL you provided does not appear to be a valid PutLocker or SockShare URL." + sys.exit(1) + +video_id = matches.group(2) +matches = re.search("(http:\/\/[^/]+)\/", url) +domain = matches.group(1) +print "Video ID: %s | Host: %s" % (video_id, domain) + +try: + print "Retrieving ad page..." + browser = mechanize.Browser() + browser.set_handle_robots(False) + browser.open("%s/embed/%s" % (domain, video_id)) +except: + print "Something went wrong; the server might be down." + sys.exit(1) + +try: + print "Skipping ad..." + browser.select_form(nr=0) + result = browser.submit() +except: + print "The file has been removed, or the URL is incorrect." + sys.exit(1) + +matches = re.search("playlist: '([^']+)'", result.read()) +playlist = matches.group(1) +print "Retrieved playlist URL." + +browser.open(domain + playlist) +print "Retrieved playlist data." +matches = re.search("url=\"([^\"]+)\" type=\"video\/x-flv\"", browser.response().read()) +video_file = re.sub("&","&",matches.group(1)) +print "Found video URL." + +print "Launching VLC with the specified video file..." +cmd = ["vlc", "--play-and-exit"] +cmd.append(video_file) +subprocess.call(cmd)