Search google

Google
 

This is the place where I leave my scripts, my useful files, glad to have your suggestions. If you want to make discuss, please contact me at YM id bornbygoogle or my mail bornbygoogle@yahoo.com or simply let ur mail. I'll try to contact as soon as possible :) Nice to see you :D

Wednesday, August 20, 2008

My python/perl script : Get direct links of Megaupload links !

This is not really my script, I have just changed a little bit source of the package megaupload-dl to have this script. Thanks to the author of megaupload-dl package.

This script is only usable with a list. You must create a new file, enter all the links in that file. And the direct links is going to replace the mega link.

Example : You have the file new.txt contain the links : www.megaupload.com/?d=....
www.megaupload.com/?d=....

You have this script and run it, you've got the a new file - new.txt - with the content : the direct links of www.megaupload.com/?d=....

This is the script :

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
###
# o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o
# 0 0
# o Usage : python megaupload-dl [list files] o
# 0 0
# o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o0o
#
###

import cookielib, urllib, urllib2
import time, sys
import subprocess
import re
import os
import ConfigParser

try:
import pygtk
pygtk.require("2.0")
import gtk
with_gtk = True
except ImportError:
with_gtk = False



def log(text):
"""Prints a message with the local time and date."""
date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
print "[%s] - %s" % (date, text)

def from_megaupload(url):
"""Check if this is a megaupload link"""
return (url.startswith("megaupload.com") or
url.startswith("www.megaupload.com") or
url.startswith("http://megaupload.com") or
url.startswith("http://www.megaupload.com"))


class redirectManager(urllib2.HTTPRedirectHandler):
"""Used to manage the redirects we can find when the user selected direct
downloads at Megaupload"""
def __init__(self):
self.redirect = ""

def http_error_301(self, req, fp, code, msg, headers):
"""Executed when we find a 301 redirect"""
result = urllib2.HTTPRedirectHandler.http_error_301(self, req, fp, code, msg, headers)
result.status = code
self.redirect = result.geturl()
return result

def http_error_302(self, req, fp, code, msg, headers):
"""Executed when we find a 302 redirect"""
result = urllib2.HTTPRedirectHandler.http_error_302(self, req, fp, code, msg, headers)
result.status = code
self.redirect = result.geturl()
return result



# There needs to be at least one argument
if len(sys.argv) <>
print "Too few arguments"
print "Try --help for more information"
exit()


# Get the login info from the config file, or ask for it
if os.environ.has_key("APPDATA") and os.path.exists(os.environ["APPDATA"]):
path = os.environ["APPDATA"] + "/megaupload-dl.ini"
else:
path = os.path.expanduser("~") + "/.megaupload-dl"

if not os.path.exists(path):
user = raw_input("Enter your user name: ")
password = raw_input("Enter your password: ")
print
else:
cfg = ConfigParser.SafeConfigParser()
cfg.readfp(file(path))
try:
user = cfg.get("Login", "user")
password = cfg.get("Login", "password")
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
print "The config file is corrupt"
user = raw_input("Enter your user name: ")
password = raw_input("Enter your password: ")
print
os.remove(path)


# Process the arguments
if sys.argv[1] == "-h" or sys.argv[1] == "--help":
print "megaupload-dl http://megaupload.com/?d=FILE1 ... http://megaupload.com/?d=FILEN"
print " Download one or several megaupload links passed as argument\n"

print "megaupload-dl http://some-web-site.com"
print " Download a list of links from an URL\n"

print "megaupload-dl links.txt"
print " Download a list of links from a file\n"

print "megaupload-dl -c"
print " Download a list of links from the clipboard (PyGTK has to be installed)\n"
exit()

