学校 ftp 搜索

sh/bash/dash/ksh/zsh等Shell脚本
回复
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

学校 ftp 搜索

#1

帖子 aBiNg » 2008-11-07 11:35

觉得打开 firefox 再去歪歪搜索有点麻烦,于是写了此脚本。NUAA 校友应该可以用。

Notes:
  • 多关键字支持,但某一个关键字不能由中文与非中文字混合构成。
  • 学校 ftp 搜索页面为 gbk,先用 iconv 转成 utf-8。
  • URL 中字编码问题由 od 和 awk 组合处理了,就是十六进制的再排序。
内容:

代码: 全选

#!/bin/bash
#
# Function: Search from http://ftp.nuaa.edu.cn
# Author: aBiNg <[email protected]>
# Date: 2008.11.06

# NOTES:
# + ARGUMENTS can't include strings concatenated by Chinese characters and "[0-9A-Za-z]+".

[ $# -eq 0 ] && exit

for((i=1;i<=$#;i++))
do
    eval VAR='$'$i
    if expr "$VAR" : "[0-9A-Za-z.-_]\+" &> /dev/null
    then
        ARRAY[$i]="$VAR"
    else
        SECT=$((2*${#VAR}))
        ARRAY[$i]=`echo "$VAR" | iconv -f utf-8 -t gbk | od -t x | tr '\n' ' ' | \
        awk '\
        {
            $1=""
            gsub(/[ ]+/,"",$0)
            for(j=1;j<='$SECT';j++){
                if(j%4==1){
                    k=2*j+5
                }
                printf("%%%s",substr($0,k,2))
                k-=2
            }
        }'`
    fi
done

DECODED=`echo ${ARRAY[@]} | tr ' ' '+'`

URL="http://ftp.nuaa.edu.cn/cgi-bin/parker/search?String=${DECODED}&t=0&r=all&s=ftp"
TMPDIR="/tmp/nuaa"
TMPFILE=${TMPDIR}/${DECODED}.html

[ ! -d $TMPDIR ] && mkdir -p $TMPDIR

wget -q -O $TMPFILE $URL &> /dev/null

if file $TMPFILE | grep HTML &> /dev/null
then
    iconv -f gbk -t utf-8 $TMPFILE | \
    sed '/^ <[^>]*>\/.*/d' | \
    sed -ne '/.*HREF="ftp:\/\//s!.*@\([^>]*\)">[<>b]*\([^<]*\)<.*!\2\n\1\n!p' | \
    more
fi
举例(脚本取名 nuaa_ftp):
1、

代码: 全选

$ nuaa_ftp 李尔王
ftp3.nuaa.edu.cn
202.119.65.3/

(2008)李尔王-jiajia/
202.119.65.3/--Upload/(2008)李尔王-jiajia/

[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd1.avi
202.119.65.3/--Upload/(2008)李尔王-jiajia/[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd1.avi

[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd1.cn.srt
202.119.65.3/--Upload/(2008)李尔王-jiajia/[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd1.cn.srt

[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd1.en.srt
202.119.65.3/--Upload/(2008)李尔王-jiajia/[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd1.en.srt

[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd2.avi
202.119.65.3/--Upload/(2008)李尔王-jiajia/[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd2.avi

[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd2.cn.srt
202.119.65.3/--Upload/(2008)李尔王-jiajia/[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd2.cn.srt

[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd2.en.srt
202.119.65.3/--Upload/(2008)李尔王-jiajia/[李尔王].King.Lear.2008.TV.DVDRip.XviD-HAGGiS.cd2.en.srt
2、

代码: 全选

$ nuaa_ftp wall.E rmvb
ftp2.nuaa.edu.cn
202.119.65.4/

影视帝国(bbs.cnxp.com).机器人总动员(听译).Wall.E.2008.DVDSCR.rmvb
202.119.65.4/---电影专区/++13%20动画片/(2008)机器人总动员(WALL·E)%20(皮克斯&迪尼)%20-美国动画/影视帝国bbs.cnxp.com).机器人总动员(听译).Wall.E.2008.DVDSCR.rmvb
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: 学校 ftp 搜索

#2

帖子 xiooli » 2008-11-07 12:04

汉字转urlencode太长,没必要:

代码: 全选

echo -n "汉字"|iconv -f utf-8 -t gbk|od -t x1 -A n -w1000|tr " " "%"
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

Re: 学校 ftp 搜索

#3

帖子 aBiNg » 2008-11-07 12:51

xiooli, 好方法。谢谢。
回复