|| Author: SkyOut/EOF || Back to sources || View project folder ||
#!/bin/sh # # This program is still considered Beta. # It has been tested on OpenBSD 4.0 with the Kornshell! # # With this tool you can download a file either from YouTube # or GoogleVideo, by giving the URL the file will be automatically # downloaded and converted into Mpeg video format (using ffmpeg). # # Example: http://youtube.com/watch?v=XXX myfilename # # Author: SkyOut # Date: December 2006 # # Comment: This tool is for all the ones using a system, that has # no Flash installed, may it be because the user does not like # binary (and the many Flash bugs) or just because it is not # supported on the system. # # # Parameters, that are used by the program. # Filename is optional (default: "youtube.mpg" or "googlevideo.mpg") # site=$1 url=$2 filename=$3 # # Download a file from the YouTube website! # function youtube { wget $url -O youtube.htm line=`less youtube.htm | grep 'player2.swf?video_id=' | awk '{print $5}'` rm youtube.htm name=`echo $line | cut -c 25-` numofchar=`echo $name | wc -c | sed 's/ //g'` numofchar=`expr $numofchar - 3` name=`echo $name | cut -c 1-$numofchar` name=http://youtube.com/get_video?$name wget $name -O youtube.flv ffmpeg -i youtube.flv -ab 56 -ar 22050 -b 500 -s 320x240 youtube.mpg if [ "$filename" != "" ] then filename=$filename.mpg mv youtube.mpg $filename fi rm youtube.flv exit 0 } # # Download a file from the GoogleVideo website! # function googlevideo { wget $url -O googlevideo.htm line=`less googlevideo.htm | grep 'googleplayer.swf' | awk '{print $7}'` rm googlevideo.htm name=`echo $line | cut -c 45-` numofchar=`echo $name | wc -c | sed 's/ //g'` numofchar=`expr $numofchar - 161` name=`echo $name | cut -c 1-$numofchar` name=`echo $name | sed 's/%3A/:/g'` name=`echo $name | sed 's/%2F/\//g'` name=`echo $name | sed 's/%3F/?/g'` name=`echo $name | sed 's/%3D/=/g'` name=`echo $name | sed 's/%26/\&/g'` wget $name -O googlevideo.flv ffmpeg -i googlevideo.flv -ab 56 -ar 22050 -b 500 -s 320x240 googlevideo.mpg if [ "$filename" != "" ] then filename=$filename.mpg mv googlevideo.mpg $filename fi rm googlevideo.flv exit 0 } # # Display the usage dialogue! # function usage { echo "" echo "# Usage: flvrip.sh -yt|gv|h [filename]" echo "#" echo "# -yt Rip a YouTube file" echo "# Example: http://youtube.com/watch?v=XXX" echo "# -gv Rip a GoogleVideo file" echo "# Example: http://video.google.com/videoplay?docid=XXX" echo "# -h Help (this one)" echo "#" echo "# If you don't set a filename default names will be chosen" echo "# Important: For the URL use the syntax as shown above!" echo "" exit 0 } # # Main code, check for the first argument... # case "$site" in -yt) if [ "$url" = "" ] then usage exit 0 fi check=`echo $url | cut -c 1-24` if [ "$check" != "http://youtube.com/watch" ] then usage exit 0 fi youtube ;; -gv) if [ "$url" = "" ] then usage exit 0 fi check=`echo $url | cut -c 1-33` if [ "$check" != "http://video.google.com/videoplay" ] then usage exit 0 fi googlevideo ;; -h) usage ;; *) usage ;; esac