...With friends like these, who needs enemies?..

[    ljsm.pl (at offtopia.net)     |     ljsm-strip.pl     |     ljdir.pl     |     lj-index.pl    ]

Миша Вербицкий

Скрипты для архивирования ленты LJ (02.2001-10.2002)

Что это

Эти скрипты основаны на ljsm.pl Александра Николаева.

В отличие от ljsm.pl, эти скрипты не будут работать не под Юниксом. Для их работы требуется Perl и довольно много модулей к нему (те же самые модули, которые нужны для ljsm.pl, плюс Date::Manip). Модули к Перлу проще всего устанавливать с помощью модуля CPAN, зайдя как root и сделав

perl -MCPAN -e shell
(CPAN должен быть уже установлен). Ошибки при установке модулей для Unicode следует игнорировать (делать установку неправильных модулей с -force).
Юникод вреден.

Для работы lj-index.pl надо создать файл forindex.txt в главной директории архива; в этом файле содержится заголовок к главной странице сайта.

Программа ljdir.pl считает, что сайт создается локально в директории $PATH (в данный момент это /LJ/). Создайте софт-линк с вашей директории на /LJ/ либо измените переменную.

root# ln -s <vasha_direktoriya> /LJ
Программы ljdir.pl и lj-index.pl считают, что архив лежит на вашем сервере в директории
http://vash_server/LJ/
Измените /LJ на что вам нужно посредством global replace.

Во всех трех программах содержатся переменные $HEADER и $FOOTER. Измените их как вам нравится.

Чтобы создать архив индивидуального пользователя, вы делаете

ljsm-strip.pl -d2001/02:2002/10 -a <imya>
ljdir.pl <imya>
lj-index.pl <imya>
Чтобы создать архив нескольких, пишите
ljsm-strip.pl -d2001/02:2002/10 -a <imya1>, <imya2>, ...
ljdir.pl 
lj-index.pl 
Внимательно следите за работой ljsm-strip.pl - как и ljsm.pl, он имеет тенденцию недогружать дневник пользователя, когда сервер livejournal.com ломается (что случается весьма часто). Если это произошло, пишите
ljsm-strip.pl -d2001/02:год/месяц -O <imya>
если оно сломалось, когда загружали год/месяц. Если сломалось, когда загружали memories, пишите
ljsm-strip.pl -d2001/02:2002/10 -a -O <imya>
В программах ljdir.pl и lj-index.pl жестко прописан период с 2001/02 по 2002/10. Чтобы его изменить, нужно немножко разобраться с текстом программы. Это нетрудно, если вы знаете Perl.

Что делается

ljsm-strip.pl

ljsm-strip.pl это версия ljsm.pl, которая объективно хуже оригинала. Изменения в формате файлов, выдаваемых сервером livejournal.com, могут фатально нарушить работу ljsm-strip.pl и ljsm.pl, но в ljsm-strip.pl таких мест больше. Для того, чтобы эти ошибки произошли, в программном обеспечении livejournal.com должны быть сделаны изменения, но это случается регулярно.

(Собственно говоря, между выходом версии 1.51 ljsm.pl и серединой ноября 2002 года, когда я стал писать ljsm-strip.pl, такие изменения в сервере livejournal.com были сделаны; в связи с чем ljsm.pl пришлось исправлять).

ljsm.pl качает сообщение со всеми комментариями; мой собственный дневник занял 17 мегабайт, а мои сообщения комментируются не очень обильно (в среднем - примерно по 5 комментариев к сообщению). Есть пользователи, у которых комментариев по 40-50 (рекорсменом тут является Dodododo).

Основное отличие ljsm-strip.pl - эта программа не скачивает комментариев; в результате объем моего дневника, скачанного ljsm-strip.pl, оказался всего 3 мегабайта. Кроме того, ljsm-strip.pl находит в каталоге сообщений пользователя дату сообщения и количество комментариев; в конец каждого сообщения добавляется "n replies", а в к названию файла добавляется в начало дата. Это нужно для удобного составления хронологической ленты сообщений.

ljdir.pl

ljdir.pl обрабатывает архив сообщений, полученных из ljsm-strip.pl. В связи с Интернетом эта программа не нуждается.

Процедура parse_entry берет сообщение и выдает хэш с полями ->{mood}, ->{music} ->{body} ->{date} ->{name} ->{username} ->{picture} ->{subject} ->{url} ->{pic} ->{replies_num} ->{error}.

Процедура strip берет сообщение, пропускает через parse_entry и выдает это сообщение в форме, пригодной для включения в ленту. Если вам не нравится форма ленты, производимой ljdir.pl, перепишите strip.

Процедура lj_dir берет директорию с архивом сообщений, сделанным ljsm-strip.pl. Все файлы в этой директории подвергаются воздействию strip и загоняются последовательно в index1.html, index2.html и так далее. Создается софт-линк index1.html к index.html. В начало и в конец каждого индекса всобачивается значение переменной $HEAD и $FOOT (это заголовок и хвост файла).

Процедура lj_user берет имя пользователя, изучает содержимое его директорий, создает таблицы с заголовком и хвостом, записывает их в $HEAD и $FOOT, затем сохраняет эти переменные в файлы <user>/.header и <user>/.footer.

После этого lj_user запускает lj_dir во всех директориях пользователя.

Процедура friends_copy копирует все сообщения из всех пользовательских архивов в директорию для френд-ленты, а lj_lenta создает потребный для этой ситуации $HEAD и $FOOT и запускает lj_dir.

lj-index.pl

Программа lj-index.pl делает заголовки к индивидуальным директориям и общий заголовок сайта.

Индивидуальный заголовок (процедура get_info) получается из User's Info пользователя на livejournal.com и файлов .header и .footer, производимых ljdir.pl. Чтобы скачать User's Info, используются версии процедур ljsm.pl.

Процедура index_ljsm есть адаптация build_index из ljsm.pl; она строит файл с заголовками ко всем сообщениям и памятным записям пользователя и пишет его в index-ljsm.html. В дополнение к функциям build_index, index_ljsm добавляет число комментариев к сообщению пользователя, а также читает .header и .footer и использует их в качестве заголовка и хвоста. Все линки index_ljsm.html имеют вид index10.html#2002082904:03:00_9177.html, т.е. на индивидуальное сообщение линков больше не ставится (и его можно, для экономии места, удалить).

Процедура main_index читает forindex.txt, изучает содержимое пользовательской директории и ленты, а затем пишет таблицу с линками на пользовательские директории и на сообщения общей ленты.

Во всех программах огромное количество ошибок.


    [    ljsm.pl (at offtopia.net)     |     ljsm-strip.pl     |     ljdir.pl     |     lj-index.pl    ]    
With friends like these...
Advertisement on IMPERIUM.LENIN.RU:
С помощью этого существа убивали евреев! | Копирайта у нас нет
Зайдите в церковь -- увидите стадо | Ходят слухи о терафиме в потайной комнате


:ЛЕНИН: