読者です 読者をやめる 読者になる 読者になる

久々のシェルスクリプト

いやはや、久方ぶりの更新です。
移動時間に英語の勉強でもしてみようかと先週思い立って、その一貫で英語のポッドキャストでも聞いてみようとしたときの記録です。
幾つかのポッドキャスト取得プログラムを使ってみたのですが、どうもファイル名や保存場所がしっくり来るプログラムが無かったので、シェルスクリプトで自作したという話。

まずは、昔学校の授業で使ってたことでおなじみのVOA
Podcast - VOA - Voice of America English News
ここのサイトは月〜金に更新される``4 Minute Features"を聞く。
取得スクリプトは以下。

#!/bin/bash

DIRECTORY="$HOME/Radio/VOA"
wget  -nd http://feeds.voanews.com/ps/getRSS\?client=Standard\&PID=azHBJZWSH45M06gISfCSXmfXMnqmmj4w\&startIndex=1\&endIndex=500 -O $DIRECTORY/list 2>/dev/null

URI=`sed 's/<item>/\n<item>/g' $DIRECTORY/list | sed 's/<\/item>/<\/item>\n/g' | grep item | head -1 | sed 's/>/>\n/g' | sed 's/</\n</g'| grep -v '^$' | grep -P -o 'http.*.false'`
TITLE=`sed 's/<item>/\n<item>/g' $DIRECTORY/list | sed 's/<\/item>/<\/item>\n/g' | grep item | sed 's/>/>\n/g' | sed 's/</\n</g'| grep -v '^$' | grep -P -o '.*.Report' | sed 's/ //' | head -1`

wget $URI -O $DIRECTORY/$TITLE.mp3

rm $DIRECTORY/list

ここのポッドキャストは提供される名前が常にcontents.mp3で不便なので、更新される日のカテゴリをタイトルにして保存。
つまり、最低一週間は保存される事になる。一週間聞かなかったら上書きされるので、溜まらない。まぁポッドキャストってそんなもんだと思うし。

で、もう一つは今回知ったESLEnglish as a Second Language Podcast
こっちは``ESL Podcast"ってのを聞く。
取得スクリプトは以下。

#!/bin/bash

URI=`w3m -dump_source http://www.eslpod.com/website/index_new.html | grep -P -o 'http://[a-z].*.mp3' | awk '{print $10}' |  grep -P -o 'http://[a-z].*.mp3' | head -1| grep ESL`
DIRECTORY="/home/takeshi/Radio/ESL"
FILENAME=`echo $URI | cut -d / -f6`

if [ ! -f $DIRECTORY/$FILENAME ]; then
    wget $URI -P $DIRECTORY
fi

こっちは一日おきに更新されるみたい。
ポッドキャストともに更新時間がいまいち把握できてないので、とりあえず毎日crontabで回す予定。

実は結構ポッドキャスト取得プログラムをいじって、あーでもないこーでもないとやってた時間より、シェルスクリプト書いた時間の方がはるかに短かった罠。