Skip to content

Instantly share code, notes, and snippets.

@smoothdvd
Created September 6, 2011 00:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save smoothdvd/1196231 to your computer and use it in GitHub Desktop.
Save smoothdvd/1196231 to your computer and use it in GitHub Desktop.
Youtube Downloader
# Author: Abhinay Omkar
# Youtube Downloader
# Modifier: Alex Gao
# Youtube now uses cookies to verify download
import sys
from urllib2 import urlopen, unquote
from urlparse import parse_qs, urlparse
import requests
youtube_watchurl = sys.argv[1]
url_query = urlparse(youtube_watchurl).query
video_id = parse_qs(url_query)['v'][0]
url_data = urlopen('http://www.youtube.com/get_video_info?&video_id=' + video_id).read()
r = requests.get('http://www.youtube.com/')
print r.cookies
url_info = parse_qs(unquote(url_data.decode('utf-8')))
if url_info['status'][0]=='fail':
print "ERROR: Unable to download this video!"
sys.exit(1)
token_value = url_info['token'][0]
video_title = url_info['title'][0]
download_urls = url_info['itag']
download_url_fmt_18 = download_urls[5]
#print download_url_fmt_18
download_url = download_url_fmt_18.split(u'=', 1)[1]
#print download_url_fmt_18.split(u'=', 1)[1]
#download_url = "http://www.youtube.com/videoplayback?video_id={0}&t={1}&fmt=18".format(video_id, token_value)
print "Downloading: %s..." % video_title
print "It may take something, Please wait..."
filename = video_title+".mp4"
v = requests.get(download_url, cookies=r.cookies)
#download = urlopen(download_url).read()
download = v.read()
f = open(filename, 'wb')
f.write(download)
f.close()
print "Completed!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment