YouTubeの動画を一括ダウンロードするBashスクリプト
http://d.hatena.ne.jp/SPR/20061105の発展。
YouTubeから複数の動画をまとめてダウンロードするシェルスクリプトを作った。
ダウンロードしたい動画が多い場合には便利だと思う。
使い方
一番下に書いてあるスクリプトを適当な名前で保存して、下記の様にコマンドを入れる。
$ ./hoge.sh 藤田東吾耐震偽装事件について語る \
http://www.youtube.com/watch?v=rZbeS5CiU3U \
http://www.youtube.com/watch?v=_eaWJgy2Z3E \
http://www.youtube.com/watch?v=1QGE4JWWDbA
すると、この例では「藤田東吾耐震偽装事件について語る-01.flv」「藤田東吾耐震偽装事件について語る-02.flv」「藤田東吾耐震偽装事件について語る-03.flv」が保存される。
これらのFLVファイルはそのままmplayerかffplay(ffmpegに付いてる)で再生するか、ffmpegで一旦他の形式に変換してから適当なプレイヤで再生すればいいと思う。
Bashスクリプト
#!/bin/bash # # 「YouTube一括ダウンロードBashスクリプト」 # # 自分のLinux環境に合わせて作った。 # 他の環境でもbashとwgetとpythonがあれば動くと思う。 # # [使いかた] # このスクリプトを適当な名前で保存してから作業ディレクトリに移動し、 # コマンドラインで # 「./hoge.sh 保存するファイル名 URLその1 URLその2 ...」 # とする。 # なお、保存するファイル名に拡張子はいらない。勝手にflvが付く。 # ##### 好みに合わせて設定する ##### # プロクシを使う人用 #http_proxy="http://localhost:8080" # NUM=0だとfile-00 file-01 file-02 ... # NUM=1だとfile-01 file-02 file-03 ... と言う名前で保存される NUM=1 ##### 設定おしまい ##### # youtube-dlの場所 DL="http://www.arrakis.es/~rggi3/youtube-dl/youtube-dl" # pythonのパス PYTHON=`which python` if [ $# -lt 2 ]; then echo "Usage: $0 OUTPUT URL1 [URL2] [URL3] ..." exit fi ##### youtube-dlが無ければダウンロードしてくる ##### if [ -x youtube-dl ]; then echo "$0: youtube-dl開始" else echo "$0: 一旦youtube-dlをダウンロードします。" wget -O youtube-dl.tmp "$DL" cat youtube-dl.tmp | sed -e "1c #!$PYTHON" > youtube-dl chmod +x youtube-dl rm youtube-dl.tmp fi ##### FLVファイルをダウンロード ##### i=0 for URL in "$@" do # OUTPUTに保存するファイル名が入る if [ $i -eq 0 ]; then FNAME=$1 else j=`expr $NUM + $i - 1` if [ $j -lt 10 ]; then OUTPUT="$FNAME""-0$j.flv" else OUTPUT="$FNAME""-$j.flv" fi fi # 実際にダウンロード # youtube-dlでダウンロードせずにwgetにダウンロードするURLを渡す if [ $i -gt 0 ]; then echo "$0: $i個目の動画を$OUTPUTに保存します。" URL2=`./youtube-dl -s "$URL" | grep "Video data found at" | sed -e "s/Video data found at //"` wget -O $OUTPUT "$URL2" fi i=`expr $i + 1` done