sh/bash/dash/ksh/zsh等Shell脚本
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#1
帖子
由 xiooli » 2008-06-24 20:31
RT
知道大家对这种东西都腻了,不看也欢迎灌水
如下:
需要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
-
附件
-
- down_music.tar.gz
- (1.25 KiB) 已下载 388 次
上次由
xiooli 在 2008-07-31 22:15,总共编辑 1 次。
-
qiang_liu8183
- 论坛版主
- 帖子: 10699
- 注册时间: 2006-09-10 22:36
- 系统: Arch Debian
- 来自: 北京
#3
帖子
由 qiang_liu8183 » 2008-06-24 21:19
不错~~~
看破、放下、自在、随缘、念佛
真诚、清净、平等、正觉、慈悲
-
solcomo
- 帖子: 2838
- 注册时间: 2007-04-25 13:12
#4
帖子
由 solcomo » 2008-06-24 21:33
好玩
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
-
holddreams
- 帖子: 198
- 注册时间: 2007-05-06 0:53
#5
帖子
由 holddreams » 2008-07-31 20:05
我用这个下歌曲的时候,显示
Initializing download: true
然后就停在那里不动了,该怎么解决?
谢谢
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#6
帖子
由 eexpress » 2008-07-31 20:49
iconv -c -f utf-8 -t gbk
看着都难受的。这世界。
● 鸣学
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#7
帖子
由 xiooli » 2008-07-31 21:39
holddreams 写了:我用这个下歌曲的时候,显示
Initializing download: true
然后就停在那里不动了,该怎么解决?
谢谢
下不了,因为百度改东西了,你自己看看改下吧,脚本很简单的。
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#8
帖子
由 xiooli » 2008-07-31 22:16
holddreams 写了:我用这个下歌曲的时候,显示
Initializing download: true
然后就停在那里不动了,该怎么解决?
谢谢
更新了,你再试试看?
-
holddreams
- 帖子: 198
- 注册时间: 2007-05-06 0:53
#9
帖子
由 holddreams » 2008-08-01 19:49
xiooli 写了:holddreams 写了:我用这个下歌曲的时候,显示
Initializing download: true
然后就停在那里不动了,该怎么解决?
谢谢
更新了,你再试试看?
可以了,多谢!
-
后之后觉
- 帖子: 252
- 注册时间: 2008-05-15 13:16
#10
帖子
由 后之后觉 » 2008-08-15 18:59
问题是在 怎么弄? axel是什么 ?
-
附件
-
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#11
帖子
由 xiooli » 2008-08-15 19:07
后之后觉 写了:问题是在 怎么弄? axel是什么 ?
ls,axel 是一个多线程的命令行下载软件,你也可以把下载的软件换成 wget,把这行:axel -n 20 "$music_url" -o "$save_dir/$nm.$ext" 改成:
wget "$music_url" -O "$save_dir/$nm.$ext" 就行了。
ps:使用的时候命令里面不必用+号,比如我要下载第2首歌直接输入:d2就好,不必d+2
-
后之后觉
- 帖子: 252
- 注册时间: 2008-05-15 13:16
#12
帖子
由 后之后觉 » 2008-08-15 19:20
xiooli 写了:后之后觉 写了:问题是在 怎么弄? axel是什么 ?
ls,axel 是一个多线程的命令行下载软件,你也可以把下载的软件换成 wget,把这行:axel -n 20 "$music_url" -o "$save_dir/$nm.$ext" 改成:
wget "$music_url" -O "$save_dir/$nm.$ext" 就行了。
ps:使用的时候命令里面不必用+号,比如我要下载第2首歌直接输入:d2就好,不必d+2
thank you 我安装了axel
-
后之后觉
- 帖子: 252
- 注册时间: 2008-05-15 13:16
#13
帖子
由 后之后觉 » 2008-08-15 22:45
代码: 全选
请输入命令:d3
Updating /home/***/music/爱情转移爱情呼叫转移-陈奕迅.mp3
No ID3 header found; skipping...
出错信息 现象是 下载的mp3在/home/***里 music目录里有一个几K的文件
是改名的问题?
代码: 全选
wget "$music_url" -o "$save_dir/$nm.$ext"
[ -e "$save_dir/$nm.$ext" ] && mid3iconv -e gbk "$save_dir/$nm.$ext"
clear && cat /tmp/music_info
我不是很懂,问题是不是在这里?
-
xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
-
联系:
#14
帖子
由 xiooli » 2008-08-15 23:13
后之后觉 写了:代码: 全选
请输入命令:d3
Updating /home/***/music/爱情转移爱情呼叫转移-陈奕迅.mp3
No ID3 header found; skipping...
出错信息 现象是 下载的mp3在/home/***里 music目录里有一个几K的文件
是改名的问题?
代码: 全选
wget "$music_url" -o "$save_dir/$nm.$ext"
[ -e "$save_dir/$nm.$ext" ] && mid3iconv -e gbk "$save_dir/$nm.$ext"
clear && cat /tmp/music_info
我不是很懂,问题是不是在这里?
我这个获取mp3真事地址用了一个很取巧的方法(取的是试听地址),所以可能不是所有的都能弄下来,几百k的大概是把网页下载下来了。
你要正规的方法可以去
viewtopic.php?t=142965&highlight=看看,里面有最新的解析百度加密地址的方法