from_file = False
urls = []
if os.path.exists(sys.argv[1]): # If this is a file
from_file = True
l_file = sys.argv[1]
log("Reading list of links from the file %s" % l_file)
print "\n"
list_f = file(l_file, "r")
urls = list_f.readlines()
list_f.close()
elif sys.argv[1].startswith("http://"): # If this is a URL
if from_megaupload(sys.argv[1]):
for i in range(1, len(sys.argv)):
urls.append(sys.argv[i])
else:
log("This is not a Megaupload URL. Trying to retrieve links from " + sys.argv[1])
try:
source = "\n".join(urllib.urlopen(sys.argv[1]).readlines())
except IOError:
print "Operation timed out"
exit()
urls_source = re.findall('megaupload\.com/\?d=[\w]{8}', source)
urls_source += re.findall('megaupload\.com/[\w]{2}/\?d=[\w]{8}', source)
for url in urls_source:
url = "http://" + url + "\n"
if not url in urls:
urls.append(url)
print
if urls:
log("I found %s links. Saving to megauploadtmp.txt" % len(urls))
l_file = "megauploadtmp.txt"
list_f = file(l_file, "w")
list_f.write("".join(urls))
list_f.close()
from_file = True
print urls
print
else:
log("I found 0 links.")
exit()
elif sys.argv[1] == "-c" or sys.argv[1] == "--clipboard":
if not with_gtk:
print "PyGTK is not available in your system. This feature cannot be used"
exit()
else:
log("Trying to retrieve links from the clipboard")
clipboard = gtk.clipboard_get()
text = clipboard.wait_for_text()
urls_source = re.findall('megaupload\.com/\?d=[\w]{8}', text)
for url in urls_source:
url = "http://" + url + "\n"
if not url in urls:
urls.append(url)
print
if urls:
log("I found %s links. Saving to megauploadtmp.txt" % len(urls))
l_file = "megauploadtmp.txt"
list_f = file(l_file, "w")
list_f.write("".join(urls))
list_f.close()
from_file = True
print urls
print
else:
log("I found 0 links.")
exit()
else:
print "%s is not a valid argument." % sys.argv[1]
print "Please use a URL or URLs from Megaupload, a file with a list of Megaupload URLs, or the address of a site with Megaupload URLs."
print "If this is a URL, please ensure that it starts with http://"
print "If this is a file, please ensure that it exists"
exit()


# Log in to get the cookie
cred = urllib.urlencode({"login": user, "password": password})
req = urllib2.urlopen("http://megaupload.com", cred)
cookie = req.headers.get("set-cookie", "")

if cookie:
(cookie,_) = cookie.split(";",1)
log("Logged in as %s" % user)
print
if not os.path.exists(path):
config = "[Login]\n"
config += "user = %s\n" % user
config += "password = %s\n" % password
config_file = open(path, "w")
config_file.write(config)
config_file.close()
else:
log("Invalid user name or password")
exit()


# Download the files
current = urls
errors = ""
for url in urls:
try:
if url[:-1] == "\n":
url = url[:-1]

parts = url.split("/")
if len(parts) > 4:
url = "http://megaupload.com/" + parts[-1]

print url

req = urllib2.Request(url)
req.add_header("Cookie", cookie)
req.add_header("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.8 (Ubuntu-gutsy)")
gr = redirectManager()
opener = urllib2.build_opener(gr)
source = opener.open(req)

if gr.redirect and url != gr.redirect:
# If this is a redirect, the user selected Direct Downloads at Megaupload's preferences
# so we can download the file already
real_url = gr.redirect
else:
# If this is not a redirect, we have to look for the direct download link
source = source.read()

prefixes = re.findall("document.getElementById\(\"download_html\"\).innerHTML = '", source)
if prefixes:
prefix = prefixes[-1]
else:
log("This file cannot be downloaded")
errors = errors + current[0]
current = current[1:]
print "\n\n"
continue

real_url = re.findall("document.getElementById\(\"downloadhtml\"\).innerHTML = '

real_url = "www" + prefix + "." + real_url
real_url = urllib.quote(real_url)

if from_file:
current = current[1:]
list_f = file(l_file, "w")
list_f.writelines(real_url)
list_f.close()
log("List updated")

print "\n\n"
except KeyboardInterrupt:
print "\n\nBye"
exit()
except ValueError:
log("This doesn't look like an url. We won't get its direct links\n\n")
if from_file:
errors = errors + current[0]
current = current[1:]
except urllib2.URLError, e:
log("URLError, we can't get the direct links\n\n")
print e
if from_file:
errors = errors + current[0]
current = current[1:]
except:
log("Unexpected error.")
raise

if errors:
log("The following links could not be got")
print errors
else:
log("All links were got")

log("Finished")


Have fun !

Convert Megaupload links to Rapidshare links !

If someone want to convert Megaupload to Rapidshare links, please let me know, I'll do it for you ! ( for free, all ). If you want, please send those links to me, with the mail title : Convert to Rapidshare !. My mail is bornbygoogle@yahoo.com. Or YM ID : bornbygoogle.

Nice to help you ! :)