Лингвофорум

Лингвоблоги => Блорум => Тема начата: Python от августа 6, 2011, 02:27

Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 6, 2011, 02:27
Введение кармы на формуме — неплохой повод для создания простенького форумного бота. Карма нужна всем, особенно вам, вашим друзьям и вашим врагам. Но просыпаться каждые три часа и исправлять мировую карму есть возможность не у всех. А значит, если в некоторых темах типа «Считаем до миллиона» боты оставляют сообщения, то автоматизировать процесс кармления сам бог велел.

Итак. Что должен уметь бот?
1) Заходить на форум под вашим аккаунтом.
2) Помнить список плюсуемых и минусуемых.
3) Уметь находить ссылки для изменения кармы нужного пользователя и переходить по ним.
4) Делать все это с заданной периодичностью.

Выбор средств и вариантов реализации:
1) Пользовательский JavaScript, запускаемый непосредственно в браузере. Механизм запуска пользовательских скриптов зависит от браузера. Основное преимущество — отсутствие мороки с логином и кукисами, встроенные средства для работы со структурой html.
2) Бот как самостоятельная программа-клиент. Подойдет любой язык, поддерживающий работу с сокетами и (желательно) имеющий библилтеку для работы с протоколом http с поддержкой печенек. Плюс: при желании, можно сделать очень легковесным. Минус: сложности с залогиниванием (должен либо каким-то образом стащить кукисы из браузера, либо уметь заходить непосредственно по логину-паролю, либо содержать в себе перехватывающий кукисы прокси-сервер, через который пользователь залогинивается).
3) Бот-плагин для ФФ (интересно, на чем их пишут?). Примерно то же, что и (1), но круче (?).

Итак, приступим. Конструктивная критика и фрагменты кода приветствуются. Обсуждение моральных аспектов ботоводства и кармы — в других темах.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 6, 2011, 03:06
Хочу другую тему. Я на аг.ру когда-то давно скриптом кармообмен проводил. Вышел почти на верхушку, а потом сам же сбросил всё спровоцировав один баг (хе-хе). Короче, было весело. Даже интересно, осталось ли у меня что-то с тех времён.

