linux 下载音乐脚本(正式版)
发表于 : 2007-12-02 21:44
已经对以前的那个测试版进行了很大的改进 不过只能搜索中文音乐 如果搜出来的歌曲有英文和其它符号也下载不了 我会再写一个更加完善的脚本 希望你们提出报贵的意见
代码如下:
#!bin/sh
#头部(选择下载软件和输入歌曲)
e=`which axel`
e_1=`which mid3v2`
if [ -x $e ];then
echo "检测到你已经安装了axel 将会成为你默认的下载工具"
else
echo "你还没有安装axel 多线程下载工具,将会自动选择单线程工具wget下载。如果你的系统是ubuntu你可以执行:sudo apt-get install axel 下载并安装axel."
fi
if [ -x $e_1 ];then
echo "检测到mid3v2会把你音乐的tag都删除掉,预防出现乱码"
else
echo "你还没有安装mid3v2,这个工具 可以去掉音乐里面的tag(乱码的根源),如果你的系统是ubuntu你可以执行:sudo apt-get install python-mutagen下载并安装."
fi
#核心部分(提取连接 和把中文转换成url编码)
read -p "请输入你要搜索的音乐:" a
echo $a>down.file #/*把要搜索的音乐储存在down.file文本里*/
iconv -f utf8 -t gb2312 down.file>down.file1 #/*把down.file里的文件转换成gb2312编码再储存到down.file1*/
b=`od -t x1 down.file1|awk 'BEGIN{OFS="%"}{$1=""}NF'` # /*把down.file里面的中文转换成16进制并且把值赋给变量b*/
wget "http://mp3.baidu.com/m?f=ms&tn=baidump3 ... "$b"&lm=-1" -O file # /*把百度搜索到的音乐网页的源代码下载并保存到file文件里*/
iconv -f gb2312 -t utf8 file |grep -m 5 "M</td>"|awk -F">" '{print $2}'|awk -F"<" '{print $1} ' >size #找到文件的大小
iconv -f gb2312 -t utf8 file |grep -m 5 "<td class=d><a href="|awk -F"," '{print $2}'|awk -F"&" '{print $1}'>>size # (连接里的中文
awk '{a[NR]=$0}END{for(i=1;i<=NR/2;i++)printf "(%d)\t%s\t%s\n",i,a,a[i+NR/2]}' size
read -p "请选择你要下载第几首:" c #选择你要下载的歌曲的大小
iconv -f gb2312 -t utf8 file |grep -m $c "<td class=d><a href=" >song
sed -n ''$m'p' song|awk -F"," '{print $2}'|awk -F"&" '{print $1}' >song_1
iconv -f utf8 -t gb2312 song_1 >down.file3
url=`od -t x1 down.file3 |awk 'BEGIN{OFS="%"}{$1=""}NF'|awk -F"%0a" '{print $1}'` #寻找你想要的音乐连接
url_1=`iconv -f gb2312 -t utf8 file |grep -m 1 "<td class=d><a href="|awk -F"\"" '{print $2}'|awk -F"," 'BEGIN{OFS=","}{$2="'$url'&word=mp3"}NF'`
wget "$url_1" -O file_1
iconv -f gb2312 -t utf8 file_1 |grep -m 1 "<a href"|awk -F"\"" '{print $2}' >down.file4 #得到你想要的最快的音乐连接
#下载部分
h=`cat down.file4`
if [ -x $e ];then
axel -n 10 -o $a.mp3 $h #在这里你可以改变你的下载路径 比如axel -n 10 -o ~/muic/ $h 就是把音乐下载到music文件里
else
wget -t 5 -c -i down.file4 -O "$a".mp3 #下载音乐
fi
if [ -x $e_1 ];then
mid3v2 -D "$a".mp3
fi
rm down.file down.file1 down.file3 file file_1 down.file4 song song_1
————————————————————————————————————————————————————
不好意思 我是硬着头皮写出来的东西 我现在正在努力学习中 下个版本将会解决中英文混输和不能下载英文歌曲这个问题 解决这两个问题意味着可以%99下载你想要的音乐(还有%1就是网络和你的电脑问题和 呵呵)希望你们能给点指导我 谢谢!
----------------------------------------------------
示例:
benqlk@benqlk-laptop:~/Documents$ sh down.sh
检测到你已经安装了axel 将会成为你默认的下载工具
检测到mid3v2会把你音乐的tag都删除掉,预防出现乱码
请输入你要搜索的音乐:爱
(1) 3.1 M 明月来看我
(2) 1.1 M 爱
(3) 2.5 M 心中喜欢就说爱 爱你爱到老
(4) 3.1 M 夜 宝玉 探 mp3
(5) 1.6 M 爱 国语合唱版 阿Sa/
请选择你要下载第几首:
代码如下:
#!bin/sh
#头部(选择下载软件和输入歌曲)
e=`which axel`
e_1=`which mid3v2`
if [ -x $e ];then
echo "检测到你已经安装了axel 将会成为你默认的下载工具"
else
echo "你还没有安装axel 多线程下载工具,将会自动选择单线程工具wget下载。如果你的系统是ubuntu你可以执行:sudo apt-get install axel 下载并安装axel."
fi
if [ -x $e_1 ];then
echo "检测到mid3v2会把你音乐的tag都删除掉,预防出现乱码"
else
echo "你还没有安装mid3v2,这个工具 可以去掉音乐里面的tag(乱码的根源),如果你的系统是ubuntu你可以执行:sudo apt-get install python-mutagen下载并安装."
fi
#核心部分(提取连接 和把中文转换成url编码)
read -p "请输入你要搜索的音乐:" a
echo $a>down.file #/*把要搜索的音乐储存在down.file文本里*/
iconv -f utf8 -t gb2312 down.file>down.file1 #/*把down.file里的文件转换成gb2312编码再储存到down.file1*/
b=`od -t x1 down.file1|awk 'BEGIN{OFS="%"}{$1=""}NF'` # /*把down.file里面的中文转换成16进制并且把值赋给变量b*/
wget "http://mp3.baidu.com/m?f=ms&tn=baidump3 ... "$b"&lm=-1" -O file # /*把百度搜索到的音乐网页的源代码下载并保存到file文件里*/
iconv -f gb2312 -t utf8 file |grep -m 5 "M</td>"|awk -F">" '{print $2}'|awk -F"<" '{print $1} ' >size #找到文件的大小
iconv -f gb2312 -t utf8 file |grep -m 5 "<td class=d><a href="|awk -F"," '{print $2}'|awk -F"&" '{print $1}'>>size # (连接里的中文
awk '{a[NR]=$0}END{for(i=1;i<=NR/2;i++)printf "(%d)\t%s\t%s\n",i,a,a[i+NR/2]}' size
read -p "请选择你要下载第几首:" c #选择你要下载的歌曲的大小
iconv -f gb2312 -t utf8 file |grep -m $c "<td class=d><a href=" >song
sed -n ''$m'p' song|awk -F"," '{print $2}'|awk -F"&" '{print $1}' >song_1
iconv -f utf8 -t gb2312 song_1 >down.file3
url=`od -t x1 down.file3 |awk 'BEGIN{OFS="%"}{$1=""}NF'|awk -F"%0a" '{print $1}'` #寻找你想要的音乐连接
url_1=`iconv -f gb2312 -t utf8 file |grep -m 1 "<td class=d><a href="|awk -F"\"" '{print $2}'|awk -F"," 'BEGIN{OFS=","}{$2="'$url'&word=mp3"}NF'`
wget "$url_1" -O file_1
iconv -f gb2312 -t utf8 file_1 |grep -m 1 "<a href"|awk -F"\"" '{print $2}' >down.file4 #得到你想要的最快的音乐连接
#下载部分
h=`cat down.file4`
if [ -x $e ];then
axel -n 10 -o $a.mp3 $h #在这里你可以改变你的下载路径 比如axel -n 10 -o ~/muic/ $h 就是把音乐下载到music文件里
else
wget -t 5 -c -i down.file4 -O "$a".mp3 #下载音乐
fi
if [ -x $e_1 ];then
mid3v2 -D "$a".mp3
fi
rm down.file down.file1 down.file3 file file_1 down.file4 song song_1
————————————————————————————————————————————————————
不好意思 我是硬着头皮写出来的东西 我现在正在努力学习中 下个版本将会解决中英文混输和不能下载英文歌曲这个问题 解决这两个问题意味着可以%99下载你想要的音乐(还有%1就是网络和你的电脑问题和 呵呵)希望你们能给点指导我 谢谢!
----------------------------------------------------
示例:
benqlk@benqlk-laptop:~/Documents$ sh down.sh
检测到你已经安装了axel 将会成为你默认的下载工具
检测到mid3v2会把你音乐的tag都删除掉,预防出现乱码
请输入你要搜索的音乐:爱
(1) 3.1 M 明月来看我
(2) 1.1 M 爱
(3) 2.5 M 心中喜欢就说爱 爱你爱到老
(4) 3.1 M 夜 宝玉 探 mp3
(5) 1.6 M 爱 国语合唱版 阿Sa/
请选择你要下载第几首: