LJexport—загрузка записей из дневников ЖЖ (LiveJournal)
Table of Contents
How it works
This is a Python script which can download and store posts from LiveJournal server. There is no need to login or authorise on the server, thus any public journal can be downloaded for a selected period of time. Images and (non-collapsed) comments may be stored on demand as well.
For more details use Google Translate (or any other auto-translator RU→EN) to read the rest of documentation.
С места в карьер
Программа сохраняет публичные записи из какого-либо дневника ЖЖ (Живой Журнал—LiveJournal) за требуемый период. По желанию можно дополнительно сохранять картинки, отклики и внешние ссылки в записях.
По умолчанию программа так же создает указатель index.html
в корневой папке дневника на все загруженные (как в этом сеансе, так и ранее) записи. Кроме того все записи связывают в хронологическую цепочку двусторонними ссылками. Оба эти действия могут быть отменены ключами командной строки.
Программа русифицирована и должна сама переключится на русский язык если он выбран на системном уровне.
Для работы достаточно:
- Загрузить на компьютер имеющийся релиз программы как исходный код или исполняемый
.exe
файл Windows. Для работы исходного кода может понадобится выполнить шаги по установке. - Запустить программу
LJexport
. Если необходимая информация не была задана в командной строке, то программа запросит её у пользователя. Для этого будет открыто новое окно или начат диалог в терминале. По ходу будут даны необходимые подсказки для правильного ввода параметров. В первый раз запустите загрузку всего за один месяц—просто на пробу. - Загрузка, особенно с картинками, отзывами и внешними ссылками, может занять длительное время. Временами могут появляться предупреждения, что какая-то операция не удалась. При загрузке внешних ссылок это происходит особенно часто, при том, что документ всё-таки создан. По завершению всей загрузки за целый месяц на экран будет выведен отчёт с краткими итогами.
- По завершению всего задания в выбранном каталоге должна быть создана папка с полученной информацией, см. подробнее ниже. Впрочем, если по ходу возникли какие-либо проблемы мы не вешаем нос.
Предположив, что предыдущие шаги (по крайней мере, с помощью указанных по ссылкам текстов) были успешны, обратимся к полученным результатам.
Что мне с этого будет?
Программа позволяет пользователю загружать по желанию только те части дневника, которые требуются. Только текст записей дневника и навигация между ними будут сохранены по умолчанию. Для загрузки всего остального пользователь должен это явно указать—или посредством ключей командной строки, или в ходе диалога с программой. Впрочем загрузка самих записей тоже может не состоятся, если пользователь решил ограничится только статистикой записей.
Все загруженное складируются в подкаталогах выбранной папки. По умолчанию это текущий рабочий каталог, т.е. той, откуда был вызов программы. Она может быть заменена на любую существующую папку или в ходе диалоге, или из коммандной строки ключом -f
или --folder
. В выбранном каталоге создаётся (если не существовала до этого) папка, названная так же, как и загружаемый дневник ЖЖ. Далее вкладываются папки по годам и внутри них—по месяцам.
Рассмотрим отдельно каждую возможность для загрузки.
HTML файлы записей
Если загружалась не только статистика, но и записи дневника, то созданные для них HTML файлы распределяются по помесячным папкам. HTML файлы создаются по одному на каждую запись дневника.
Попутно из кода вычищается разный мусор. В остатке — вы получаете сохранёнными только то, составляет собственно запись в дневнике. Но здесь может понадобиться ваше участие в настройках этого очищения.
Навигация
Переход между записями можно осуществлять либо
- из файла
index.html
, созданного в корневой папке дневника, или - по ссылкам на следующую и предыдущую запись добавленные в шапку каждого файла записи.
Навигация использует относительные ссылки, поэтому после загрузки всё дерево с информацией можно перенести в другое место на файловой системе или вообще на иные устройства.
Если какая-либо запись содержала ссылку на более раннюю запись в том же дневнике, которая так же была уже загружена, то к исходной ссылке будет добавлена относительная ссылка на локальную копию этой ранней записи.
При необходимости создание навигации можно отменить (ключ -L
—все отменяющие ключи задаются заглавными буквами), тогда записи будут сохранены разрозненно.
Картинки
Если вы выбирали скачивания картинок (либо в диалоге, либо указанием ключа -i
командной строки), то все ссылки на изображения автоматически проверяются на доступность, которая вносится в отчёты. Все доступные (в зависимости от места и времени запуска скрипта) картинки скачиваются и их пути в загруженных записях меняются на локальные. По умолчанию, картинки сохраняются в подкаталоге imgs
в папке текущего для записи месяца. Это может быть по желанию изменено в конфигурации.
Отклики
Можно запросить сохранение откликов к загружаемым записям—либо во время диалога, либо задав ключ -c
командной строки. Отклики будут сохранены в отдельных HTML файлах, если откликов много, то они будут распределены по нескольким файлам. Файлы отдельной записи и все файлы откликов к ней (если таковые имеются) будут связаны перекрёстными ссылками. Свёрнутые отклики (на данный момент) не разворачиваются и просто представлены в ветках именами сделавшими их пользователей. Картинки из откликов не сохраняются локально, остаются внешние ссылки на них. Все файлы с откликами помещаются в подкатолог comnts
внутри соответствующей помесячной папки. Это тоже может быть по желанию изменено в конфигурации.
Внешние ссылки
Не редкость, когда запись в дневника появляется как реакция на то, что «в Интернете опять кто-то неправ». Ну или наоборот: «полностью разделяю и горячо поддерживаю предыдущего оратора». Зачастую, такая дневниковая запись оказывается неполной, если нет доступа к побудительному тексту. Поэтому LJexport даёт возможность при желании попробовать загрузить и сохранить в формате PDF все внешние ссылки указанные в записи с помощью ключа -x
. Для активации этой возможности требуются дополнительные шаги по установке.
Так как со временем страницы в сети пропадают или меняются, то скрипт вначале пытается загрузить страницы из Архива Интернета по состоянию на день дневниковой записи. Если по какой-либо причине воспользоваться архивной копией не удалось, то тогда будет использована исходная ссылка.
Программа не пытается загружать мультимедийные файлы, вместо этого она записывает в отдельном файле команды для их обработки. Типы файлов (к примеру *.mp3
, *.mp4
и др.), сайты (напр. youtube
, rutube
и др.) и команды для их обработки можно изменить в конфигурации. Отметим, что медийные ссылки вставленные через iframe
никак не обрабатываются и не сохраняются иначе, как они представлены в записи.
Внешний вид
Внешний вид сохранённых записей и откликов управляется стилевым (CSS) файлом ljexport.css
в корневой папке загруженного дневника. Вы можете редактировать его по своему усмотрению, что бы поменять отображение записей («раскрасить попугайчиком» или «добавить коробочек»).
Если вы решите догрузить в ту же папку больше записей этого же пользователя за другой период, то существующий стилевой файл (с вашими возможными правками) не будет переписан и ранее сделанные изменения останутся в силе.
Если вы хотите закрепить свой авторский стиль для всех последующих загрузок других журналов, то внесите их в конфигурацию.
Отчёты
За каждый год и месяц загрузок формируются (и помещаются в соответствующие папки) отчёты о наличии/загрузке и содержании записей/картинок/документов. Отчёты сохраняются в любом случае, даже если записи, картинки и отзывы не грузились.
Подзамочные записи и т.д.
Подзамочные записи не грузятся, так как для этого в скрипт надо добавить модуль авторизации, что на данный момент не сделано. Так же не могут быть сохранены записи помеченные их авторами категорией «для взрослых».
Дополнительная информация
Вики проекта содержит дополнительную информацию по
- Установке программы
- Варианты запуска программы
- Возможных затруднений и вариантов их преодоления
- Как выглядят записи ЖЖ изнутри
- Что указано в отчётах
- Что пользователь может легко подкрутить
Другие программы для этой цели
Есть несколько средств выполняющих загрузку дневников из ЖЖ, см. например один из прежних сравнительных обзоров. Основные варианты:
- ljArchive—наиболее активно продвигаемый. Для работы ему надо сдать пароль от журнала, что должно настораживать. Соответственно чужие журналы сохранить с его помощью не получится.
- LJSDC—закрытый код на Пайтоне, в сети распространяются только исполняемые программы для Windows полученные из него средствами вроде PyInstaller или Py2Exe. Скажем честно: некоторые возможности в нашем коде были нами подсмотрены в работе LJSDC.
Нам не известны альтернативы с открытым кодом.
Авторы
Исходная программа создана j-cth (источник: https://github.com/sferukshtu/livejou).
Впоследствии, код и документация изменялись V.V.Kisil.
Лицензия
Данный проект имеет открытый код и лицензирован согласно условиям описанным в файле LICENSE.
Описание
Скрипт на Питоне для загрузки и сохранения записей с LiveJournal. It is a Python script to download and save locally posts from LiveJournal server. There is no need to authorise or login to server, any public journal can be download for a desired period of time.