Файрфокс, к примеру, куки не прячет. И Юзер-Эйджент тоже.
Название: Форумный бот: делимся идеями и опытом
Отправлено: RawonaM от августа 6, 2011, 10:16
За ботов, раздающих карму, можно и забанить.
Название: Форумный бот: делимся идеями и опытом
Отправлено: RawonaM от августа 6, 2011, 10:17
А так в принципе могу поделиться опытом. Даже не опытом, а самим кодом могу поделиться.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 6, 2011, 10:48
Плохая новость: ссылки для изменения кармы работают лишь ограниченное время в пределах сессии. Т.е., нельзя просто тупо насобирать ссылок для изменения кармы и периодически делать переход к ним (что было бы проще, чем описанная выше методика), как и нельзя перебросить их из броузера в броузер или задействовать wget (хотя, если разобраться с форматом хранения кукисов... Впрочем, это все равно нас не освобождает от необходимости парсить страницу).
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 6, 2011, 13:06
IE6 позволяет экспортировать кукисы в формат, совместимый с (wiki/en) Wget (http://en.wikipedia.org/wiki/Wget) . Делать это приходится вручную (возможно, где-то зарыта возможность экспортировать куки программно — не проверял; еще есть папка Cookies в Documents and Settings\%username%, но хранимые там файлы несовместимы с wget). Меню Файл->Импорт/экспорт... и далее через мастер.

У wget есть опции для работы с cookies:
       --load-cookies=FILE     load cookies from FILE before session.
       --save-cookies=FILE     save cookies to FILE after session.

Если в качестве файла указать экспортированные из ІЕ куки, то wget сможет зайти на форум под тем же логином, который используется в ІЕ.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 6, 2011, 14:38
Поскольку мне лень делать поиск пользователя по имени и поиск его сообщений, сделаем проще: бот будет в качестве входного параметра получать ссылку на сообщение на форуме, возле которого отображается информация о пользователе, в т.ч. и его карма. Например, чтобы проплюсовать меня, бот получает ссылку http://lingvoforum.net/index.php/topic,37019.msg961761.html#msg961761 (http://lingvoforum.net/index.php/topic,37019.msg961761.html#msg961761)(разумеется, из-под моего аккаунта бот плюсовать меня не сможет — пусть это делают другие). В html-коде страницы эта ссылка идет после кармы, а не до нее. Таким образом, нам нужна последняя пара карма-ссылок перед тэгом с заданной ссылкой.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Bhudh от августа 6, 2011, 16:45

http​://lingvoforum.net/index.php?action=modifykarma;sa=applaud;uid=1408;topic=37019.0;m=961761;a2f51ad90=c4a60611cbc7329aead319c30ffba1f3
Ага, значит, где-то должно запоминаться, за какие посты усера {плю|мину}совали.
Реквестирую статистику!
Название: Форумный бот: делимся идеями и опытом
Отправлено: Вадимий от августа 6, 2011, 16:54
Цитата: RawonaM от августа  6, 2011, 10:16
За ботов, раздающих карму, можно и забанить.
:+1:
Название: Форумный бот: делимся идеями и опытом
Отправлено: ginkgo от августа 6, 2011, 17:02
Цитата: Bhudh от августа  6, 2011, 16:45
Ага, значит, где-то должно запоминаться, за какие посты усера {плю|мину}совали.
Реквестирую статистику!
Вы уверены, что плюминусы расставляют по постам не от фонаря?
Название: Форумный бот: делимся идеями и опытом
Отправлено: Bhudh от августа 6, 2011, 17:53
Цитата: ginkgo от Вы уверены<...>?
Цитата: Bhudh от topic=37019.0;m=961761;
Это нумер поста.
Название: Форумный бот: делимся идеями и опытом
Отправлено: ginkgo от августа 6, 2011, 18:55
Цитата: Bhudh от августа  6, 2011, 17:53
Это нумер поста.
Я понимаю. Но нет гарантии, что плю(мину)сики нажаты не в первом попавшемся посте по(не)любившегося юзера, т.е. что нумер поста имеет значение для оценки именно этого поста.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Bhudh от августа 6, 2011, 18:56
Ну, тут равновероятно...
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 6, 2011, 20:56
Топик и номер сообщения нужны лишь для возврата к нужной точке форума. Только что проверял: если их выбросить их из ссылки, карма изменяется, но отображается какая-то левая страница.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Pinia от августа 6, 2011, 21:02
Цитата: Python от августа  6, 2011, 02:27
Итак. Что должен уметь бот?
1) Заходить на форум под вашим аккаунтом.
2) Помнить список плюсуемых и минусуемых.
3) Уметь находить ссылки для изменения кармы нужного пользователя и переходить по ним.
4) Делать все это с заданной периодичностью.
;up:  :D
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 6, 2011, 21:07
Хм. Кажется, все даже проще, чем я думал: самый интересный параметр с кучей цифр и букв — один и тот же во всех кармассылках в пределах одной сессии. uid берем из профиля плюсуемого/минусуемого пользователя. Все остальное (action=modifykarma;sa=applaud; или ...;sa=smite;) понятно без перевода.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Bhudh от августа 6, 2011, 21:12
Цитата: Python от отображается какая-то левая страница
Эта:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>...</title>
<script type="text/javascript"><!-- // --><![CDATA[
history.go(-1);
// ]]></script>
</head>
<body>&laquo;</body>
</html>
?
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 6, 2011, 21:15
Да.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 8, 2011, 01:35
Итак, скрипт для одновременного плюсования и минусования кармы нескольких пользователей. Написан в виде батника с использованием программ из (wiki/en) UnxUtils (http://en.wikipedia.org/wiki/UnxUtils) (кроме wget более поздней версии, который я взял отсюда (https://github.com/downloads/technomancy/leiningen/leiningen-1.5.2-win.zip)), с некоторыми изменениями может использоваться на юниксах.

@echo off
set initpage=http:^//lingvoforum.net/index.php/topic,36979.150.html
wget --load-cookies=cookies.txt --save-cookies=cookies.txt -O lf.html %initpage%
grep modifykarma<lf.html|head -n1|sed -e s/.*m=[0-9]*;/"set session="/1 -e s/"[^^a-z0-9= ].*"// >setsession.bat
call setsession.bat
sed -e s/^^/http:\/\/lingvoforum.net\/index.php\?action=modifykarma;sa=applaud;uid=/g -e s/$/;%session%/g <applaud.txt >url.tmp
sed -e s/^^/http:\/\/lingvoforum.net\/index.php\?action=modifykarma;sa=smite;uid=/g -e s/$/;%session%/g <smite.txt >>url.tmp
wget --spider --load-cookies=cookies.txt --save-cookies=cookies.txt -i url.tmp

Строка 2:
initpage — любая страница форума, содержащая ссылки на карму. Это может быть любая тема, содержащая сообщения других пользователей.
Строка 3:
cookies.txt — файл cookies, экспортированный из ІЕ. Перед тем, как экспортировать, нужно залогиниться под себя в ІЕ. В Опере экспорт кукис отсутствует, в ФФ, насколько мне известно, для этой операции существует плагин. cookies.txt нужно положить в ту же папку, где находится файл скрипта.
wget загружает страницу в файл lf.html, используя куки
Строка 4:
В lf.html находим строчки с кармассылками (содержащими текст modifykarma) с помощью grep, оставляем лишь первую из них c помощью head, далее с помощью sed вырезаем начало (от начала строки до параметра m=цифры, включительно с «;» после него) и конец (начиная с кавычки и до конца строки), при этом вместо начала подставляем текст set session= и перенаправляем все в файл setsession.bat, который нам нужен, чтобы установить значение переменной.
Строка 5:
Вызываем сгенерированный файл, который устанавливает переменную session
Строки 6 и 7:
Генерация списка ссылок для изменения кармы. Файлы applaud.txt и smite.txt содержат список идентификаторов пользователей (т.е., цифры, которые идут в ссылке на профиль после u=), один идентификатор на строку. Для правильной работы необходимо, чтобы в файле applaud.txt была строка с текстом 1408, в файле smite.txt ее быть не должно ни в коем случае. В генерируемые ссылки подставляются идентификаторы пользователей, а также параметр сессии.
Строка 8:
Запускаем wget в режиме«паука», когда он открывает страницы на сайте, но не сохраняет их. Список ссылок берется из файла, который был сгенерирован предыдущими двумя строками.

Для полного счастья скрипту не хватает лишь часового механизма, запускающего его каждые 3 часа. Бот практически готов :)
Название: Форумный бот: делимся идеями и опытом
Отправлено: Bhudh от августа 8, 2011, 19:50
Цитата: Python от Для правильной работы необходимо, чтобы в файле applaud.txt была строка с текстом 1408, в файле smite.txt ее быть не должно ни в коем случае.
:what:
Это защита от дурака такая?
Название: Форумный бот: делимся идеями и опытом
Отправлено: arseniiv от августа 8, 2011, 19:57
Цитата: Python от августа  8, 2011, 01:35
Для правильной работы необходимо, чтобы в файле applaud.txt была строка с текстом 1408, в файле smite.txt ее быть не должно ни в коем случае.
А у меня со строкой 23802 работает... Каковую вещь аз творю не суразно?
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 8, 2011, 22:03
Таки дочитали до этого места :)
Название: Форумный бот: делимся идеями и опытом
Отправлено: Kern_Nata от августа 8, 2011, 22:14
Цитата: Python от августа  8, 2011, 01:35
Бот практически готов
дасте знати, коли буде альфа версія?

