#!/usr/bin/python import yum import sys def sortbyVal(x, y): (k, v) = x (k2, v2) = y if v > v2: return 1 if v < v2: return -1 if v == v2: return 0 my = yum.YumBase() my.conf.cache = 1 scores = {} total_set = set([]) my_sets = {} searchterms = sys.argv[1:] searchlist = ['name', 'summary', 'description', 'packager', 'group', 'url'] print '::searching' for term in searchterms: res = my.searchPackages(searchlist, [term]) my_sets[term] = res.keys() total_set = total_set.union(set(res.keys())) print '::sorting' # I know there's a way to do this more quickly, I'm not sure I know what that # way is, yet, though for pkg in total_set: if scores.has_key(pkg): continue member = 0 for other_set in my_sets.values(): if pkg in other_set: member+=1 scores[pkg] = member i = scores.items() i.sort(sortbyVal) i.reverse() print '::showing top ten: ' for (k,v) in i[:10]: print '%s - matches %d terms' % (k,v)