再来一个灰常简单的mp3下载脚本(7.31更新)
发表于 : 2008-06-24 20:31
RT
知道大家对这种东西都腻了,不看也欢迎灌水
如下:
需要w3m,用法输入h自己看~~~~~~~~
=================7.31=================
百度更改了其下载页面代码,故老版不能下载了,今天更新。
=====================================
知道大家对这种东西都腻了,不看也欢迎灌水

如下:
需要w3m,用法输入h自己看~~~~~~~~
=================7.31=================
百度更改了其下载页面代码,故老版不能下载了,今天更新。
=====================================
代码: 全选
#!/bin/bash
#----------------------------------------#
# coded by xiooli #
# have fun :) #
#----------------------------------------#
save_dir=~/music #保存歌曲的目录,自己改
max_num=20 #每次最多显示多少条歌曲信息(<=30)
>/tmp/music_info
[ ! -d $save_dir ] && mkdir $save_dir
#获取源页面,并用w3m格式后输出。
get_src() {
if [ `locale |grep "LANG=.*UTF-8"` ];then
gb=`echo "$key_word" | iconv -c -f utf-8 -t gbk | od -t x1 -A n |tr "\n" " " |tr " " % |sed 's/%%/%/g;s/%0a%$//'`
else
gb=`echo "$key_word" | od -t x1 -A n |tr "\n" " " |tr " " % |sed 's/%%/%/g;s/%0a%$//'`
fi
wget "http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word="$gb"&lm=-1" -O /tmp/tmp_src.htm -q
w3m -dump "/tmp/tmp_src.htm" |grep -m $max_num "^[0-9]" |sed 's/\[d9\]//' |tee /tmp/music_info
}
#下载音乐。
down_music() {
music_page_url=`cat "/tmp/tmp_src.htm" |grep -A5 "<td class=tdn>"$num"</td>" | grep "onclick=\"return ot" |awk -F"\"" '{print $2}'`
w3m -dump_source -no-cookie "$music_page_url" >/tmp/link_src.htm
music_url=`w3m -dump /tmp/link_src.htm |grep "embed" |sed 's/^.*(//;s/).*$//'`
ext=`cat /tmp/music_info |grep -w "^$num" |awk '{print $NF}'`
if [ ! -f "$save_dir/$nm.$ext" ];then
axel -n 20 "$music_url" -o "$save_dir/$nm.$ext"
[ -e "$save_dir/$nm.$ext" ] && mid3iconv -e gbk "$save_dir/$nm.$ext"
clear && cat /tmp/music_info
else
echo "已存在同名文件:$save_dir/$nm.$ext"
fi
}
#****************main******************
while true;do
read -p "请输入命令:" cmd
case $cmd in
s*)
key_word="`echo $cmd |sed 's/^s//'`"
get_src
;;
d*)
num="`echo $cmd |sed 's/^d//'`"
nm_tmp=`cat /tmp/music_info |grep -w "^$num"`
nm=`echo $nm_tmp |awk '{print $2"-"$3}'` #歌曲以 标题-艺人.扩展名 的格式重命名,在此可以改。
down_music
;;
q)
exit 0
;;
h)
echo " s+关键词:搜索歌曲;d+序号:下载该歌曲;h:显示本帮助信息;q:退出。"
;;
*)
echo "不知所云~~~~"
;;
esac
done