:) таки отключили карму
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 9, 2011, 00:18
Значить, починаємо майструвати флудобота замість кармобота :)
Название: Форумный бот: делимся идеями и опытом
Отправлено: RawonaM от августа 9, 2011, 00:24
Цитата: Python от августа  6, 2011, 02:27
Бот-плагин для ФФ (интересно, на чем их пишут?).
На JS.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 9, 2011, 15:35
Итак, часовой механизм. В WinXP для этого можно использовать планировщик, доступ к которому осуществляется командой schtasks.
Если наш скрипт лежит в файле d:\somedir\karmabot.bat, то для запуска его каждые три часа делаем следующее:

schtasks /create /tn karmabot /tr d:\somedir\karmabot.bat  /sc minute /mo 181 /st 12:34:56

Вместо 180 минут или 3 часов я поставил 181 минуту — на случай, если время между запусками бота окажется на секунду меньше, чем ожидалось, и к нужному времени запрет на изменение кармы не закончится (лучше потерять минуту, чем 3 часа). Стартовое время (параметр /st) может быть любое — от 00:00:00 до 23:59:59, в режиме периодических повторов это не имеет значения. Параметр /tn — идентификатор задания. Может быть любым, при условии, что в других заданиях планировщика этот идентификатор не используется.

Чтобы выключить бота, вызываем команду:

