Краткая инструкция для тех, кто хочет уметь самостоятельно сохранять свой раздел на Самиздате вместе со всеми комментариями.


Предполагается, что человек, читающий это краткое руководство, достаточно хорошо дружен с Un*x, чтобы установить wget и perl (версии не ниже 5), необходимые для выполнения инструкций.


Вам потребуется небольшой скрипт на Perl для сохранения комментариев. Вы можете взять его из репозитория (выполнив следующую команду — предполагается, что у вас установлен Subversion, svn):



$ svn checkout sitools.googlecode.com/svn/trunk/ sitools

В каталоге sitools/getcomments будет файл getcomments.pl — то, что вам нужно. Это идеальный способ, потому что я планирую дорабатывать файл, и, выполнив в каталоге sitools, созданном, как указано выше, команду



$ svn update

вы всегда будете располагать свежей версией. Как альтернатива, возьмите файл, прицепленный к этому тексту — он не будет меняться автоматически, но я постараюсь это делать достаточно регулярно.


Теперь, когда у вас есть wget и getcomments.pl (не забудьте дать последнему права на исполнение, например командой chmod +x getcomments.pl), можно приступать к копированию раздела и всех каталогов в нём. Команды ниже приведены в предположении, что getcomments.pl скопирован в каталог ~/bin (каталог bin в вашем домашнем каталоге), и что вы создали каталог ~/mirrors для хранения архивных копий раздела. Далее я также предполагаю, что имя раздела (адрес), который мы архивируем, такое: http://zhurnal.lib.ru/p/pupkin_v_t/


1. Копируем все файлы из раздела:



$ cd ~/mirrors
$ wget -np -nv -r -c \
--user-agent="Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.7) Fedora/3.0.7-1.fc9 Firefox/3.0.7" \
zhurnal.lib.ru/p/pupkin_v_t/

В качестве строки user-agent вы можете передать идентификатор любого другого браузера, главное — чтобы такой идентификатор был похож на что-то реальное.


Теперь переходим в каталог, где хранятся все файлы раздела и запускаем там getcomments.pl:



$ cd ~/mirrors/zhurnal.lib.ru/p/pupkin_v_t
$ ~/bin/getcomments.pl

Собственно, это всё. В вашем реальном случае подставляйте имя другого раздела и вызывайте getcomments.pl оттуда, откуда вам удобнее. Важно: сайт «Самиздата» часто перегружен и иногда может не справиться с сохранением той или иной страницы (обычно HTTP код 503). В этом случае решение простое: повторно запустите getcomments.pl — он скачает заново только отсутствующие файлы.


Правила именования комментариев таковы: если произведение хранится в файле
abc.shtml
то ленты комментариев к нему записываются в файлы с именами
abc.comment.A.C.html, где
A — номер архива (0, если это текущая лента, ещё не перешедшая в архивы)
C — номер страницы комментариев.


Если вы не владеете навыками и/или доступом к Un*x серверу, где возможно использовать упомянутое выше ПО, оставьте «заявку» на выполнение архивирования здесь или напишите мне письмом список разделов и — нужно ли сохранять их комментарии.


Нынешние ограничения скрипта сохранения комментариев, их ликвидация — планы для следующего релиза:

  • Не заменяет в теле произведений и сохранённых лент комментариев ссылки на локально сохранённые ленты комментариев. Вам придётся выбирать очередную сохранённую ленту вручную.
  • Не обрабатывает такие сбои сервера, как код 503 — вам придётся самостоятельно проверять, всё ли скачалось и, при необходимости, перепрогонять скрипт.
  • Не умеет выполнять скачивание раздела и комментариев «одним щелчком» — одной командой, одним запуском собственно скрипта
  • Не умеет присваивать сохранённой странице комментариев дату и время самого последнего в ней обновлённого комментария.
  • Не умеет работать с разделами на других сайтах на том же двигателе (world.lib.ru, fan.lib.ru и т.д.) — имя домена zhurnal.lib.ru жёстко прошито в теле скрипта


Принимаются предложения и идеи по модернизации скрипта.


Блог в СИНДИКАТе [ЭЛЕН ДАРСИ][GALAXY HUNTER][MEGEDO][NIBIRU AUS][ZUDMAN][BOYANDIN]


URL записи