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

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

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

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

Сообщества

Настроить S2

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



Пишет kouzdra ([info]kouzdra)
@ 2007-09-24 21:19:00


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

Жестокое обращение с комментариями (1)
Механически насиловать ЖЖ можно разными способами: их можно разбить на 3 категории:



Первый метод всем хорош, кроме двух моментов:
1) там можно делать далеко не все (например комменты фиг прочитаешь и фиг запостишь)
2) запросы там надо выдавать последовательно - при попытке делать это из нескольких тредов он дает отлуп. А это довольно сильно влияет на скорость. Можно пользоваться плоским интерфейсом (что imho проще и удобнее), но для фанатов XML - можно пользоваться и XMLRPC - разницы в общем никакой.

Второй метод всем замечателен, кроме того, что предназначен ровно для одной цели - экспорта дневника. Зато он работает хорошо и очень быстро - экспорт всего моего дневника занимает секунд 20 (у меня 100mbit-ный канал).

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

Как логиниться в ЖЖ



Для последних двух методов нужна предварительная авторизация в ЖЖ. Самый простой способ ее получить - воспользоваться функцией протокола sessiongenerate. Она в ответ отдает куку, которую просто надо совать в заголовок всех последующих запросов к ЖЖ:
Coockie: ljsession=(session-id)

При этом полезно указывать флажки expiration=short (чтобы не плодить сессии) и ipfixed=1 (на всякий случай - секурнее будет)

Жестокое обращение с комментариями



Комменты в ЖЖ можно скачивать, удалять, скринить, морозить и т.п.

Делать это не просто просто, а очень просто: все кроме удаления делается посредством запроса post на URL
http://www.livejournal.com/talkscreen.bml

с параметрами:

confirm="Y"
journal=(user-or-community-name)
mode=(mode) ("freeze", "unfreeze", "screen", "unscreen")
talkid=(thread-no) - как я уже говорил (comment-no)*256 + anum, но вместо anum можно использовать 0 (наверное и любое число)

Удаление коммента делается запросом post на
http://www.livejournal.com/delcomment.bml?journal=(journal-name)&id=(номер треда)
c параметрами:
confirm="Delete Comments"
delthread="0" или "1" (удалять подтред или нет)
spam="0" или "1"
ban="0" или "1"

И будет вам счастье.

Лирическое отступление - для фанатов производительности - можно попытаться воспользоваться функцией групповых операциq над комментамрями к записи - это будет наверняка быстрее, но мне было лень разбираться. Оно и так довольно резво.

Напомню, что нумерация комментов сквозная и строго последовательная. То есть - если Вам навалило кучу дерьма в фиксированный интервал времени - самый простой способ ее снести - выяснить id первого коммента с дерьмом, id последнего и пройтись в цикле от первого ко второму. Единственный недостаток этого метода - будут снесены и "честные комменты", случившиеся в означенный период времени. Зато не просто просто, а очень просто.


(Добавить комментарий)


[info]drgs
2007-09-24 20:32 (ссылка)
dlja poslednego cookie i predvaritelnaja avtorizacija ne objazatelna

(Ответить) (Ветвь дискуссии)


[info]kouzdra
2007-09-24 20:48 (ссылка)
В смысле? Можно сносить комментарии никак не авторизовавшись?

(Ответить) (Уровень выше)