Wazup 1.0
О модуле :
Wazup - модуль, который извлекает из Web-страниц по заданному шаблону строчки новостей, названия программ и т.д., а потом выводит всё это в текстовый контейнер (модуль Label, xLabel или xLabelLight) или в файл.
Системные требования :
Никаких дополнительных требований к программному и аппаратному обеспечению модуль не предъявляет. Я надеюсь, во всяком случае :)
Использование :
Каждый запрос web-страницы должен быть озаглавлен следующим образом:
*Wazup [имя]
Настройки запроса имеют вид
[имя][настройка] [значение]
например:
*Wazup MySiteNews
MySiteNewsURL http://www.mysite.ru/index.html
Пример файла настройки с использованием модуля xLabelLight 2.8.3:
;===============================================
; Web-page monitoring (Wazup v1.0)
;-----------------------------------------------
*Wazup LSAtRu
; Переменная NewsItem описывает шаблон, по которому выделяется отдельная новость на сайте
; это позволит избежать простого копирования
NewsItem "news_top{%quote}>{%}</td>{*}right{%quote}>{%}</div></td>{*}news_post{%quote}>{%}<div align={%quote}right"
LSAtRuURL http://www.litestep.bip.ru/
LSAtRuUpdateInterval 10
LSAtRuInputString "$NewsItem${*}$NewsItem${*}$NewsItem${*}$NewsItem${*}$NewsItem$"
LSAtRuOutputString LiteStep@Russia News\n\n{%1}\n{%2}\n{%3}\n\n{%4}\n{%5}\n{%6}\n\n{%7}\n{%8}\n{%9}\n\n{%10}\n{%11}\n{%12}\n\n{%13}\n{%14}\n{%15}\n\n
LSAtRuEnabled true
LSAtRuOnChecked !Execute [!WazupSetUpdateInterval LSAtRu 900][!LabelShow NewsLabel]
LSAtRuOnFailure !Execute [!WazupSetUpdateInterval LSAtRu 10]
LSAtRuOnUpdated !alert "Someting new!"
LSAtRuLocalFile "$MiscDir$lsnews.html"
LSAtRuDisplayOn NewsLabel
;======================
*Label NewsLabel
;----------------------
NewsLabelX 100
NewsLabelY 100
NewsLabelWidth 300
NewsLabelHeight 600
NewsLabelText "Here would be the dragons"
NewsLabelImage lsnews.png
NewsLabelImageMode stretch
NewsLabelImageTopEdge 3
NewsLabelImageBottomEdge 3
NewsLabelLeftBorder 5
NewsLabelRightBorder 5
NewsLabelTopBorder 10
NewsLabelBottomBorder 5
NewsLabelAutoLineBreak true
NewsLabelAlign left
NewsLabelVertAlign top
NewsLabelStartHidden
NewsLabelScroll vertical-up
Настройка :
Все настройки обработки web-страницы начинаются с имени запроса, указанного в строке
*Wazup
Параметры запроса:
(имя запроса)URL [web-страница]
Путь к web-странице. Локальный файл в качестве URL указывать НЕЛЬЗЯ!
По умолчанию : http://www.shellfront.org/
(имя запроса)LocalFile [файл]
Если указано, то этот файл будет использоваться для отслеживания изменений web-страницы (то есть появились ли новости с момента последнего запроса). В противном случае будет использоваться временный файл, и настройка OnUpdated будет недоступна.
По умолчанию : пустая строка, слежение отключено
(имя запроса)Enabled [false/true]
Если настройка включена, запросы будут производиться автоматически. В противном случае требуется использовать !команду !WazupCheck самостоятельно
По умолчанию : true
(имя запроса)UpdateInterval [число]
Интервал между запросами (в секундах!).
По умолчанию : 600 (10 минут)
(имя запроса)InputString [шаблон]
Этот шаблон задаёт формат web-страницы, то есть положение в ней действительно значимой информации.
В результате наложения шаблона на закачанную web-страницу из неё извлекаются строки, интересующие пользователя.
Нумерация строк идёт начиная с 1.
Например, если страница выглядит так:
<html>
<body>
21.04.2004<br>
Seg@<br>
Wazzzzzup!
</body>
</html>
То следующий шаблон:
<body>{%}<br>{%}<br>{%}</body>
задаст три строки с полезной информацией:
1 - 21.04.2004
2 - Seg@
3 - Wazzzzzup!
Более подробная информация по тому, как формируется шаблон, находится здесь
По умолчанию : {%}
(имя запроса)OutputString [шаблон]
По этому шаблону формируется текст, непосредственно выводимый на экран или в файл. Задаётся как обычный текст, в котором вместо изменяющейся информации пишется следующая конструкция: {%N}, где N - номер строки, извлечённой из web-страницы.
Например, пусть при разборе web-страницы были получены следующие строки:
1 - 21.04.2004
2 - Seg@
3 - Wazzzzzup!
Тогда следующий шаблон:
Дата: {%1}\nАвтор новости: {%2}\n{%3}
Поможет вывести в Label "культурно" отформатированный текст:
Дата: 21.04.2004
Автор новости: Seg@
Wazzzzzup!
По умолчанию : {%1}
(имя запроса)OnChecked [действие]
Действие, которое будет выполнено после успешных загрузки и разбора web-страницы.
По умолчанию : !none
(имя запроса)OnFailure [действие]
Действие, которое будет выполнено, если не удалось загрузить или разбрать web-страницу.
По умолчанию : !none
(имя запроса)OnUpdated [действие]
Действие, которое будет выполнено, если web-страница изменилась с момента последней проверки. Не будет работать, если не указан LocalFile
По умолчанию : !none
(имя запроса)OutputLabel [имя текстового контейнера]
Если задано и не пусто, то после чтения и разбора web-страницы текст данного контейнера будет изменён на строку, сформированную по шаблону OutputString.
По умолчанию : пустая строка
(имя запроса)OutputFile [путь к файлу на диске]
Если задано и не пусто, то после чтения и разбора web-страницы в этот файл будет записана строка, сформированная по шаблону OutputString. Эта опция может быть использована, если вместо Label вы захотите использовать oborzevatel. При записи в файл не удаляются HTML-теги, как это происходит при выводе на Label.
По умолчанию : пустая строка
!Команды :
Первый параметр всех команд - имя запроса.
Например, для чтения страницы описанной запросом MySiteNews, требуется выполнить команду
!WazupCheck MySiteNews
Полный список доступных !команд:
!WazupCheck (имя запроса)
Произвести запрос.
!WazupEnable (имя запроса)
Включить автообновление.
!WazupDisable (имя запроса)
Отключить автообновление.
!WazupToggle (имя запроса)
Переключить состояние автообновления: выключить если включено, включить если выключено.
!WazupSetURL (имя запроса) [URL]
Изменить URL проверяемой web-страницы.
!WazupSetInputString (имя запроса) [шаблон]
Изменить шаблон страницы.
!WazupSetOutputString (имя запроса) [шаблон]
Изменить формат вывода преобразованной web-страницы.
!WazupSetUpdateInterval (имя запроса) [время в секундах]
Изменить интервал между обновлениями.
Формирование шаблонов:
Шаблон - это обычная строка, в которой вместо некоторых кусков текста пишутся специальные строки, также называемые escape-последовательностями, упрощающие шаблон или выделяющие специальную строчку, которую и надо выделить из файла. В модуле Wazup реализованы следующие escape-последовательности
{*}
Любой текст
{%}
Выделяемая подстрока. Означает, что в данном месте находится интересующая нас информация, которую и требуется выделить.
{%,N}
Выделяемая подстрока, состоящая из N символов
{%quote}
Двойные кавычки
Простой пример применения шаблонов.
Представим, что у нас есть страница следующего содержания:
<html>
<body>
We're the champions, my friend!
</body>
<html>
и шаблон
MySiteNewsInputString "<body>{%}</body>"
При разборе страницы модуль пропустит текст до первого вхождения <body>, затем считает строку {%} до </body> и назначит ей номер 1.
Тогда модуль используя шаблон вывода
MySiteNewsOutputString Msg: {%1}
сформирует строку
Msg: We're the champions, my friend!
Примечание:
Некоторые важные замечания, важные во время эксплуатации модуля:
Если шаблон InputString содержит пробелы, то он должен быть заключён в двойные кавычки.
Если в InputString используются двойные кавычки, то их следует заменить на escape-последовательность {%quote}
Если требуется описать шаблон, выделяющий несколько новостей, то лучше поступить как в примере - использовать дополнительную $переменную$
Не забывайте, что максимальная длина строки в RC-файлах LiteStep'а с уже подставленными $переменными$ 4096 символов!!!
В связи с этим вместо {%quote} иногда лучше использовать {*} - так короче
Журнал изменений :
Версия 1.0, 21.04.2004
Родила царица в ночь,
Не то сына, не то дочь...
Не мышонка, не лягушку,
А неведому зверушку...
Автор :
Handle :
Сергей Гагарин a.k.a. Seg@
E-Mail :
inform-sega@freemail.ru
Web :
http://www.litestep.bip.ru/
ICQ : 162261148
IRC : #litestep @ freenode.net