Profile

coolwolf0: (Default)
coolwolf0

August 2025

S M T W T F S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Custom Text

Apr. 7th, 2017

...но в связи с последними событиями в ЖЖ, вынужден прервать идиллическую цепочку блого-записей. Итак, новое лицензионное соглашение, запрет на резервное копирование, драконовские правила по отношению к комментариям в блоге, удаление неактивных журналов и многое-многое другое. Популярные сообщества и блоггеры активно навостряют лыжи в дрим, фейсбук и прочие безопасные места. Мне пока что пофиг, однако если кому актуально - поделюсь опытом.

Во-первых, альтернативная платформа. Судя по отзывам, это - дрим, то есть некий дубль старого движка ЖЖ. Сам я пока туда не зеркалюсь, но если кто хочет - создавайте копию и импортируйте (надеюсь, что это ещё можно).

Во-вторых, резервное копирование. Попробовал запустить старый перловый скрипт (ljsm.pl), но у него в процессе скачивания записей возникла какая-то проблема (судя по всему - на стороне сервера, некая защита от роботов). Так что пришлось гуглить и пробовать другие варианты. По первой ссылке скачал опенсорсный экзешник ljArchive, но он как-то болезненно среагировал на один битый объект в ссылках журнала и ... не сделал вообще ничего. Пришлось отправить его в топку. Следующий вариант был написан на Пайтоне и сработал "на ура". Итак, встречайте: ljdump.py - дампит журнал в формат XML, включая комментарии, подзамочные записи и юзерпики. Для работы требуется Пайтон (естественно) и больше ничего. Конфигурируется через файл XML (указать имя пользователя и пароль) или может принимать данные в окне командной строки. Как альтернатива, имеется GUI, написанный на Пайтоне и Tk-библиотеки (потребовалось исправление ошибки интерфейса, после чего всё заработало). Кроме того, к нему прилагается ковертор в один (или более) XML-файл для работы с WordPress.

55-я строка GUI-файла в исправленном варианте:

  gWorkerThread = threading.Thread(None, ljdump.ljdump, args=("http://livejournal.com", username.get(), password.get(), username.get()))

В принципе, надо было весь GUI переписать, начиная с названий кнопок, и заканчивая функционалом.

Expand Cut Tags

No cut tags

Style Credit