MPlayer youtube script

From MultimediaWiki
Jump to navigation Jump to search

bash script for playing youtube videos

  1. save it as youtube.sh
  2. chmod +x youtube.sh
  3. place it somewhere in PATH (like /usr/local/bin )

Usage:

#!/bin/bash

if [ -z "$1" ]; then
        echo "No URL!"
        exit
fi

url=$1
shift

echo \"http://www.youtube.com/get_video?video_id=`wget -q -O - $url | grep fullscreenUrl | awk -F'video_id=' '{ print $2 }' | sed -e 's/ /_/g' | tr -d \'\; `\" | xargs mplayer $*

###
# The scipt above grabs the html source to the real stream (the .flv file), which youtube constantly alters. The "http://www.youtube.com/get_video?video_id=" is always the prefix -- and the script uses wget to d/l and append the rest of the 'full' url (which is very long and stupid).. an ex.; 

#mplayer #"http://www.youtube.com/get_video?video_id=L2SED6sewRw&l=2965&sk=GOT2L_qmpVJOx0w#rud5ycdyuWziPg1lcC&fmt_map=6%2F720000%2F7%2F0%2F0&t=OEgsToPDskLlf4ls3xB6V84dMYLu#ndws&hl=en&plid=AARTXK76vCTnvQ5#JAAAC6ADCAAA&sdetail=rv%253AL2S#ED6sewRw&tk=P4Lg#O65y-u5BllZJBsB_e2Gw-OVgaMp4a8prsHTahDhuPN_xsReW2Q%3D%3D&title=Greg Kroah 
# Hartman on the Linux Kernel"
# as you can see, there are blank spaces also that need to be cleaned up (blank # # spaces replaced with underscores). 

created by enouf and n3kl and amphi

RE-modified by enouf

Alternative Version

Here is an alternative version by Elte.

The differences are

  • fewer programm calls
  • less shell pipes
  • no dependency on grep, awk or tr
  • supports double quotes in video url

This version is nevertheless heavily based on the previous script.

#!/bin/bash
# © 2008,2009 Elte GPL V2.1

URL="$1"
shift

if [ "${URL#http://}" = "$URL" ]
then
    echo "usage: $0 <youtube-URL> [mplayer args ...]"
    exit
fi

echo \"http://www.youtube.com/get_video?video_id=$(wget -q -O - "$URL"                     \
                                                   | sed -e '/fullscreenUrl/!d'            \
                                                         -e "s/.*video_id=\([^']*\).*/\1/" \
                                                         -e 's/ /_/g'                      \
                                                         -e 's/\\\"/"/g'                   \
                                                  )\"                                      \
| xargs mplayer "$@"

Or just use youtube-dl

Available in almost all Linux distributions.

Usage:

mplayer $(youtube-dl -g http://www.youtube.com/watch?v=.....)

or

mplayer $(youtube-dl -b -g http://www.youtube.com/watch?v=.....)

to get the HD version if available.