Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2007-09-26 04:57:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:Слава Роботам

Экспорт основого дневника
Тоже все очень просто - сначала надо узнать за какие месяцы собственно надо импортировать (поскольку импорт работает помесячно).
Для этого в протоколе есть фукция "getdaycounts" с параметром "usejournal=(journal-name)"

В ответ она, как и написано в документации, выдает пары ключ/значение вида 2007-08-27 3 (для каждого дня, когда были постинги, количество постов. Соотвественно - собираем список месяцев с ненулевым количеством постов и вперед, на мамонта.


Мамонт добывается запросом POST на url


http://www.livejournal.com/export_do.bml?authas=(journal-name) (если не заботиться о сообществах, authas можно не указывать)

с параметрами:
month=(month)
year=(year)
what=journal
format=xml (или csv - кому как удобнее)
header=1
notranslation = "1" (транслировать кодировку или нет - там есть какие-то нюансы, которые прямо сейчас я откомментировать не возьмусь)
encid = "2" (* UTF-8*)
field_itemid = "1"
field_eventtime= "1"
field_logtime = "1"
field_subject = "1"
field_event = "1"
field_security = "1"
field_allowmask= "1"
field_currents = "1"

В ответ приходит счастье во вполне внятном формате. itemid тут содержит anum - собственно простейший способ их быстро узнать.

Экспорт поста обратно в журнал делается функцией postevent.
Там все просто и понятно, единственная недокументированая деталь - помимо номера свежего поста, отдается и его anum.

Удаление (как и редактирование поста делается функцией editevent (для удаления надо просто послать пустой текст;

PS: В принципе, если делать эти операции постинга или удаления не через клиентский интерфейс, а через пользовательский - практически наверняка можно будет добиться в разы большей скорости (за счет распараллеливания). Надо будет попробовать потом - а то у наших аццких какеров удалялка постов как-то очень уж медленно работает. Их многие даже подозревают в ручной работе на ниве кнопочки delete. Непорядок это ;)