Bot_PHP

Back to the bot directory

#!/usr/bin/python
# vi:si:et:sw=4:sts=4:ts=4
# -*- coding: UTF-8 -*-
# -*- Mode: Python -*-

from lib.AppdateHTTPRetriever import *

class Bot_PHP(AppdateHTTPRetriever):
  """The PHP bot"""
  
  def identify(self):
    return {
      'projectGroup': 'PHP',
      'projectName': 'PHP',
      'projectDescription': 'The PHP programming language',
      'projectWebSite': 'http://php.net'
    }
  
  def run(self):
    self.sniffer.setBaseUrl('http://www.php.net')
    self.sniffer.setTargetPath('/')
    
    ##
    # Current Release
    ##
    pattern="""<li class="php5"><a href="(.*?)">Current PHP 5\.\d Stable: <span class="release">(.*?)</span></a></li>"""
    data = self.sniffer.setTargetPattern(pattern).run()

    if not data:
      self.say("No version retrieved")
      return KO
      
    self.set('currentVersion', data.group(2).strip())

    ##
    # Download URL
    ##
    self.set('downloadUrl', "http://php.net%s" % data.group(1).strip() )

    ##
    # Release Date
    ##

    self.sniffer.setTargetPath('/downloads.php')
    pattern = """<a href="/get/php-%s\.tar\.bz2/from/a/mirror">PHP %s \(tar\.bz2\)</a>.* -  (.*?)<br""" % (self.get('currentVersion'), self.get('currentVersion')) 

    data = self.sniffer.setTargetPattern(pattern).run()
    if data is not None:
      self.set('releaseDate', data.group(1).strip())

    ##
    # Release Notes
    ##
    self.set('releaseNotesUrl', "%s/ChangeLog-%s.php#%s" % (self.sniffer.getBaseUrl(), self.get('currentVersion')[0:1], self.get('currentVersion')))

    return OK

if __name__ == "__main__":

  bot = Bot_PHP()
  bot.verbose = True
  if bot.isRunnable():
    rc = bot.run()
    if rc is not OK:
      print "An error occurred while running this bot"
    else:
      print bot.getProperties()
      print bot.getOutput()

0.9beta7 2009/03/14 Web site Changelog