Thứ Năm, tháng 4 26, 2007

Tái tiếp danh sách

Dùng wget tải list
Sau lần upgrade Slackware này, mới có dịp thử một số chức năng của wget, mà trước giờ do chưa cần dùng gì, nên cũng không đả động đến.
Đầu tiên là vấn đề tải tiếp. Với một file nào đó, wget làm rất tốt việc này, chỉ việc dùng tham số -c. Nhưng với việc tải theo danh sách, wget không hỗ trợ.
Trong trang này, có đề cập đến cách giải quyết. Giải pháp của nó là trong mỗi thư mục có một file .wget-list là danh sách, xoá đi dòng đầu tiên sau khi nó được tải xong. Cách này dùng tạm được, nhưng ý mình là muốn không làm ảnh hưởng đến cái danh sách. Vì thế, dùng một cái log file là ý kiến dùng được.
Dùng tạm cái scipt đơn giản(?) sau, viết để học bash:


#!/bin/bash
FILE="$HOME/.download"
down () {
let "count+=1"
url=`sed -n "$count p" $file`
while [ "$url" != "" ]; do
echo "$file $count $PWD" >>$FILE
echo "downloading $url"
wget $url
sed -i "/$file/d" $FILE
let "count+=1"
url=`sed -n "$count p" $file`
done
echo "finish"
}
if [ "$1" = "-c" ]; then
file=$2
line=`sed -n "/$file/p" $FILE`
echo "$line"
read file count dir << EOF
$line
EOF
cd $dir
url=`sed -n "$count p" $file`
echo "downloading $url"
wget -c $url
sed -i "\$file\d" $FILE
down
else
let "count=0"; file=$1
down
fi

Mọi cái cần thiết sẽ ở file ~/.download, mỗi lần dùng nó sẽ coi trong file này để lấy thông tin. Khi nào cần tải tiếp thì thêm -c vào đầu, không thì gõ mỗi tên file danh sách là được.

Edit: Cái mã chạy bị điên, mới chỉnh lại.

0 bình loạn:

Đăng nhận xét | Feed



 
^

Powered by Bloggerblogger addicted por UsuárioCompulsivo
original Washed Denim por Darren Delaye
Creative Commons License