Программно контролировать веб-страницу - PullRequest
2 голосов
/ 26 июля 2010

У каждого проекта на drupal.org есть своя страница:

http://drupal.org/project/marinelli

Когда создается новый выпуск, он добавляется на страницу релиза этого проекта

http://drupal.org/node/185969/release

Я пытаюсь отслеживать, когда страница, но, конечно, я не хочу продолжать проверять ее вручную. Мне нужно сделать это программно с php.

  • Должен ли я поцарапать страницу? Эта страница может быть удалена?

  • Я вижу канал RSS, но не уверен, как это работает или может ли он помочь мне с мониторингом или как.

  • Предлагает ли drupal.org более чистое решение, такое как API? или есть способ напрямую контролировать хранилище?

  • Другие решения приветствуются

Ответы [ 4 ]

5 голосов
/ 26 июля 2010

Существует основной модуль «Состояние обновлений», который проверяет, есть ли какие-либо обновления для установленных модулей. Вы можете использовать это напрямую, если это соответствует вашим потребностям, или проверить источник, как модуль запрашивает данные.

4 голосов
/ 26 июля 2010

Вместо того, чтобы пытаться скопировать страницу, как вы сказали, лучшим решением может быть использование ее RSS-канала - например, в вашем случае: http://drupal.org/node/185969/release/feed

Преимущество состоит в том, что RSS являетсячетко определенный формат: меньше шансов получить любую ненужную информацию в супе HTML.


Чтобы извлечь данные из этого канала XML, вы можете использовать SimpleXML для работы с данными XML "с помощью-hand ", или какая-то библиотека, например SimplePie , которая знает RSS / ATOM.

Затем, в вашем случае, вы должны отслеживать последнее обновление - и каждый раз, когда вы получаетеRSS-канал, проверьте, есть ли обновление, которое было более новым, чем последнее, которое вы видели в прошлый раз.


В XML для вашего модуля Marinelli вы увидите, что каждая запись содержит <pubDate> тег, соответствующий его дате;например:

<pubDate>Tue, 25 Aug 2009 07:28:26 +0000</pubDate>

Если сегодня самая последняя запись от 2009-08-25, а завтра будет запись от 2010-07-27 ... Ну, это означает, что модуль имеетобновлено; -)

2 голосов
/ 26 июля 2010

А как насчет собственных каналов сайта? http://drupal.org/node/185969/release/feed Просто подпишитесь на него в любом приложении для чтения RSS (например, Google Reader)

Что вы имеете в виду, чтобы проверить это программно? Существует ли серверная часть, которая загружает и устанавливает обновления без участия пользователя?

1 голос
/ 26 июля 2010

Вы можете получить релизы для проекта на http://updates.drupal.org/release-history/$project_name/$api_version, см., Например, http://updates.drupal.org/release-history/marinelli/6.x

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...