wnpp-query/wnpp-query.py
Stefan Ritter b527c75549 Added ITP functionality
* Renamed to wnpp-query
* Removed some more regexp
2009-10-27 16:39:44 +01:00

67 lines
2.4 KiB
Python
Executable file

#!/usr/bin/python
# This program is free software. It comes without any warranty, to
# the extent permitted by applicable law. You can redistribute it
# and/or modify it under the terms of the Do What The Fuck You Want
# To Public License, Version 2, as published by Sam Hocevar. See
# http://sam.zoy.org/wtfpl/COPYING for more details.
# Author: Stefan Ritter <xeno@thehappy.de>
# Description: Query Debian WNPP pages
import urllib2, sys, re
from optparse import OptionParser
# Parse commandline arguments
parser = OptionParser()
parser.add_option('-i', action='store_true', dest='itp', default=False, help='Query ITPs')
parser.add_option('-r', action='store_true', dest='rfp', default=False, help='Query RFPs')
parser.add_option('--min', dest='min_days_old', type="int", help='Minimum age (in days)')
parser.add_option('--max', dest='max_days_old', type="int", help='Maximum age (in days)')
(options, args) = parser.parse_args()
if not options.min_days_old and not options.max_days_old or not options.itp and not options.rfp or options.itp and options.rfp:
parser.error('You have to give at least one of --min or --max and one of -r or -i options.')
sys.exit
if not options.min_days_old: options.min_days_old = 0
if not options.max_days_old: options.max_days_old = 9999
# Here we go...
reports = []
item = []
if options.itp:
url = urllib2.urlopen('http://www.debian.org/devel/wnpp/being_packaged')
else:
url = urllib2.urlopen('http://www.debian.org/devel/wnpp/requested')
for line in url:
if re.findall('bugs\.debian\.org', line) or re.match('requested(.*)ago', line) or re.match('(.*)days in preparation', line):
# First line
if re.match('^.ul.(.*),', line) or re.match ('^(.*)li.(.*),', line):
# Link
link = re.sub('<ul>', '', line).strip() # First line starts with <ul>
link = line[14:43]
item.append(link)
# Name
name = re.sub('<ul>', '', line).strip() # First line starts with <ul>
name = name[44:]
name = name.split(':', 1)[0]
item.append(name)
# Second line
if re.match('^requested(.*)', line) or re.match('^(.*)days in preparation', line):
if options.itp:
days = line.split(' ')[0]
else:
days = line.split(' ')[1]
item.append(days)
if len(item) == 3:
reports.append(item)
item = []
for entry in reports:
if int(entry[2]) <= options.max_days_old and int(entry[2]) >= options.min_days_old:
print entry[1] + ': ' + entry[2] + ' days ago (' + entry[0] + ')'