使用百度mp3列表下载歌曲时报告axel崩溃
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
axel (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
Binary package hint: axel
#!/bin/bash
#Copyright (c) 2006 bones7456 (<email address hidden>)
#License: GPLv2
#非常感谢ubuntu社区和o
#强烈建议安装axel(
#保存mp3的目录,请根据需要修改。
SAVE="$
#SAVE="
#mp3的地址
#新歌TOP100
SOURCE="http://
#歌曲top500
#SOURCE="http://
#经典老歌
#SOURCE="http://
#电影金曲
#SOURCE="http://
#民歌精选
#SOURCE="http://
#校园歌曲
#SOURCE="http://
#轻音乐
#SOURCE="http://
#少儿歌曲
#SOURCE="http://
#摇滚歌曲榜
#SOURCE="http://
#流金岁月
#SOURCE="http://
#下载重试次数
TRYCOUNT=2
#用axel下载时的线程数
AXELNUM=7
#临时目录
TMP="/tmp/
#是否需要暂停
PAUSE=0
if [ x`which axel` = x"" ];then
PAUSE=1
cat << EOF
您的系统中没有安装axel多线
如果是ubuntu用户,可以直接使用 sudo apt-get install axel 进行安装,其他系统请访问axel主页:http://
EOF
fi
if [ x`which mid3v2` = x"" ];then
PAUSE=1
cat << EOF
您的系统中没有安装mid3v2
如果是ubuntu用户,可以直接使用 sudo apt-get install python-mutagen 进行安装,其他系统请访问其主页:http://
EOF
fi
if [ "$PAUSE" = 1 ];then
echo "是否继续(y|n)?"
read KEYVAR
case "$KEYVAR" in
"Y" | "y" )
echo 略过。
;;
* )
exit 0
;;
esac
fi
#创建下载目录
if [ ! -d "${SAVE}" ];then
mkdir -p "${SAVE}"
fi
#创建临时下载目录
if [ -d "${TMP}" ];then
rm -rf "${TMP}"
fi
mkdir -p "${TMP}"
echo "开始下载百度最新100首歌曲列表"
wget -O ${TMP}/mp3.html ${SOURCE}
echo "下载百度最新100首歌曲列表完成。"
#转换网页编码
iconv -f gbk -t utf8 ${TMP}/mp3.html |\
grep " href=\"http://
#将mp3list.
sed -e 's/ *//' |\
#将mp3list.
sed -e 's/\t*//' |\
#将mp3list.
sed -e 's/ //g' |\
#将所有的回车符去掉
sed ':a;N;$
#在td>,后面加上回车符,
sed -e 's/,<td/\n<td/g' |\
sed -e 's/td>,/td>\n/g' |\
#删除<td width="30%"> <td> </td> <td...FFFFFF"> <p> </p>
sed -e 's/<td width="30%">//g' |\
sed -e 's/<td>//g' |\
sed -e 's/<\/td>//g' |\
sed -e 's/<p>//g' |\
sed -e 's/<\/p>//g' |\
sed -e 's/<td.
#删除</a>..."_blank">
sed -e 's/<\/A>
sed -e 's/<\/A>/<\/a>/g' |\
sed -e 's/<\/a>
#sed -e 's/<\/a>
#删除)
sed -e 's/<\/a>)/<\/a>/g' |\
#删除&
sed -e 's/\&\;/\//g' >${TMP}/mp3list.txt
#得到:<a href="http://
#取得行号,循环
line=$(awk 'END{print NR}' ${TMP}/mp3list.txt)
i=1;
while((i<=line));do
downed=0;
mpline=`awk 'NR=='"$i"'' ${TMP}/mp3list.txt`
url=`echo $mpline | sed -e 's/<a href="//g' | sed 's/\ target.*//g' | sed 's/"//g' | cat`
name=`echo $mpline | sed -e 's/.*_blank">//g' | sed -e 's/.*_blank>//g' |\
sed -e 's/<\/a>//g' | sed -e 's/\//-/g' | sed -e 's/:/-/g' | sed -e 's/"/'\''/g' | cat`
#检查是否已经下载过这首
if [ -e "${SAVE}
echo -e "\e[1;6m\e[1;31m发现 ${name} 下载过,忽略,
((i++))
continue;
fi
echo "开始通过 $url 下载 $name";
wget -O ${TMP}/down.html $url
echo "获取 $name 下载列表完成。";
#down.
iconv -f gbk -t utf8 -c ${TMP}/down.html | grep "onclick=\"return ow(this)\"" |\
sed -e 's/.*<a href="//g' | sed -e 's/" target=
#size.
iconv -f gbk -t utf8 -c ${TMP}/down.html | grep "M<\/td>" |\
sed -e 's/<td>//g' | sed -e 's/ M<\/td>//g' > ${TMP}/size.txt
#down.
paste -d '`' ${TMP}/size.txt ${TMP}/down.txt > ${TMP}/
#排序
sort -n -r ${TMP}/
#去掉后面的尺寸
sed 's/.*`//' ${TMP}/
##### 析取出mp3 的下载地址或 wma的下载地址 ##############
grep -i "word=mp3" ${TMP}/temp.txt > ${TMP}/down_mp3.txt
grep -i "word=wma" ${TMP}/temp.txt > ${TMP}/down_wma.txt
downline_
downline_
echo -e "\e[1;6m\e[1;31m发现 ${downline_mp3} 个名为 ${name}.mp3 下载地址。\e[1;6m\e[00m"
echo -e "\e[1;6m\e[1;31m发现 ${downline_wma} 个名为 ${name}.wma 下载地址。\e[1;6m\e[00m"
# 初始化计数器
j=1;
# 优先下载mp3格式的歌曲
while(
mp3=`awk 'NR=='"$j"'' ${TMP}/down_mp3.txt | sed -e 's/ /\\ /g'`
echo -e "\e[1;6m\
#echo -e "\e[1;6m\
wget -O "${TMP}
realURL=
#echo -e "\e[1;6m\
if [ x`which axel` != x"" ];then
axel -n $AXELNUM -a -o "${TMP}
else
#wget太慢了。
wget -c --tries=$TRYCOUNT $realURL -O "${TMP}
fi
if [ "$?" = 0 ]; then
if [ `file -ib "${TMP}
if [ x`which mid3v2` != x"" ];then
title=`echo $name | sed -e 's/-.*//g'`
artist=`echo $name | sed -e 's/.*-//g' | sed -e 's/.mp3//g' | sed -e 's/.wma//g'`
mid3v2 -D "${TMP}
mid3v2 -t "${title}" -a "${artist}" "${TMP}
fi
mv "${TMP}
break;
else
echo -e "\e[1;6m\e[1;31m下载 ${name}.mp3 文件无效,正在删除重新下载\
rm "${TMP}
((j++))
fi
else
echo -e "\e[1;6m\e[1;31m下载 ${name}.mp3 文件无效,正在删除重新下载\
rm "${TMP}
((j++))
fi
done
#如果下载成功继续下其余的歌
#continue用于跳
if [ "$downed" = 1 ] ; then
((i++))
echo -e "\e[1;7m\e[1;41m下载 $name 成功\e[1;7m\e[00m"
continue;
fi
# 如果没有mp3格式的则下载wm
j=1;
while(
wma=`awk 'NR=='"$j"'' ${TMP}/
echo -e "\e[1;6m\
#echo -e "\e[1;6m\
wget -O "${TMP}
realURL=
#echo -e "\e[1;6m\
if [ x`which axel` != x"" ];then
axel -n $AXELNUM -a -o "${TMP}
else
#wget太慢了。
wget -c --tries=$TRYCOUNT $realURL -O "${TMP}
fi
if [ "$?" = 0 ]; then
if [ `file -ib "${TMP}
#title=`echo $name | sed -e 's/-.*//g'`
#artist=`echo $name | sed -e 's/.*-//g' | sed -e 's/.mp3//g' | sed -e 's/.wma//g'`
#mid3v2 -D "${TMP}
#mid3v2 -t "${title}" -a "${artist}" "${TMP}
mv "${TMP}
break;
else
echo -e "\e[1;6m\e[1;31m下载 ${name}.wma 文件无效,正在删除重新下载\
rm "${TMP}
((j++))
fi
else
echo -e "\e[1;6m\e[1;31m下载 ${name}.wma 文件无效,正在删除重新下载\
rm "${TMP}
((j++))
fi
done
((i++))
if [ "$downed" = 1 ] ; then
echo -e "\e[1;7m\e[1;41m下载 $name 成功\e[1;7m\e[00m"
else
echo -e "\e[1;7m\e[1;41m下载 $name 失败\e[1;7m\e[00m"
fi
done
rm -fr ${TMP}
exit 0
##这是一个下载mp3的自编程
crash报告的附件