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
    наверх