pepoとネットワークを語ろう

40年前からこれまでとこれからのネットワークを語る

Linuxスクリプトでpodcastのmp3ファイルをゲット!その2

2010-12-14 08:30:02 | Linux

 さて、wgetでpodcastのmp3ファイルをゲットするスクリプトが出来たので

少し欲をだして自動的にファイルを更新するようにした

ストーリーとしてはこうだ

mp3プレーヤーを寝る前にLinuxマシンのUSBへ差し込む

cronで指定した時間に自動的に最新のmp3ファイルをwget

朝になったら抜き取り、通勤電車の中で新しいニュース等が聞く

それと古いニュースは要らないので、世代管理数を指定して古いファイルmp3順に削除する

#!/bin/sh
# licence GPLv2 ; this scripts designed by IZAMUKARERA 2010.12.12
# get podcast mp3
# XMLにpodcastのURLを登録
XML=http://www3.nhk.or.jp/rj/podcast/rss/english.xml
#XML=http://www.cnn.com/services/podcasting/newscast/rss.xml
# CTは保存世代数(古い順に消去)
CT=4
# DEVはMP3プレーヤーのデバイス名
DEV=/dev/sdb1
MNT=/mnt/music
MDIR=$MNT/podcast
DIR=/tmp/music
RAND=`echo -e $RANDOM`
TMP=$DIR/${RAND}.xml
[ ! -e $DIR ] && mkdir -p $DIR
wget $XML -O $TMP

URL=`cat $TMP |awk '/enclosure url=/{split($0,I,"\"");{printf I[2]" "} }'`
for FIL in $URL
do
  MP3=`echo $FIL |awk '{s=split($0,I,"/"); printf I[s]}'`
  [ -f $DIR/$MP3 ] && continue
  wget $FIL -O $DIR/$MP3
  [ ! -s $DIR/$MP3 ] && rm -f $DIR/$MP3
done
rm -f $TMP

[ ! -e $MNT ] && mkdir -p $MNT
mount $DEV $MNT -t vfat >/dev/null 2>&1
[ `mount |grep $DEV |wc -l` -eq 1 ] && MDEV=OK || MDEV=NG
if [ $MDEV = "OK" ];then
  [ ! -e $MDIR ] && mkdir -p $MDIR
  MCT=`ls -tr $MDIR`
  if [ `echo $MCT | wc -w` -gt $CT ];then
    I=$CT
    for J in $MCT
      {
        rm -f $MDIR/$J
        I=`expr $I - 1`
        [ $I -eq 0 ] && break
    }
  fi
  MCT=`ls -tr $DIR`
  for MM in $MCT
  {
    if [ -s $DIR/$MM ];then
      mv -f $DIR/$MM $MDIR
    fi
  }
fi

[ $MDEV = "OK" ] && umount $DEV

pepo