Вчера по просьбе одного товарища написал жутковатый скриптик для скачивания произвольного диапазона страниц bash.org.ru в один файл формата fb2. Сейчас подумал, а вдруг здесь кому понадобится? (-:
Диапазон обязательно передаётся параметром в виде 1-100 (первая - последняя). Примерно все зааппрувленные цитаты можно скачать с параметром 1-492. Сохраняется в quotes.fb2 в каталоге запуска.
Замечания по качеству и функциональности не принимаются — написано just4fun, и лично мне не нужно =)
#!/bin/bash
#===============================================================================
#
# FILE: bor_get.sh
#
# USAGE: bor_get.sh
#
# DESCRIPTION: Download bash.org.ru quotes to files
#
# OPTIONS: range in form 100-200 where numbers are pages beginning from 1
# REQUIREMENTS: bash, wget, curl,
# BUGS: none known
# NOTES: ---
# AUTHOR: GotF
# COMPANY:
# CREATED: 05/14/2010 10:18:59 PM YEKST
# REVISION: test
#===============================================================================
PAGE_BEGIN=$(echo ${1} | cut -d "-" -f1);
PAGE_END=$(echo ${1} | cut -d "-" -f2);
TMP_FILE="/tmp/bor.page";
echo -e "<?xml version=\"1.0\" encoding=\"windows-1251\"?>""\n"\
"<FictionBook xmlns=\"http://www.gribuser.ru/xml/fictionbook/2.0\" xmlns:l=\"http://www.w3.org/1999/xlink\">""\n"\
"<body>""\n" > quotes.fb2
for (( page = ${PAGE_BEGIN}; page <= ${PAGE_END}; page++ )); do
curl -s http://bash.org.ru/index/${page} > ${TMP_FILE};
grep -o "<span id=.*\">" ${TMP_FILE} | egrep -o "[0-9]{1,}" | sort -g | while read qnum; do
qbody=$(grep -A6 "v$qnum" ${TMP_FILE} | grep "<div>" | sed -e 's/<div>//' -e 's/<\/div>//')
echo -e "<title>$qnum</title>""\n"\
"<p>${qbody}</p>""\n" >> quotes.fb2
done
done
echo -e "</body>""\n"\
"</FictionBook>" >> quotes.fb2
sed -i -e 's/\t*//g' quotes.fb2;
sed -i -e 's/^\ *//g' -e 's/<br.*>/<\/p>\n<p>/g' quotes.fb2;