您的位置:首页 > 其它

造福大众,分享一个mp3下载脚本

2007-09-10 00:55 323 查看

缘由

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

获取这个脚本

我已经将这个脚本上载到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 "//033[1;32m" # set font color as blue
echo -e "$*"
echo -en "//033[0;39m"    # 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"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息