造福大众,分享一个mp3下载脚本http://blog.csdn.net/shaohui/archive/2007/09/10/1778559.aspx

新一篇: 收集整理的Linux下的小技巧(四) - 在Ubuntu创建自己的开发环境缘由

同事们总是会有新的发现,在某人的blog上面 找到了《51首电视台使用频率最高经典背景音乐》(), 发现这些音乐确实不错,应大家的要求写了个简单的脚本来下载这些曲目。

获取这个脚本

我已经将这个脚本上载到http://www.shaohui.org/downloads/mp3get.sh,可以直接用下面的命令下载。

wget http://www.shaohui.org/downloads/mp3get.sh

如何使用

直接执行该脚本即可,如果你是在内网,可能需要设置代理服务器。

sh mp3get.sh

脚本开始下载后,会在当前目录建立一个mp3.txt文件,然后把所有下载的mp3的名字写入该文件,对应的mp3用数字编号,如1.mp3,30.mp3

存在的问题

本来打算把文件名也自动改成中文的,不过当重命名以后遇到乱码,暂时放在这里,期待有人帮着解决。

源代码

如果你不能够下载,可以直接拷贝source到一个文件,然后再执行就可以了。

#!/bin/bash
#
# a shell script to download mp3 from website
# shaohui.zheng#gmail.com
#

URL=http://hi.baidu.com/saden/blog/item/178339c773a28eded100608a.html
O="--connect-timeout=5 --dns-timeout=5 --timeout=1200 -t 2"

tmp1=`mktemp`
tmp2=`mktemp`
mp3list=`mktemp`

# display a message with plain text
function show()
{
echo -en "" # set font color as blue
echo -e "$*"
echo -en ""    # restore font color as normal
}

wget $URL -O $tmp1
dos2unix $tmp1 > /dev/null 2>&1

grep '<strong>[0-9]*\.' $tmp1 | sed 's#.*<strong>##g' | sed 's#<.*##' | tr " " "_" > mp3.txt

cp mp3.txt $mp3list
grep "<a href.*\.mp3" $tmp1 | sed 's/.*href="//' | awk -F\" '{ print $1 }' | uniq> $tmp2

total=`cat mp3.txt | wc -l`
cnt=1
while [ -s $mp3list ]
do
mp3url=`head -1 $tmp2`
mp3cnt=$cnt
mp3name=`head -1 $mp3list`

show "Downloading $mp3name ($cnt/$total)"
sed -i 1d $tmp2
sed -i 1d $mp3list
wget $mp3url $O -O "${mp3cnt}.mp3"
cnt=`expr $cnt + 1`
done

rm $tmp1 $tmp2 $mp3list -f

show "All Done"