SiteSputnik-Bot: Боты в программе СайтСпутник
Разработка и применение Бот-программ,
Боты (Bots) как расширение программы СайтСпутник
Автор Алексей Мыльников
Дата выхода публикации - 16.05.2019г.
СайтСпутник, Спутник Сайт) - программа поиска информации на нескольких языках, многоязычный сбор информации,скачать
SiteSputnik (Site Sputnik) - бот-программная система сбора информации, мониторинг СМИ, на нескольких ботах
Сайт Спутник. Site Sputnik. Мониторинг, программный комплекс бот, упоминание роботов
Спутник. Система. Боты
Спутник. Sputnik. Мониторинг, боты: СМИ, соцсети.
Назначение ботов в программе СайтСпутник
Технология их разработки и применения на "пальцах"
О назначении ботов - одним предложением
Реализация практически любых новых функкциональных возможностей программы СайтСпутник -
самостоятельно, независимо от разработчика программы.
Доступно в программе SiteSputnik,
начиная с версии 9.7.1 от 16.05.2019.
Выражаю благодарность Дмитрию "MOS" за конструктивный диалог, состоявшийся в процессе разработки данной функции программы.
Пример разработки новой функции своими силами
В СайтСпутнике, например, нет следующей функции, которая в некоторых случаях может быть весьма полезной:
отправка новых ссылок, найденных при очередном выполнении Проекта, в заданную папку.
В качестве демонстрационного Проекта возьмем следующий простой Проект:
наблюдение за появлением новых ссылок на трёх первых страницах выдачи Яндекса по запросу: Дмитрий Медведев.
Внешний вид этого Проекта представлен на картинке ниже:
Технология разработки новой функции СайтСпутника своими силами такова.
Создаём текст Бота (пояснения к нему смотрите ниже) и
помещаем его в пакетный bat-файл с именем, например: "Файлы\Medvedev&Yandex.bat":
Пояснение:
1-я строка - это вспомогательная команда для работы с русской кодировкой в bat-файле (это особенность синтаксиса bat-файлов; так надо).
2-я строка - это команда Windows, создающая на диске "C:\" папку "NewsMedvedev" (если папка существует, то эту команду можно опустить).
3-я строка - это команда Windows, копирующая файл "{folder}\Экспорт-новые-txt.txt" в папку "C:\NewsMedvedev".
Параметр {folder} по умолчанию содержит полное имя папки с результатами работы программы СайтСпутник.
Наглядный пример такой папки приведен на картинке ниже:
В коричневую рамочку на картинке обведён файл "Экспорт-новые-txt.txt".
Он как раз и содержит список новых ссылок, которые ни разу не были найдены ранее при выполнении данного Проекта.
Именно его в третьей строке Бота прописано скопировать в папку "C:\NewsMedvedev".
(Все документы, создаваемые СайтСпутником, а их более 60 видов, перечислены на ссылке
выдача СайтСпутника.)
Теперь осталось только вызвать из Проекта этот Бот в тот момент, когда список с новыми ссылками сформирован.
Для этого:
выбираем Бот из меню (большая красная стрелочка на картинке ниже),
прописываем ему фактические параметры, если они есть (синяя стрелочка),
прописываем ему "Стартовую площадку" - "После открытия всех Источников" (зелёная стрелочка).
"Стартовая площадка" определяет как раз тот момент, когда Бот следует выполнить.
Полный текст Проекта состоит из двух строк и имеет следующий вид:
Не набирайте вручную с клавиатуры имена ботов, названия стартовых площадок, параметры, получающие значения по умолчанию, -
используйте для этого меню. Руками требуется набирать только фактические значения параметров, если они есть.
Усовершенствуем Бот.
Если Бот будет выглядеть так:
chcp 1251>nul
mkdir "{AnyDir}"
copy "{folder}\Экспорт-новые-txt.txt" "{AnyDir}"
(мы сами ввели в него произвольный параметр, названный {AnyDir} ),
а обращение к нему в Проекте, например, так:
то мы может применить разные имена папок в разных Проектах, указывая их при обращении к Боту.
Важно
Это был самый простой Бот, на примере которого продемонстрирована технология реализации новой функции СайтСпутника своими силами.
В данном крайнем случае обошлось без программирования - достаточно было команд Windows.
О назначении ботов - одним абзацем
Расширение функциональных возможностей СайтСпутника за счет применения:
•• уже существующего программного обеспечения широкого профиля,
•• новых программ, разработанных специально для СайтСпутника.
Привлечение к разработке новых функций СайтСпутника (к разработке ботов):
•• сторонних программистов,
•• продвинутых пользователей.
Обеспечение их независимости от разработчика СайтСпутника.
Доступность применения ботов, поддерживающих новые функции, обычным Пользователям.
Пример новой функции c применением программирования
В СайтСпутнике, например, нет следующей функции:
- определение новостей и сообщений, попавших хотя бы в одну Рубрику,
- оформление из них отдельного файла (полнотекстовой новостной ленты),
- отправка этой новостной ленты в заданную локальную папку.
Среди команд Windows и среди множества других готовых программ нет программы, которая умеет делать это.
"Берём" любой язык программирования, пишем такую программу сами и используем её в Боте.
В отличии от первого примера - это другой крайний случай, самый сложный, но и самый мощный - запрограммировать можно практически любую обработку информации.
Исходный текст программы, реализующей рассматриваемую новую функцию, приведен ниже.
При необходимости сделаю к нему пояснения персонально или на
форуме.
program Bot_NewsFromRubricsOnly; // Автор Мыльников Алексей Борисович: 1a@sitesputnik.ru, +7(8442)73-71-23,+7(905)392-97-92
// Назначение: Бот СайтСпутника - принимает в первом параметре P1 папку с результатами работы СайтСпутника {folder}, берет в ней файл с Чистым потоком, а именно: "Чистый поток.htm",
uses // считывает его, оставляет только Новости попавшие в Рубрики и сохраняет их в файле ЧП.htm, размещенном в парке, указнной во втором параметре
Windows, SysUtils, // Язык программирования Delphi XE2 - чисто для лучшего понимания (практически это язык Паскаль).
StrUtils; // Бот применяется со Стартовой площадки: "После формирования всех рубрик и потоков"
var i,j : integer;
S, Sw, fn: string;
NS : TextFile;
begin
fn:=ParamStr(1)+'\Чистый поток.htm'; if(not(FileExists(fn)))then EXIT; // Если не существует файла "Чистый поток", то на этом обработка заканчивается
S:=''; // В переменную S считаю
AssignFile(NS,fn,CP_UTF8); // весь контент файла с Чистым потоком
try Reset(NS); while(not(eof(NS)))do begin readln(NS,Sw); S:=S+Sw+#13#10; end; except end;
CloseFile(NS); // и закрою файл
//============== Собственно работа по контенту Чистого потока ================//
i:=0; Sw:=''; fn:='';
repeat i:=PosEx('',S,i)+6; // j установил на окончание Новости, попавшей хотя бы в одну Рубрику
if(Sw='')then begin // Это первая Новость, попавшая хоть в одну Рубрику, следовательно, создам Результирующий файл, в который буду выводить Новости
fn:=ParamStr(2); if(fn='')then fn:='C:'; ForceDirectories(fn); // в fn - имя папки, в которой сформирую файл ЧП.htm, если этой папки нет, то создам её
fn:=fn+'\ЧП.htm'; AssignFile(NS,fn,CP_UTF8); Rewrite(NS); // Создаю файл ЧП.htm в кодировке Юникод и в следующм операторе выведу в него стандартный заголовок
Writeln(NS,'
Новости, попавшие в Рубрики
'+DateTimeToStr(Now)+'
');// Формирование html-файла стандартное - заголовок
end;
Sw:=copy(S,i,j-i+1); // Собственно, выкусил очередную Новость, попавшую в Рубрику
Writeln(NS,Sw); // и вывожу её в файл
until(false);
if(fn='')then EXIT; // В Рубрики ничего не попало, файл результирующий не создавался, выхожу из бота
writeln(NS,'');// Формирование html-файла стандартное - окончание
CloseFile(NS); // Закрываю Результирующий файл ЧП.htm
//============== Собственно работа окончена ==================================//
end.
Программа написана на языке программирования Delphi - это "современный Pascal", который часто используется при изучении основ программирования.
Транслируем программу и exe-модуль помещаем, например, в папку "Exe\Bots" под именем "Bot_NewsFromRubricsOnly.exe".
Обращение к этому боту (непосредственно к написанной нами программе) из Проекта может быть, например, таким:
Пояснение:
Параметр {folder} - это папка с результами работы СайтСпутника, в ней есть файл "Чистый поток.htm" (обведен синей рамочкой на одной из картинок выше),
Бот принимает этот файл через первый параметр - смотрите в исходном тексте программы 10-ую строку: "fn:=ParamStr(1)+'\Чистый поток.htm';".
Параметр {DeskTop}\Потоки - это папка "Потоки", размещённая на Рабочем столе Вашего компьютера, которую Бот использует для отправки в неё результата своей работы.
Стартовая площадка "После формирования всех рубрик и потоков" означает, что вызов бота осуществится в SiteSputnik News после выполнения соответствующих действий.
Напоминание: используйте меню при прописке Ботов в Проектах.
Дополнительные замечания:
по описанной выше технологии к СайтСпутнику можно "прикрутить" самые разнообразные программы,
важно, чтобы к таким программам можно было обратиться из командной строки,
разработка ботов доступна программистам или продвинутым Пользователям, а не только разработчику СайтСпутника,
применение Ботов доступно обычным Пользователям.
О ботах СайтСпутника - общие положения
Основные понятия:
При выполнении Проектов программа Сайт Спутник может запускать бот-программы.
Бот-программы могут быть запущены с нескольких стартовых площадок (см. ниже) СайтСпутника.
Они (боты) могут быть запущены как с ожиданием окончания их работы, так и без него.
Ботам может быть передана информация, добытая СайтСпутником.
Они (Боты) могут переработать информацию и передать её "обратно" в программу.
Боты могут поставить "свою" информацию СайтСпутнику.
Бот-программа:
Боты могут быть созданы как:
•• bat-файлы-с-параметрами,
•• cmd-файлы-с-параметрами,
•• exe-файлы-с-параметрами.
В качестве программ, входящих в состав Бота, может быть использован любой исполняемый код, например:
•• любые команды операционной системы,
•• любые готовые программы, запускаемые из командной строки,
•• программы на любом языке программирования, разработанные независимыми программистами для СайтСпутника.
Никакие API со стороны программы СайтСпутник не используются.
Обмен данными между Ботами и СайтСпутником осуществляется через параметры ботов.
Параметры ботов по умолчанию:
С разных стартовых площадок СайтСпутника, ботам доступны разные параметры.
Перечень основных параметров следующий.
•• URL - адрес Источника или целевой ссылки, выбираемой из Источника (в зависимости от стартовой площадки).
•• IN - полное имя файла, в котором СайтСпутник сохранил контент Источника, или целевой ссылки из Источника.
•• OUT - по умолчанию получает то же значение что и параметр IN, но используется, как правило,
для удобства, для явного указания имени стороннего файла, хотя это можно сделать и через произвольный параметр (см. ниже).
•• Folder - полное имя папки, в которую СайтСпутник складывает добытые результаты (промежуточные и конечные).
Это очень важный параметр. Из него Бот может получить, а затем обработать и вернуть в СайтСпутник:
•• Списки адресов или сниппетов всех целевых ссылок, полученных при выполнении Проекта.
•• Списки адресов или сниппетов только новых целевых ссылок, только новых сайтов, только новых доменов 3-го уровня.
•• Статистические данные по источникам, рубрикам, доменам.
•• Содержание Рубрик, создаваемых СайтСпутником.
•• Практически любой из 60 документов из
выдачи СайтСпутника,
•• Alias - полное имя текущего ящика (папки, в которой выполняется Проект).
•• Box - последнее имя из полного имени текущего ящика.
•• Number - порядковый номер Проекта, выполняемого в текущем ящике.
•• DeskTop - полное имя папки Рабочего стола компьютера.
•• MainDir - полное имя корневой папки программы СайтСпутник.
•• Date - текущая дата.
•• Time - текущее время.
•• Wait=Yes - применяется, если нужно дождаться завершения работы бота, иначе явно примените Wait=No.
•• Quote=Yes - обеспечивает автоматическую расстановку двойных кавычек для фактических значений параметров.
Если Вы собираетесь расставить кавычки сами, то явно примените Quote=No.
•• Произвольный параметр - одно произвольное слово, взятое в фигурные скобки, - по умолчанию получает пустое значение.
Один и тот же параметр в тексте Бота может быть применен несколько раз.
Параметры по умолчанию могут быть применены при назначении фактических значений параметров,
(смотрите, например, ниже в демонстрационном примере Проекта: Folder={IN} ).
Как уже сообщалось выше: Боты могут изменить полученную через параметры информацию и вернуть её "обратно" в СайтСпутник.
Фактические значения параметров:
Параметрам ботов можно явно присвоить необходимые фактические (конкретные) значения, например:
Стартовые площадки служат для запуска размещенных на них Ботов.
В настоящей реализации СайтСпутника их девять.
Боты могут быть выполнены:
В самом начале работы Проекта,
Перед открытием страницы Источника,
После открытия страницы Источника,
После открытия всех Источников, (эти четыре площадки доступны в SiteSputnik Pro)
Перед рубрикацией и анализом конкретной ссылки,
Во время рубрикации и анализа конкретной ссылки-GoBot:,
а именно, в моменты выполнения операции:
GoBOT:<имя и параметры Бот-программы>,
После рубрикации и анализа конкретной ссылки,
После формирования конкретной рубрики,
После формирования всех рубрик и потоков (в самом конце работы Проекта в SiteSputnik News).
Десятая площадка находится за рамками выполнения Проекта (смотрите на картинке ниже по красной стрелочке):
Эта площадка служит для ручного запуска Ботов.
Важно:
Выполняя Проект, СайтСпутник последовательно проходит через все страртовые площадки и проверяет их содержание.
Ещё раз, сделав небольшие добавления, повторим материал, приведённый выше в данной публикации.
Создание Проектов, использующих Боты
Боты, стартующие из выполняющегося Проекта, выбираются и прописываются в нём из меню
(смотрите по красной стрелочке на картинке ниже).
Далее указываются фактические значения параметров Бота: те, которые отличаются от принимаемых по умолчанию
(смотрите по синей стрелочке).
Затем указывается стартовая площадка, с которой начинает работу Бот
(смотрите по зелёной стрелочке).
Для ботов, задействованных в операторе GoBOT:, стартовая площадка не указывается.
Эти боты прописываются в Правилах попадания в Рубрики и могут быть многократно выполнены в
процессе Рубрикации (в процессе анализа конкретных целевых ссылок)
и повлиять на её результат, в частности,
можно полностью запрограммировать свои практически любые условия попадания новости в Рубрику.
Боты могут быть прописаны сразу на нескольких площадках.
На одной площадке можно прописать несколько ботов - каждый на отдельной строке.
В Боте можно вызвать другой Бот.
Боты, размещенные на конкретной стартовой площадке, запускаются в момент её достижения СайтСпутником.
Боты, запущенные с параметром Wait=Yes, выполняются последовательно.
По умолчанию тексты Ботов помещаются в папку Файлы, в приведенном ниже примере они выбраны именно из неё, но размещены Боты могут быть в любой папке.
Пример Проекта с несколькими запусками одного и того же Бота
Берём следующий текст демонстрационного Бота:
chcp 1251>nul
mkdir {desktop}\{out}
copy "{folder}{БэкСлэш}{ИмяФайла}" {desktop}\{out}
Программы, задействованные в нём, принадлежат к командам Windows. Их две:
• mkdir - создает папку на диске, если она не существует,
• copy - копирует файл в указанное место (в папку),
• chcp 1251>nul - вспомогательная команда для работы с русской кодировкой.
Формальных параметров у Бота пять: {desktop}, {out}, {folder}, {БэкСлэш} и {ИмяФайла}, два из которых используются дважды.
Параметры {БэкСлэш} и {ИмяФайла} относятся к произвольному виду - "придуманы" нами.
Текст Бота размещаем в СайтСпутнике в папке Файлы в файле Скопировать на Рабочий стол.bat.
Используя три разные стартовые площадки и три разных набора фактических параметров,
трижды задействуем этот бот в Проекте:
Медведев и Единая Россия || News=2
[Скопировать на Рабочий стол.bat] out=Для ссылок ИмяФайла=Экспорт-новые-txt.txt БэкСлэш=\ ^^После открытия всех Источников
[Скопировать на Рабочий стол.bat] out=Для Рубрик ИмяФайла="Единая Россия.htm" БэкСлэш=\ ^^После формирования всех рубрик и потоков
Рубрика://Партии/Единая Россия
(Единая /1 Pоссия | 'ЕР' | 'ЕДРО') (Дмитрий /2 Медведев) GoBOT:Скопировать на Рабочий стол.Bat out=Для GOBOT Folder={IN}
Цвет используется исключительно для более наглядного восприятия текста Проекта.
Пояснения к тексту Проекта:
В первой строке Проекта задан поиск в новостях по запросу: Медведев и Единая Россия.
Вo второй его строке прописан старт Бота с площадки "После открытия всех Источников", то есть, в тот момент, когда СайтСпутник сформирует всю выдачу, создаваемую на этапе поиска и сбора ссылок и сниппетов.
• Явно заданы фактические значения трех параметров:
• out=Для ссылок
• ИмяФайла=Экспорт-новые-txt.txt (откуда взялось это "коричневое" имя поясняется ниже)
• БэкСлэш=\
• Два параметра получают фактические значения по умолчанию:
• DeskTop=<имя папки Рабочего стола Компьютера> (допустим это "C:\Users\AB\Desktop")
• Folder=<имя папки с результатами работы СайтСпутника>(допустим это "D:\AB\FileForFiles\Internet Files\Боты")
Скрин содержания папки с результатами работы СайтСпутника повторно приведен на картинке ниже (обратите внимание на коричневую стрелочку, показывающую на файл Экспорт-новые-txt.txt,
содержащий список адресов только новых ссылок, найденных при текущем выполнении Проекта относительно всех предыдущих его выполнений).
Это демонстрация того, как Боту передаётся добываемая СайтСпутником информация:
Заменив формальные параметры на их фактические значения (это сделает СайтСпутник, достигнув данной стартовой площадки), получим Бот:
chcp 1251>nul
mkdir "C:\Users\AB\Desktop\Для ссылок"
copy "D:\AB\FileForFiles\Internet Files\Боты\Экспорт-новые-txt.txt" "C:\Users\AB\Desktop\Для ссылок"
Этот бот создаст папку "C:\Users\AB\Desktop\Для ссылок" при помощи команды mkdir и
скопирует в неё файл "D:\AB\FileForFiles\Internet Files\Боты\Экспорт-новые-txt.txt" при помощи команды copy.
В принципе, "Отправка в папку списка адресов только новых ссылок", - это простое программное расширение функциональных возможностей СайтСпутника, которое может быть сделано без участия разработчика и независимо от него.
На месте mkdir и copy могут стоять другие готовые программы или программы, написанные независимыми программистами.
Бот
Из третьей строки Проекта сделает аналогичную работу, но с другими файлами и папками и в другой момент времени.
Он отправит содержание Рубрики "Единая Россия" в папку "Для Рубрик", размещённую на Рабочем столе, и сделает это "После формирования всех рубрик и потоков".
Отличие этого применения бота от первого применения: в значениях фактических параметров и в стартовой площадке.
В пятой строке Проекта прописан многократный вызов этого же бота "Во время рубрикации и анализа ссылок (GoBOT:)".
С этой стартовой площадки Бот может быть вызван несколько раз.
Он вызывается для тех ссылок, содержание которых удовлетворяет "логическому правилу", в котором участвует Бот.
В нашем случае это содержание тех ссылок, в которых одновременно упомянута и "Единая Россия", и "Дмитрий Медведев".
Бот скопирует файлы с этим содержанием ссылок в папку "Для GOBOT", размещённую на Рабочем столе.
Этот Бот размещён в правиле динамической Рубрики, имя которой набрано в
четвертой строке Проекта.
Практический совет:
Открыть папку, содержащую основные результаты работы программы СайтСпутник, можно так:
- Встаньте на какую-нибудь строку нижней таблички в окне СайтСпутника,
- нажмите на правую кнопку мышки,
- выберите пункт "Открыть папку файла".
Скрин такой папки приведен выше.
В принципе,
с информацией, попадающей в выдачу СайтСпутника, Вы можете сделать всё, что сумеете сами, или что умеет сделать с ней стороннее программное обеспечение.