Download and watch YouTube videos from Linux shell prompt
Joe Barr shows us how to enhance your YouTube viewing pleasure!
FTA, "Publishing your own video on YouTube, or watching other people's videos, is all the rage these days. Why are we talking about YouTube, in a column about the CLI? Because this week we're writing about youtube-dl, a clever little CLI tool that's easy to install and and use to fetch YouTube videos.
Youtube-dl is a Python script, licensed under the "non-copyleft" free software MIT/X11 license. It is not platform-specific; it can run under Linux, Mac OS X, or Windows platforms so long as a recent -- 2.4 or later -- version of Python is installed."
Read more at Linux.com
Update: Check out this bash script - it does same thing w/o using python.
Want to stay up to date with the latest Linux tips, news and announcements? Subscribe to our free e-mail newsletter or RSS feed to get all updates.
You can Email this page to a friend.
You may also be interested in other helpful articles:
- Check out cool Firefox ad
- QD#3: Is Linux being left behind?, LVM for MySQL Backup, Inkscape HOWTO on Youtube, Wordpress hacks, Keep desk clean
- Installing Ubuntu training videos
- Manage your iPod or Motorola mobile phone with Floola [ all operating systems ]
- How do I monitor Linux/BSD system over time without scrolling output?
Discussion on This Article:
Leave a Reply
We encourage your comments, and suggestions. But please stay on topic, be polite, and avoid spam. Thank you very much for stopping by our site!


