Cào WorldEbookFair

Bọn WorldEbookFair quảng cáo bằng cách bôi ra cái trò “Free Access to the public from July 4th to August 4th, in celebration of Project Gutenberg’s 35th Birthday”. Thôi thì, méo mó có hơn không, ta cứ lôi về, chả mất gì của bọ :p. Làm quả tập lệnh cho khoẻ.

Đầu tiên là tạo danh sách các liên kết cho từng bộ sưu tập:

#!/bin/sh
# Will be expired on 4th August 2006

wget http://worldebookfair.com/Collections.htm

less Collections.htm |\
grep -e ">http://WorldeBookFair\.com/.*.htm" |\
sed -e 's/^.*href="//g' \
	-e 's/\.htm.*$/\.htm/g' \
	-e 's/\&/\\\&/g' |\
grep -e "^http.*" | sort | uniq > ALL.txt

wget -i ALL.txt

sed -r -e 's#http://WorldeBookFair\.com/(.*)\.htm$#\1#g' -i ALL.txt

for i in `less ALL.txt`;
do
	less "$i.htm" |\
	grep -e "\.\(pdf\|htm\|txt\)" |\
	iconv -c |\
	sed -r -e 's/^.*href\s?=\s?"//g' \
		-e 's/\.(pdf|html?|txt).*$/\.\1/g' \
		-e 's/\&/\\\&/g' \
		-e 's#http://worldebooklibrary(\.com)?/#http://worldebookfair\.com/#ig' |\
	grep -ie "^http://\(www\.\)\?WorldeBookFair" |\
	sed -r -e '/\/(Join|Search|Collections)\.htm/d' |\
	sort | uniq > "list-$i.txt";
done

Sau đó vẫn là trò truyền thống: Chạy `screen` và chia danh sách ra để tải cho nhanh. Ví dụ:

for i in `less ALL.txt | head -n 5 | tail -n 5`; \
do \
	wget -i "list-$i.txt" -P $i; \
	cp "$i.htm" "$i/index-of-$i.html"; \
done

Đoạn này sẽ chỉ tải về *.htm, *.pdf, *.txt, không tải *.mp3, *.wmv,… Sau một đêm thì được gần 4GB. Chắc là tập lệnh của mình dỏm nên mới ít thế :mrgreen: