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 может выполнять эту функцию
  • Добавлена поддержка тэгов &nbsp; и &deg;
  • Добавлена возможность показа прогресса загрузки (см. 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
    наверх