schtasks /delete /tn karmabot
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 10, 2011, 22:53
Поскольку карму прикрыли и кармабот остался без работы, приступим к созданию флудобота. В простейшем случае, флудобот вообще не читает сообщений на форуме, а просто периодически отправляет сообщения (например, «+1», «аффтар жжот», «:)», «таки да рувэ нэ» и пр.) в определенную тему фурума.

Попробую использовать тот же инструментарий, но задача выглядит более сложной, чем предыдущая. Прежде всего, форма отправки сообщений использует метод post, который передается несколько иначе. Нам нужно получить откуда-то сообщение (думаю использовать механизм входящего потока — так будет универсальнее) и направить его на форум, вместе с дополнительными параметрами, взятыми со страницы отправки сообщения. В общем, ничего сложного.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 12, 2011, 05:11
Собственно, в отправке данных методом POST ничего сложного нет — для этого у wget есть следующие опции:
--post-data=string
--post-file=file
Т.е., мы можем либо включить передаваемые данные непосредственно в строку команды, либо передать данные, хранимые в файле. Структура в обоих случаях будет одна и та же:
параметр₁=значение₁&параметр₂=значение₂&...&параметрn=значениеn
Значение представляет собой текст в url-кодировке (т.е., в котором спецсимволы и символы национальных кодировок должны быть побайтно закодированы в формате %ХХ, где ХХ — код из двух шестнадцатеричных цифр). Фактически же, большинство символов могут быть переданы в своем обычном виде (если речь идет о передаче через файл — в командной строке возможны сбои кодировки) — кодировать необходимо лишь % (%25) и & (%26), что упрощает нам задачу.

Данные, получаемые после отправки формы, нам, скорее всего, не понадобятся, и сохранять их нет необходимости. Однако, с опцией --spider метод post почему не работает. Вместо нее можно указать опцию -O nul — в таком варианте wget работает корректно, не замусоривая диск (в системе DOS/Windows имя nul используется для записи данных «в никуда» вместо файла).
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 12, 2011, 09:30
аффтар жжот
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 12, 2011, 09:31
Цитата: Python от августа 12, 2011, 05:11кодировать необходимо лишь % (%25) и & (%26), что упрощает нам задачу.
PHP хороший, там просто через urlencode() надо пропустить.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 12, 2011, 13:42
Цитата: Drundia от августа 12, 2011, 09:30
аффтар жжот
Де саме?
Название: Форумный бот: делимся идеями и опытом
Отправлено: Triton от августа 12, 2011, 13:43
Цитата: Python от августа 10, 2011, 22:53
приступим к созданию флудобота
Чугуния уже изобрели.  :(
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 12, 2011, 14:00
Цитата: Python от августа 12, 2011, 13:42
Цитата: Drundia от августа 12, 2011, 09:30
аффтар жжот
Де саме?
+1
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 12, 2011, 14:17
Цитата: Drundia от августа 12, 2011, 09:31
Цитата: Python от августа 12, 2011, 05:11кодировать необходимо лишь % (%25) и & (%26), что упрощает нам задачу.
PHP хороший, там просто через urlencode() надо пропустить.
В нашем случае, можно и sedом обойтись (просто не хочу сильно раздувать набор инструментов):
sed -e s/%/%25/ -e s/&/%26/
Как-то так. В винде желательно ^ воткнуть перед % и &, чтобы она не приняла их за спецсимволы.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 12, 2011, 16:21
Виндосовский шелл жуткий.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 12, 2011, 16:54
Угу. Зате можна не морочитися з його установкою. Ну і синтаксис простіший, хоч і менш функціональний.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 12, 2011, 17:28
:)
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 12, 2011, 21:30
Если мы загрузим страницу интересной для нас темы Лингвофорума (см. первые строки кармабота) и уберем все лишнее (т.е., возьмем лишь данные формы post2, с помощью которой ЛФ принимает ответы, вырежем весь скрипт и все строки, не содержащие аттрибута name):

