Wazup 1.3
О модуле :
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.3)
;-----------------------------------------------
*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!
При записи в файл \n означает перевод строки, для вставки одинарного слэша
(\) используйте двойной обратный слэш (\\)
По умолчанию: {%1}
(имя запроса)NewLine [строка]
Набор символов, на который заменяются теги <br> и <p> при выводе текста
в Label. Эта настройка может быть использована при создании бегущей строки
По умолчанию: \n
(имя запроса)FileNewLine [строка]
Набор символов, на который будет заменён переход на новую строку в исходном файле при
выводе текста в результирующий файл. Если требуется сохранить перевод строки, то можно
использовать escape-последовательность "\n"
К примеру, если из текста были извлечены подстроки, содержащие перевод строки:
1 - 21.04.2004
2 - Seg@
3 - Wazzzzzup!
Вот такая вот вторая строка новости.
Конец новости.
И их требуется сохранить в out.rc как $переменные$ param1, param2, param3,
то при следующих настройках:
[Prefix]OutputFile "$ConfigDir$news.rc"
[Prefix]FileNewLine " "
[Prefix]OutputString "param1 {%quote}{%1}{%quote}\nparam2 {%quote}{%2}{%quote}\nparam3 {%quote}{%3}{%quote}"
В файл news.rc будет записано:
param1 "21.04.2004"
param2 "Seg@"
param3 "Wazzzzzup! Вот такая вот вторая строка новости. Конец новости."
По умолчанию: "\n"
(имя запроса)DisplayNewLineAs [строка]
При выводе в Label перевод на новую строку в исходном файле будет
заменён именно на эту строку. Если требуется сохранить перевод строки,
то можно использовать escape-последовательность \n
По умолчанию: " " (пробел).
(имя запроса)OnChecked [действие]
Действие, которое будет выполнено после успешных загрузки и разбора web-страницы.
По умолчанию: !none
(имя запроса)OnFailure [действие]
Действие, которое будет выполнено, если не удалось загрузить или разбрать web-страницу.
По умолчанию: !none
(имя запроса)OnUpdated [действие]
Действие, которое будет выполнено, если web-страница изменилась с момента
последней проверки. Не будет работать, если не указан LocalFile
По умолчанию: !none
(имя запроса)DisplayOn [имя текстового контейнера]
Если задано и не пусто, то после чтения и разбора web-страницы текст данного
контейнера будет изменён на строку, сформированную по шаблону OutputString.
По умолчанию: пустая строка
(имя запроса)OutputFile [путь к файлу на диске]
Если задано и не пусто, то после чтения и разбора web-страницы в этот файл
будет записана строка, сформированная по шаблону OutputString. Эта опция может
быть использована, если вместо Label вы захотите использовать oborzevatel.
При записи в файл не удаляются HTML-теги, как это происходит при выводе на Label.
По умолчанию: пустая строка
(имя запроса)ShowProgress [false/true]
Показывать ли в label, заданном параметром DisplayOn, специальный текст в течение загрузки страницы.
По умолчанию: true
(имя запроса)ProgressInfo [текст]
Текст, отображаемый во время закачки web-страницы.
В тексте можно использовать только следующие escape-последовательности:
{downloaded} - байт прочитано...
{size} - размер получаемой страницы в байтах...
{%} - процентное соотношение прочитано/всего...
По умолчанию: Loading... {%}% complete
!Команды :
Первый параметр всех команд - имя запроса.
Например, для чтения страницы описанной запросом MySiteNews, требуется выполнить команду
!WazupCheck MySiteNews
Полный список доступных !команд:
!WazupCheck (имя запроса)
Произвести запрос.
!WazupEnable (имя запроса)
Включить автообновление.
!WazupDisable (имя запроса)
Отключить автообновление.
!WazupToggle (имя запроса)
Переключить состояние автообновления: выключить если включено, включить если выключено.
!WazupSetURL (имя запроса) [URL]
Изменить URL проверяемой web-страницы.
!WazupSetInputString (имя запроса) [шаблон]
Изменить шаблон страницы.
!WazupSetOutputString (имя запроса) [шаблон]
Изменить формат вывода преобразованной web-страницы.
!WazupSetUpdateInterval (имя запроса) [время в секундах]
Изменить интервал между обновлениями.
!WazupSetLabelText (имя запроса) [имя label] [шаблон]
Сформировать текст по шаблону и изменить текст лэйбла. С помощью этой !команды
вы можете задать сколько угодно вторичных label-дисплеев, работающих по аналогии с DisplayOn
!WazupParseCommand (имя запроса) !команда
Выполнить команду-параметр, предварительно заменив escape-последовательности {%N}
на извлечённые строки. Например,
!WazupParseCommand LSAtRu !Alert "{%1}"
Замечание: если в подставляемых строках содержались двойные кавычки, то они будут заменены на одинарные.
Формирование шаблонов:
Шаблон - это обычная строка, в которой вместо некоторых кусков текста пишутся специальные строки, также называемые 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.3, 09.05.2004
Добавлена настройка DisplayNewLineAs
!WazupSetOutputString больше не обновляет текст label'а автоматически. В случае необходимости !WazupSetLabelText может выполнять эту функцию
Добавлена поддержка тэгов и °
Добавлена возможность показа прогресса загрузки (см. ShowProgress, ProgressInfo)
Исправлена работа функции !WazupSetUpdateInterval
LocalFile больше не будет подменяться недокачанным файлом (что происходило при обрыве соединения)
Символы '[' и ']' в извлечённых строках теперь будут заменяться на [[ и ]], что должно исправить вывод в label
В папку sample config добавлен пример чтения RSS-фидов новостей
Версия 1.2, 26.04.2004
Исправлено: если в момент чтения файла пользователь перегружал LiteStep, файл LocalFile оказывался заблокированным на запись.
Исправлено: если текст извлечённой строки содержал точку с запятой, то она делила текст лейбла (оставшаяся часть была видна только с помощью !LabelNext/!LabelPrevious)
Исправлено: команда !WazupSetInputString и !WazupSetOutputString не обрабатывали {%quote}
При записи в файл \n заменяется на перевод строки (а двойной обратный слэш \\ - на одинарный \)
Добавлена настройка FileNewLine, что при желании позволит писать параметры {%} в файл в одну строку. Например, для того, чтобы устновить таким образом $переменные$
Добавлена команда !WazupSetLabelText для работы с несколькими label-дисплеями
Добавлена команда !WazupParseCommand для использования извлечённых строк в !командах других модулей
В папку sample config архива сброшен пример разбора прогноза погоды с www.weather.com. Автор - Brian Wolven.
Версия 1.1, 24.04.2004
Теперь можно использовать Label с несколькими подстроками (поставив точку с запятой как разделитель, доступ через !LabelNext, !LabelPrevious).
Для этого OutputString должна быть заключена в двойные кавычки, иначе точка с запятой будет трактоваться как комментарий и весь текст после неё будет пропущен!
НО: теперь строка-шаблон OutputString, содержащая пробелы, обязательно должна быть заключена в кавычки, иначе она будет обрезана на первом пробеле.
Исправлена ошибка в документации, замеченная Eddie Hung
Если задан LocalFile, то после вызова !WazupSetOutputString текст лейбла будет изменяться автоматически автоматически
Добавлена настройка NewLine для соззадания бегущих строк
Версия 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