[原创]下载文档文件的脚本(支持lrc、doc、xls、pdf、ppt等),可用于下载歌词

sh/bash/dash/ksh/zsh等Shell脚本
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

[原创]下载文档文件的脚本(支持lrc、doc、xls、pdf、ppt等),可用于下载歌词

#1

帖子 xiooli » 2008-05-01 18:58

保存到任意目录然后cd到该目录

代码: 全选

chmod +x ./downdocs.sh
用途:

用于搜索并下载特定格式的文件,此处的文件主要是文档文件如lrc、doc等,当然你不能用它来搜索图片,音乐,某种片片等东东。
ps:这不是我能支配的,如果你说为何不能下片片,那么我只能建议你去询问baidu的工作人员啦:D

用法:

使用方法:downdocs.sh -f [文档类型] [待搜文件名(就是keywords啦)],不加-f参数默认搜索lrc文件。
文档类型包括lrc(歌词文件)、doc、xls、pdf、ppt等。
下载的文件默认保存在~/docs/filetype目录,保存的文件名格式为:文件名.filetype

源码:

代码: 全选

#!/bin/bash
#coded by xiooli
#使用方法:downdocs.sh -f [文档类型] [待文件名],不加-f参数默认搜索lrc文件。
#文档类型包括lrc(歌词文件)、doc、xls、pdf、ppt等。
#参考了benqlk的部分代码:http://forum.ubuntu.org.cn/viewtopic.php?t=95073,(虽然这段代码现在已经被替换了)在此表示感谢。
#下载的文件默认保存在~/docs/filetype目录,保存的文件名格式为:文件名.filetype
if [ $1 == "-f" ];then
	filetype=$2
	keyword=$3
else
	filetype="lrc"
	keyword=$1
fi
#在此改变文件的保存目录
save_dir=~/docs/$filetype
if ! [ -d ~/docs ];then
	mkdir ~/docs
fi
if ! [ -d $save_dir ];then
	mkdir $save_dir
fi
if [ `locale |grep "LANG=.*UTF-8"` ];then
	lang=1
fi
if [ $lang ];then
	tmp=`echo "$keyword" | iconv -c -f utf-8 -t gb2312`
else
	tmp=$keyword
fi
#将字符转换成urlencode(字母也会被转成urlencode,不过搜索效果是一样的,就没有区别对待啦:P)
	a=`echo "$tmp" | od -t x1 -A n |tr " " %` 
#获取原材料并从中提取出欲下文档的url并下载之。
wget "http://www.baidu.com/s?wd=$a+filetype%3A$filetype&cl=3" -O /tmp/src_file
if [ $lang ];then
	iconv -f gb2312 -t utf-8 -c /tmp/src_file >/tmp/src_file_utf8
	cat /tmp/src_file_utf8 |grep -i "<b>【$filetype】</b>" |sed 's/href=\"/\n/g' |sed 's/.*cache.baidu.com.*//g' \
	|awk -F"</font>" '{print $1,$2}' |sed 's/ target=.*\">//g' |sed 's/<.*>//g;s/文件格式://g;s/ //g' \
	|grep "^http" |grep -n "^http">/tmp/links
else 
	mv /tmp/src_file /tmp/src_file_utf8
	cat /tmp/src_file_utf8 |grep -i "<b>【$filetype】</b>" |sed 's/href=\"/\n/g' |sed 's/.*cache.baidu.com.*//g' \
	|awk -F"</font>" '{print $1,$2}' |sed 's/ target=.*\">//g' |sed 's/<.*>//g;s/�ļ���ʽ://g;s/ //g' \
	|grep "^http" |grep -n "^http">/tmp/links
fi
echo "文件类型:$filetype
"
cat /tmp/links |awk -F"\"" '{print $2}'	|grep -n ".*"
if  [ -s /tmp/links ];then 
	read -p "请选择你要下载的文件:" num
	url=`cat /tmp/links |grep "^$num" |awk -F"\"" '{print $1}' |awk -F":" '{print $2":"$3}'`
	name=`cat /tmp/links |grep "^$num" |awk -F"\"" '{print $2}'`
	if [ -e $save_dir/$name.$filetype ];then
		echo "已存在同名文件!"
	else 
		if [ $lang ] && [ $filetype == "lrc" ] ;then
			wget "$url" -O /tmp/$name.$filetype
			iconv -f gb2312 -t utf-8 -c /tmp/$name.$filetype -o $save_dir/$name.$filetype
			rm /tmp/$name.$filetype
		else
			wget "$url" -O $save_dir/$name.$filetype
		fi
	fi
else
	echo "未搜索到结果"
fi
源文件:
附件
downdocs.sh.去掉后面(新).rar
(2.43 KiB) 已下载 80 次
downdocs.sh.去掉后面.rar
这个已经旧了,请下第一个
(2.47 KiB) 已下载 132 次
上次由 xiooli 在 2008-05-16 23:26,总共编辑 5 次。
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#2

帖子 xiooli » 2008-05-01 18:59

来一张运行图片:
附件
Screenshot.png
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#3

帖子 xiooli » 2008-05-02 13:42

在原来只下lrc的基础上增加了下载doc、pdf、ppt等文件的功能,欢迎大家下载试用 :em01 :em02
头像
yang_hui1986527
帖子: 911
注册时间: 2006-03-04 23:10
来自: 江西高安
联系:

#4

帖子 yang_hui1986527 » 2008-05-02 13:52

不错,学习中...
微信:sn0wdr1am86
QQ: 3217680847
QQ 群:82695646
网站:https://www.itcoder.tech/
网站:http://www.snowdream.tech/
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#5

帖子 eexpress » 2008-05-02 15:03

作什么用的呢。那被搜索的文件,是什么文件啊。
● 鸣学
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#6

帖子 xiooli » 2008-05-02 15:49

eexpress 写了:作什么用的呢。那被搜索的文件,是什么文件啊。
就是搜索并下载文档文件的呀,比如doc、pdf、ppt、lrc这些格式的文件啊,可能有用点是还是下载歌词文件了,默认不加-f参数就是下载歌词文件的。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#7

帖子 eexpress » 2008-05-02 15:58

[待搜文件名]是指url吗
● 鸣学
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#8

帖子 xiooli » 2008-05-02 16:08

eexpress 写了:[待搜文件名]是指url吗
额滴神啊,文件名能是url么,当然是指keywords拉 :em65
ps:难道是我的表达有问题?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#9

帖子 eexpress » 2008-05-02 17:13

是这意思拉。因为1楼没说明用处啊。你不觉得吗。呵呵。
● 鸣学
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#10

帖子 bones7456 » 2008-05-02 17:28

赞,不错啊~
关注我的blog: ε==3
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#11

帖子 solcomo » 2008-05-16 15:13

谢lz :lol:
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#12

帖子 solcomo » 2008-05-16 21:33

lz..我什么也搜索不到 :(
附件
2008-05-16-213354_498x353_scrot.png
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#13

帖子 solcomo » 2008-05-16 23:13

在我这还是不行 :(
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#14

帖子 solcomo » 2008-05-16 23:14

:shock: 记起来一件重要的事...我是英文locale..

代码: 全选

como@Lethe:~$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#15

帖子 xiooli » 2008-05-16 23:18

solcomo 写了::shock: 记起来一件重要的事...我是英文locale..

代码: 全选

como@Lethe:~$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
我也是刚刚想到的,哈哈,没有考虑周全啊,等我再改下。
回复