sed -n /^<form.*post2/,/^<\/form/p <lf.html|sed /^<script/,/^<\/script/d|grep name

то останется у нас примерно следующее:

      <form action="http://lingvoforum.net/index.php?action=post2" method="post" accept-charset="UTF-8" name="postmodify" id="postmodify" onsubmit="submitonce(this);" style="margin: 0;">
<input type="hidden" name="topic" value="36979" />
<input type="hidden" name="subject" value="95%" />
<input type="hidden" name="icon" value="xx" />
<input type="hidden" name="from_qr" value="1" />
<input type="hidden" name="notify" value="0" />
<input type="hidden" name="not_approved" value="" />
<input type="hidden" name="goback" value="1" />
<input type="hidden" name="num_replies" value="254" />
                    <textarea cols="75" rows="7" style="width: 95%; height: 200px;" name="message" tabindex="1" id="message" onchange="textchange(this)"></textarea><br />
                <input type="submit" name="post" value="Post" onclick="deletecookie(); return submitThisOnce(this);" accesskey="s" tabindex="2" id="d_postsend" />
    <input type="submit" name="preview" value="Preview" onclick="deletecookie(); return submitThisOnce(this);" accesskey="p" tabindex="4" id="d_postprev"/>
<input type="hidden" name="b929604f168" value="4a1bc1f643deb31286996cd26e456e83" />
<input type="hidden" name="seqnum" value="3242694" />

Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 12, 2011, 22:35
таки да рувэ нэ
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 12, 2011, 22:41
Цитата: Drundia от августа 12, 2011, 09:30
аффтар жжот
Цитата: Drundia от августа 12, 2011, 14:00
+1
Цитата: Drundia от августа 12, 2011, 17:28
:)
Цитата: Drundia от августа 12, 2011, 22:35
таки да рувэ нэ
?!
Слава великим роботам!
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 13, 2011, 01:12
Уэркинг эз интендед.

