Автоматическая Фильтрация Комментариев В Живом Журнале С Помощью Xml-Rpc

В этой статье я расскажу о том, как с помощью XML-RPC получать информацию о комментариях к вашим публикациям в Живом Журнале и даже немного их удалять.

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

Я не совсем разделяю его взгляды (и я, конечно, не фанат), но ценю свободу слова в Интернете, поэтому потратил некоторое время на изучение возможностей написания комментариев.

Каждая запись в Живом журнале имеет уникальный идентификатор ( Джитемид ), не повторяющиеся в пределах одного журнала.

Это обычный автоматически увеличивающийся идентификатор, но он не отображается непосредственно в URL-адресе публикации.

Вместо этого он используется дитемид , рассчитывается по следующей формуле: дитемид = 256*житемид + анум Здесь анум — случайное число от 0 до 255, указываемое один раз при создании поста и сохраняемое вместе с информацией о нем.

Тот же прием применим и к комментариям, за исключением того, что они не имеют своего анума, а берутся из поста.

Соответствующие параметры комментария называются jtalkid И dtalkid .

Описан протокол XML-RPC применительно к Живому Журналу.

Здесь .

Использование метода получить события , мы можем получить все записи в журнале (я беру последние n записей, для этого нам нужно указать параметры selecttype=lastn и Howmany=n).

Информация о записях, полученных таким образом, содержит itemid(=jitemid) и anum — именно то, что мы хотели получить.

Также передано ответ_количество — количество комментариев к посту.

Кстати, ясно указывая пользовательский журнал , вы можете получить доступные вам записи из любого журнала (в том числе секретного, если вы включены в список друзей).

Перейдем непосредственно к комментариям.

Здесь нас ждет облом.

Судя по описанию протокола, методов работы с комментариями нет. К счастью, чтение исходного кода позволяет нам найти необходимые методы в код обработчик протокола (используйте силу, читайте исходник!).

Оказывается, там много интересного:

my %HANDLERS = ( login => \&login, getfriendgroups => \&getfriendgroups, getfriends => \&getfriends, friendof => \&friendof, checkfriends => \&checkfriends, getdaycounts => \&getdaycounts, postevent => \&postevent, editevent => \&editevent, syncitems => \&syncitems, getevents => \&getevents, editfriends => \&editfriends, editfriendgroups => \&editfriendgroups, consolecommand => \&consolecommand, getchallenge => \&getchallenge, sessiongenerate => \&sessiongenerate, sessionexpire => \&sessionexpire, getusertags => \&getusertags, getfriendspage => \&getfriendspage, getinbox => \&getinbox, sendmessage => \&sendmessage, setmessageread => \&setmessageread, addcomment => \&addcomment, checksession => \&checksession, getrecentcomments => \&getrecentcomments, getcomments => \&getcomments, delcomments => \&delcomments, screencomments => \&screencomments, unscreencomments => \&unscreencomments, freezecomments => \&unfreezecomments, editcomment => \&editcomment, );

Для наших целей они будут полезны получить комментарии И комментарии .

Чтобы получить комментарии к посту с помощью getcomments, мы передаем ему следующее: ditemid (идентификатор нашего поста), журнал (журнал, в котором размещен этот пост, например, Навальный), page (номер страницы комментария).

Если мы не хотим расширять потоки, мы указываемexpand_strategy=mobile_thread. Как и в случае с getevents, мы можем получать любые доступные нам комментарии.

В ответ мы получим массив комментариев первого уровня.

Если на комментарий есть ответы, они прикрепляются к нему в виде массива.

Далее нам останется пройтись по всем страницам комментариев, а на страницах, по всем доступным комментариям, и проверить их.

Я просто использовал стоп-слово, но проверить можно что угодно, вплоть до даты регистрации автора (для каждого понадобится отдельный запрос).

Передаем выбранный dtalkid в метод delcomments (дополнительный рекурсивный параметр позволяет удалить весь тред).

Вуаля! У нас чистый журнал! Исходники PHP-скриптов можно просмотреть по адресу GitHub .

Я благодарен авторам этот И этот за ценную информацию.

Теги: #LiveJournal #XML-RPC #php #фильтрация спама #php

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.