summaryrefslogtreecommitdiffstats
path: root/rfpquery.py
blob: 82ff0b60fe583af2d8e39c2e6f131c45eb39df71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/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 Page (RFP)

import urllib2, sys, re
from optparse import OptionParser

# Parse commandline arguments
parser = OptionParser()
parser.add_option('--min', dest='min_days_old', type="int", help='Minimum age of reports (in days)')
parser.add_option('--max', dest='max_days_old', type="int", help='Maximum age of reports (in days)')
(options, args) = parser.parse_args()

if not options.min_days_old and not options.max_days_old:
	parser.error('You have to give at least one of --min or --max')
	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...
print 'Output reports that are older then', options.min_days_old, 'days and younger then', options.max_days_old, 'days:\n'

reports = []
item = []
rfpurl = urllib2.urlopen('http://www.debian.org/devel/wnpp/requested')

for line in rfpurl:
	if re.findall('bugs\.debian\.org', line) or re.match('requested(.*)ago', line):
		# First line
		if re.match('^.ul.(.*),', line) or re.match ('^(.*)li.(.*),', line):
			# Link
			link = re.sub('<ul>', '', line)
			link = re.sub('<li><a href="', '', link).strip()[:29]
			item.append(link)

			# Name
			name = re.sub('<ul>', '', line).strip()
			name = name[44:]
			name = name.split(':', 1)[0]
			item.append(name)

		# Second line
		if re.match('^requested(.*)', line):
			days = re.sub('requested ', '', line)
			days = re.sub(' days ago.', '', days).strip()
			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 old (' + entry[0] + ')'