Мда, сообщения для уоннаби-бота закончились :(
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 13, 2011, 03:11
Якщо бот буде в цій ситуації роздруковувати власний сорс-код, то зможе функціонувати як «албанський вірус».
Название: Форумный бот: делимся идеями и опытом
Отправлено: arseniiv от августа 13, 2011, 07:32
Предлагаю ещё сообщения для бота:

вы бот!
:-\
забыли запятую
я согласна!
[img]http://www.kolobok.us/smiles/standart/swoon2.gif[/img]

Только надо, чтобы каптиализация первой буквы соответствовала стилю сообщений пользователя, который ставит себе бота.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 13, 2011, 10:17
:-\
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 13, 2011, 10:18
Цитата: Python от августа 13, 2011, 03:11
Якщо бот буде в цій ситуації роздруковувати власний сорс-код, то зможе функціонувати як «албанський вірус».
Який такий албанський вірус?
Название: Форумный бот: делимся идеями и опытом
Отправлено: arseniiv от августа 13, 2011, 10:22
Мне тоже непонятно, но я почему-то тогда смолчал. :+1:

Кстати, боту надо уметь ставить не только +1, но и :+1:!

Python, на вас надежда ЛФ!
Название: Форумный бот: делимся идеями и опытом
Отправлено: Triton от августа 13, 2011, 10:24
 :eat:
Название: Форумный бот: делимся идеями и опытом
Отправлено: RawonaM от августа 13, 2011, 11:38
Мой бот все равно больше умеет. Будем вести войну ботов!
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 13, 2011, 11:39
Цитата: Drundia от августа 13, 2011, 10:18
Цитата: Python от августа 13, 2011, 03:11
Якщо бот буде в цій ситуації роздруковувати власний сорс-код, то зможе функціонувати як «албанський вірус».
Який такий албанський вірус?
Вірус (наприклад, у вигляді інструкції для користувача), для роботи якого потрібна активна участь людини. Приблизно ось такий:
Цитировать
Я - албанський вірус, але у зв'язку із поганим розвитком технології у моїй країні, на жаль, не можу завдати шкоди вашому комп'ютеру. Будь ласка, знищіть один із важливих файлів на вашому комп'ютері самостійно та перешліть мене іншим.
Заздалегідь вдячний за розуміння та співпрацю.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 13, 2011, 11:53
Error! Gender mismatch in "я согласна!".
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 13, 2011, 11:54
Цитата: Triton от августа 13, 2011, 10:24
:eat:
вы бот!
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 13, 2011, 11:56
Цитата: RawonaM от августа 13, 2011, 11:38
Мой бот все равно больше умеет. Будем вести войну ботов!
(http://www.kolobok.us/smiles/standart/swoon2.gif)
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 13, 2011, 11:57
Цитата: arseniiv от августа 13, 2011, 10:22
Мне тоже непонятно, но я почему-то тогда смолчал. :+1:

Кстати, боту надо уметь ставить не только +1, но и :+1:!

Python, на вас надежда ЛФ!
:+1:
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 13, 2011, 11:58
Убедительная просьба: кто-нибудь (я не в счёт) забудьте запятую.
Название: Форумный бот: делимся идеями и опытом
Отправлено: arseniiv от августа 13, 2011, 20:09
Цитата: Drundia от августа 13, 2011, 11:53
Error! Gender mismatch in "я согласна!".
Если вы ко мне, то подпись. Если вы к боту, то почему бот не может быть согласной? :what:
Название: Форумный бот: делимся идеями и опытом
Отправлено: arseniiv от августа 13, 2011, 20:11
Цитата: Drundia от августа 13, 2011, 11:58
кто-нибудь (я не в счёт) забудьте
забыли запятую
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 13, 2011, 21:56
Цитата: arseniiv от августа 13, 2011, 20:09Если вы ко мне, то подпись. Если вы к боту, то почему бот не может быть согласной? :what:
Бот должен сверять род в репликах с указанным в профиле полом.
Название: Форумный бот: делимся идеями и опытом
Отправлено: arseniiv от августа 13, 2011, 21:59
Цитата: Drundia от августа 13, 2011, 21:56
Бот должен сверять род в репликах с указанным в профиле полом.
Да просто хозяин реплики подредактирует. Но я за указанный собой вариант, не взирающий на пол.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 14, 2011, 01:27
СЛАВА ВЕЛИКИМ РОБОТАМ!!!
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 14, 2011, 01:50
lfpost.bat:
@echo off
set initpage=%*
set action=http://lingvoforum.net/index.php?action=post2
wget --load-cookies=cookies.txt --save-cookies=cookies.txt -O lf.html %initpage%

((sed -n "/<form.*post2/,/<\/form/p" lf.html|^^^
sed "/<script/,/<\/script/d"|grep name|grep input|^^^
sed -n "s/.*name=.\([^\"\"]*\).*value=.\([^\"\"]*\).*$/\1=\2/p"|grep -v "^preview"
echo message=|tr -d \n\r\040)|^^^
sed -e "s/%%/%%25/g" -e "s/\&/%%26/g"|tr \n "&"|tr -d \r
cat|sed -e "s/%%/%%25/g" -e "s/\&/%%26/g" -e "s/+/%%2B/g")|cat>pdata.txt
wget --load-cookies=cookies.txt --save-cookies=cookies.txt --post-file pdata.txt %action% -O lf.html

Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 14, 2011, 02:05
lfpost — скрипт для отправки сообщений на ЛФ. Работает как потоковый фильтр с одним параметром — адресом темы, в которую нужно запостить сообщение. Например, чтобы отправить в эту тему текст из файла FILENAME.TXT, нужно ввести команду:
lfpost  http:^//lingvoforum.net/index.php/topic,37019.msg969829.html<FILENAME.TXT
Пример 2: отправка текста, генерируемого программой GENERATOR:
GENERATOR|lfpost http:^//lingvoforum.net/index.php/topic,37019.msg969829.html
Еще пример:
echo :+1:|lfpost http:^//lingvoforum.net/index.php/topic,37019.msg969829.html

Это еще не бот, а лишь обязательный элемент бота, к которому можно присоединить произвольный генератор сообщений.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 14, 2011, 02:13
:+1:
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 14, 2011, 04:42
забыли запятую
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 14, 2011, 04:42
Я начинаю вызывать у себя ассоциации с Эллочкой-людоедкой...
Название: Форумный бот: делимся идеями и опытом
Отправлено: Triton от августа 14, 2011, 07:09
:+1:
Название: Форумный бот: делимся идеями и опытом
Отправлено: arseniiv от августа 14, 2011, 13:40
Цитата: Drundia от августа 14, 2011, 04:42
Я начинаю вызывать у себя ассоциации с Эллочкой-людоедкой...
я согласна!
Название: Форумный бот: делимся идеями и опытом
Отправлено: arseniiv от августа 14, 2011, 13:40
:-\
Название: Форумный бот: делимся идеями и опытом
Отправлено: arseniiv от августа 14, 2011, 13:40
Цитата: Triton от августа 14, 2011, 07:09
:+1:
вы бот!
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 15, 2011, 03:45
Цитата: arseniiv от августа 14, 2011, 13:40я согласна!
Parse error.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 15, 2011, 09:42
fortune.bat:@echo off
set cnt=0
for /F %%i in (%1) do set/a cnt=cnt + 1
set/a cnt=%random% %% %cnt% + 1
sed -n %cnt%p %1

floodbot1.bat:fortune messages.txt|lfpost http:^//lingvoforum.net/index.php/topic,35148.new.html
Запуск:schtasks /create /tn floodbot1  /tr D:\Python\bat\bot\floodbot1.bat  /sc minute /mo 71 /st 04:05:06
Тест: Абыр (http://lingvoforum.net/index.php/topic,35148.new.html)
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 15, 2011, 15:45
И шо там за возможные месседжи?
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 15, 2011, 16:01
Цитата: Drundia от августа 15, 2011, 15:45
И шо там за возможные месседжи?
Читайте мої повідомлення (зроблені ботом) в темі з тестом. Повідомлення можна задавати довільно файлом messages.txt: один рядок — одне повідомлення.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 15, 2011, 16:11
Нам треба повний перелік, наш бот власної фантазії не має.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Вадимий от августа 15, 2011, 16:22
Простите тупость, где всё это исполнять или компилировать или как ещё приводить в действие?..
Название: Форумный бот: делимся идеями и опытом
Отправлено: spalis от августа 15, 2011, 17:09
Цитата: Python от августа 15, 2011, 16:01
Цитата: Drundia от августа 15, 2011, 15:45
И шо там за возможные месседжи?
Читайте мої повідомлення (зроблені ботом) в темі з тестом. Повідомлення можна задавати довільно файлом messages.txt: один рядок — одне повідомлення.
Питон Вы на каком пишете?
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 15, 2011, 17:12
Цитата: Вадимий от августа 15, 2011, 16:22
Простите тупость, где всё это исполнять или компилировать или как ещё приводить в действие?..
Это пакетные файлы (т.е. сценарии для командной строки Windows/MS-DOS). Сохраняются в файлах с расширением .bat (отсюда сленговое название «батник»), запускаются двойным щелчком мыши, редактируются правой кнопкой мыши -> изменить (либо можно создать текстовый файл и поменять ему расширение). Однострочные команды можно либо тоже поместить в отдельные батники, либо в окне командной строки перейти в папку, где это все будет лежать, и непосредственно в нем ввести их и запустить.

Еще нужно установить пакет программ UnxUtils (http://sourceforge.net/projects/unxutils/files/unxutils/current/UnxUtils.zip/download) (т.е., их нужно скачать, распаковать и указать путь к ним в переменной path). Например, если весь этот пакет распаковать на диск следующим образом:
C:\
  unxutils\
    usr\
      local\
        wbin\
          agrep.exe
          ansi2knr.exe
          basename.exe
          .....
          sed.exe
          .....
..... и т.д.,
то далее нужно сделать следующее:
меню пуск->настройка->панель управления->система->дополнительно->переменные среды
Выбираем в списке path, дабл-кликом открываем диалог для ее изменения, дописываем в конце:
;c:\unxutils\usr\local\wbin
Жмем ОК

Кроме того, нам нужен wget более новой версии, который я нашел в установочном пакете программы lein (https://github.com/downloads/technomancy/leiningen/leiningen-1.5.2-win.zip) (откуда его взяли там, мне так и не удалось узнать). Сам lein нам не нужен, а вот  wget.exe из архива достаем и записываем вместо того, который лежит в unxutils. Скорее всего, менять уже ничего не нужно - wget 1.8 поддеррживает нужные опции, хотя раньше в unxutils лежал старый wget 1.5, не поддерживающий кукис. Вместе с lein лежит wget 1.11 — на всякий случай можно поставить его, но необязательно.

Еще нужно залогиниться на ЛФ в интернет эксплорере и экспортировать из него куки в файл cookies.txt ( Форумный бот: делимся идеями и опытом (http://lingvoforum.net/index.php/topic,37019.msg961888.html#msg961888)). Положить его в ту же папку, где будут лежать наши батники.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 15, 2011, 17:14
Цитата: spalis от августа 15, 2011, 17:09
Цитата: Python от августа 15, 2011, 16:01
Цитата: Drundia от августа 15, 2011, 15:45
И шо там за возможные месседжи?
Читайте мої повідомлення (зроблені ботом) в темі з тестом. Повідомлення можна задавати довільно файлом messages.txt: один рядок — одне повідомлення.
Питон Вы на каком пишете?
Як хочу, так і пишу. Кому не наравиться — напишіть краще.
Название: Форумный бот: делимся идеями и опытом
Отправлено: spalis от августа 15, 2011, 17:25
Цитата: Python от августа 15, 2011, 17:14
Цитата: spalis от августа 15, 2011, 17:09
Цитата: Python от августа 15, 2011, 16:01
Цитата: Drundia от августа 15, 2011, 15:45
И шо там за возможные месседжи?
Читайте мої повідомлення (зроблені ботом) в темі з тестом. Повідомлення можна задавати довільно файлом messages.txt: один рядок — одне повідомлення.
Питон Вы на каком пишете?
Як хочу, так і пишу. Кому не наравиться — напишіть краще.
Вы кацап?
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 15, 2011, 17:30
Цитата: spalis от августа 15, 2011, 17:25
Вы кацап?
Ні.
Название: Форумный бот: делимся идеями и опытом
Отправлено: spalis от августа 15, 2011, 17:56
а навошта лабуду пішыце?
Название: Форумный бот: делимся идеями и опытом
Отправлено: Drundia от августа 15, 2011, 18:36
Цитата: spalis от августа 15, 2011, 17:09Питон Вы на каком пишете?
Ми пишем на українсько-російськім суржику в разних пропорціях, просю звинить нас за це.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Python от августа 16, 2011, 01:56
Цитата: Python от августа 15, 2011, 17:12
Кроме того, нам нужен wget более новой версии, который я нашел в установочном пакете программы lein (https://github.com/downloads/technomancy/leiningen/leiningen-1.5.2-win.zip) (откуда его взяли там, мне так и не удалось узнать). Сам lein нам не нужен, а вот  wget.exe из архива достаем и записываем вместо того, который лежит в unxutils. Скорее всего, менять уже ничего не нужно - wget 1.8 поддеррживает нужные опции, хотя раньше в unxutils лежал старый wget 1.5, не поддерживающий кукис. Вместе с lein лежит wget 1.11 — на всякий случай можно поставить его, но необязательно.
Посмотрел внимательнее — все-таки нужно. Wget 1.8 не поддерживает метод post, без чего невозможно отправить сообщение на форум. Поэтому загружаем https://github.com/downloads/technomancy/leiningen/leiningen-1.5.2-win.zip и ставим wget из него вместо старого.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Вадимий от августа 16, 2011, 06:07
Спасибо! буду пытать ся.
Название: Форумный бот: делимся идеями и опытом
Отправлено: Bhudh от августа 16, 2011, 06:08
Ся-то за чем?