用来下载音乐的脚本(测试版)

sh/bash/dash/ksh/zsh等Shell脚本
回复
benqlk
帖子: 21
注册时间: 2007-09-18 7:55

用来下载音乐的脚本(测试版)

#1

帖子 benqlk » 2007-11-25 16:16

我刚学linux shell编程不久,所以不能写出很简明的代码!请多多包含!标题已经说了!这只不过是测试版!存在的问题 1:只能搜索中文音乐。2:存在不能下载的情况(原因是网页源代码的歌曲中文名存在空格,我还没处理)3:有可能出先 not found 404错误,不过你再试几次就可以了 4:没有多任务。
以上问题会在下次解决(时间不能确定),以下是源代码:如果看不清分行就把代码复制到文本上就可以了!
————————————————华丽的分界线—————————————————————————————

#!bin/bash
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 1 "<td class=d><a href="|awk -F"," '{print $2}'|awk -F"&" '{print $1}'>down.file2 # /*把file的编码转换成utf8编码并搜索里面的连接信息并保存到down.file2文件里*/
iconv -f utf8 -t gb2312 down.file2>down.file3 #/*把down.file2转换成gb2312编码并保存到down.file文件里*/
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 #得到你想要的最快的音乐连接
wget -t 5 -c -i down.file4 -O "$a".mp3 #下载音乐
rm down.file down.file1 down.file2 down.file3 file file_1 down.file4

刚建立的linux群 群号:39610328 欢迎你们加入
头像
arsui
帖子: 889
注册时间: 2007-05-06 2:01
来自: 特麓村->浦北->五山->罗湖

#2

帖子 arsui » 2007-11-30 15:00

顶一下勤劳而无私的银~~~
顶呱呱~
Ubuntu 9.04 & Win Xp
------------------------------------------------------
Company: http://www.mazingtech.com
HomePage: http://www.arsui.com
头像
percy
帖子: 508
注册时间: 2006-09-10 8:19
系统: Gentoo/Mac OS X
来自: Shanghai,China
联系:

#3

帖子 percy » 2007-12-01 18:26

不错,刚才试了一下

能够下载
sweet dream
头像
arsui
帖子: 889
注册时间: 2007-05-06 2:01
来自: 特麓村->浦北->五山->罗湖

#4

帖子 arsui » 2007-12-01 22:27

好用~,不过写个保存路径就更好~防止我这个新手不会自己写
Ubuntu 9.04 & Win Xp
------------------------------------------------------
Company: http://www.mazingtech.com
HomePage: http://www.arsui.com
头像
aitilang
帖子: 1026
注册时间: 2007-04-28 21:38

#5

帖子 aitilang » 2007-12-01 22:45

不错。。
thinkpad x61 2G DDR no cdrom
--------------------------------------------
ABS学习中
sed学习中
awk学习中
perl学习中
新手描述不清,老手猜测不到,胡乱指挥一通,后果难以预料
benqlk
帖子: 21
注册时间: 2007-09-18 7:55

#6

帖子 benqlk » 2007-12-01 23:45

好的!谢谢你的建议!下次我就会把改良的代码发上来!
Robinho
帖子: 22
注册时间: 2007-03-01 15:22
来自: 广州

#7

帖子 Robinho » 2007-12-02 7:45

代码: 全选

#!/bin/bash

if [ $# -ne 2 ] ; then
    echo "Usage:    `basename $0` THE_SONG_TO_DOWN No."
    exit 192
else
    SONG=`echo $1 | iconv -f utf8 -t gbk | sed -e 's/_/+/g'`   
    SRC='http://mp3.baidu.com/m?f=ms&rn=&tn=baidump3&ct=134217728&word='
    wget -O ./temp/down.html ${SRC}${SONG}\&lm=0
    grep "m?ct=134217728&tn=baidusg" ./temp/down.html |\
    sed -e 's/<td class=d>//g' -e 's/<a href=\"//g' | sed -e 's/\ target.*//g' | sed -e 's/"//g' > ./temp/url.txt
    url=`head -$2 ./temp/url.txt | tail -1`
    wget -O ./temp/url.html "$url"
    realurl=`grep "margin-right" ./temp/url.html |\
    sed -e 's/<li class=\"li\" style=\"margin-right:10px;\"><a href=\"//g' |\
    sed -e 's/\ target.*//g' | sed -e 's/"//g'`
    #wget -O $1.mp3 -c -t 3 $realurl
    axel -o $1.mp3 -a "${realurl}"
    exit 0
fi

代码: 全选

./downsong.sh 至少还有你 1
./downsong.sh yesterday_once_more 1
星索/XS
帖子: 30
注册时间: 2007-10-14 10:40

#8

帖子 星索/XS » 2007-12-02 9:06

学习中...支持下LZ
嘎嘎..传说中的LINUX
benqlk
帖子: 21
注册时间: 2007-09-18 7:55

#9

帖子 benqlk » 2007-12-03 11:49

我已经写了个改良版的 viewtopic.php?p=545811#545811
回复