import os def gettitle(number): number = str(number) try: return open(number).read().strip() except (IOError, OSError): pass HEAD = 'SourceForge.net: Detail:' TAIL = '' TAIL2 = ': Tracker Detailed View' title = None tracker = None g = os.popen('lynx -source http://www.python.org/sf/%s' % number, 'r') for line in g: line = line.strip() if line.startswith(HEAD) and line.endswith(TAIL) and not title: title = line[len(HEAD):len(line)-len(TAIL)] if line.endswith(TAIL2) and not tracker: tracker = line[:len(line)-len(TAIL2)] g.close() if title: tracker = { 'Bugs': 'bug', 'Patches': 'patch', 'Feature Requests': 'feature request', }.get(tracker) if tracker: title = '%s %s' % (tracker, title) print >> open(number, 'w'), title return title if __name__ == '__main__': import sys for number in sys.argv[1:]: print gettitle(number)