http://bashscripts.org/viewtopic.php?t=210
#!/bin/bash
bu="http://youtube.com/get_video.php?";mkdir -p ~/YouTube;cd ~/YouTube;read -p "YouTube url? " ur;read -p "Name? " nv
wget ${ur} -O /tmp/y1;uf=${bu}`grep player2.swf /tmp/y1 | cut -d? -f2 | cut -d\" -f1`;wget "${uf}" -O /tmp/y.flv
ffmpeg -i /tmp/y.flv -ab 56 -ar 22050 -b 500 -s 320x240 ${nv}.mpg;rm /tmp/y.flv; rm /tmp/y1;rm gmon.out; exit
BASH RULES
Hee
Nice and dirty bash work
Appreciate your post.
lol @ rm gmon.out
Great information, thanks very much!
You might try this for Zsh (maybe modern Bournes?):
ytdl () {
video_id=${1#http://*youtube.com/watch?v=}
video_id=${video_id#http://*youtube.com/v/}
video_id=${video_id%&*}
player_line=`ftp -o - "http://www.youtube.com/watch?v=$video_id"|grep /player2.swf`
base_getter_url=http://youtube.com/get_video.php?
url=${player_line/*player2.swf\?/$base_getter_url}
url=${url%%\"*}
ftp -o $video_id.flv "$url"
ffmpeg -i $video_id.flv -ab 56 -ar 22050 -b 500 -s 320x240 $video_id.mpg
echo
echo mplayer $video_id.mpg
}
If you have an ftp with HTTP support.
Nice to see you are using Zsh
Appreciate your script/post.
great
thats real hacking lol
The ZSH code has a problem:
ffmpeg version 0.4.9-pre1, build 4718, Copyright (c) 2000-2004 Fabrice Bellard
built on Apr 4 2005 06:01:28, gcc: 3.4.2 [FreeBSD] 20040728
Input #0, flv, from ‘j0u_F8-oYQE.flv’:
Duration: N/A, bitrate: N/A
Stream #0.0: Audio: mp3, 22050 Hz, mono
Stream #0.1: Video: flv, 320×240, 15.00 fps
Output #0, mpeg, to ‘j0u_F8-oYQE.mpg’:
Stream #0.0: Video: mpeg1video, 320×240, 15.00 fps, q=2-31, 500 kb/s
Stream #0.1: Audio: mp2, 22050 Hz, mono, 56 kb/s
Stream mapping:
Stream #0.1 -> #0.0
Stream #0.0 -> #0.1
[mpeg1video @ 0x282f4010]MPEG1/2 doesnt support 15/1 fps
Error while opening codec for stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height
Here’s the bash script, made more solid. I fixed the ffmpeg call (it doesn’t like making 15fps mpeg files), and kept the flv at the end.
If you want to use the flv from your own apache server you’ll need to add
video/x-flv flv
to /etc/mime.types and restart apache, then go and get flash_flv player from http://www.jeroenwijering.com/upload/flash_flv_player.zip
unpack it, put flvplayer.swf and flvplayer.html on your site with the .flv, and modify flvplayer.html appropriately
#!/bin/bash
bu=”http://youtube.com/get_video.php?”
tmp=`mktemp`
touch ${tmp}.flv
read -p “YouTube url? ” ur
wget ${ur} -O ${tmp}
uf=${bu}`grep player2.swf ${tmp} | cut -d? -f2 | cut -d\” -f1`
nv=`cat ${tmp} | grep ‘h1 id=”video_title”‘ | cut -d “>” -f 2 | cut -d “
#!/bin/bash
bu=”http://youtube.com/get_video.php?”
tmp=`mktemp`
touch ${tmp}.flv
read -p “YouTube url? ” ur
wget ${ur} -O ${tmp}
uf=${bu}`grep player2.swf ${tmp} | cut -d? -f2 | cut -d\” -f1`
nv=`cat ${tmp} | grep ‘h1 id=”video_title”‘ | cut -d “>” -f 2 | cut -d “
nv=`cat ${tmp} | grep ‘h1 id=”video_title”‘ | cut -d “>” -f 2 | cut -d “lt” -f 1`
*** i can’t post a less than symbol, so change the lt in that command to a less than symbol
echo “Title ${nv}”
wget “${uf}” -O ${tmp}.flv
ffmpeg -i ${tmp}.flv -r 30 -ab 56 -ar 22050 -b 1500k -s 320×240 “${nv}.mpg”
mv ${tmp}.flv “${nv}.flv”
rm ${tmp}
exit
James,
You can use
<pre>code</pre>
or
<code>code</code> tags
I use http://www.savetube.com to save any youtube videos. They also got a latest saved section.
I recommend http://www.snatchvid.com it’s very easy and fast to use!
does anybody know how he arrived to the get_video.php ? i mean how did he know that that php file existed on youtube servers?
Uhm…youtube has changed their code. now this script doesn’t work any more, from something like 20th August - 20007. Anyone can help fix the code? savetube.com has done it
A good script is Mortube
Demo: http://www.morllaines.com/busca_youtube/?tag=brasil (Portuguese)
Download: http://www.morllaines.com/downloads/arquivo.php?file=54 (English)
The script require youtube apy key on config.php
And Curl installed on server
#!/bin/bash
### mr-paul
### paul@sci.ubu.ac.th
if [ "$1" = "" ]; then
echo -e “\nUsage: getyoutube http://www.youtube.com/watch?v=UHvAXLBMWGI\n”
else
url=$1
name=${url:(-11)} ### get the last 11 chars
#echo $name
fullscreenURL=$( wget -q -nv $url -O - | grep \&video_id= )
echo $fullscreenURL
title=${fullscreenURL##*=} ### delete to last occurance of ‘=’
title=${title/\’;/} ### replace ‘; with nothing ${title:(-2)} or #{title#(-2)} do not work’
echo $title
videoID=${fullscreenURL:54} ### cut first 53 chars
videoID=${videoID/\’;/} ##
echo $videoID
wget -q -nv “http://www.youtube.com/get_video?$videoID” -O “$title.flv”
fi
Hmm, anyone got a perl one liner for this job?
There’s now a software tool to allow linux users to download youtube videos to a preferred directory, in a variety of formats (mpeg, wmv, mp4, flv, avi), specifying the resolution… all in a GTK theme’d graphical tool.
Check it here:
http://yourtubedownloader.awardspace.com/
Feedback most appreciated, via the forums or by email.