From ebf54fe879699d577020031d3c4a9357a876c0ac Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E2=80=9CAlexandr?= <“popov2al@gmail.com”> Date: Tue, 31 Mar 2009 13:19:58 +0400 Subject: [PATCH] adding simple package search --- src/pkgsearch.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/pkgsearch.py diff --git a/src/pkgsearch.py b/src/pkgsearch.py new file mode 100644 index 0000000..56c253b --- /dev/null +++ b/src/pkgsearch.py @@ -0,0 +1,32 @@ +#!/usr/bin/python +# -*-coding: utf-8 -*- +# vim: sw=4 ts=4 expandtab ai + +import apt_pkg +from heapq import nlargest + +def pkggetter(cache): + for pkg in cache.Packages: + # pkg is from a list of packages, sorted by name. + if pkg.CurrentState == apt_pkg.CurStateInstalled: + yield [version.InstalledSize for version in pkg.VersionList][0], pkg.Name + +def size_convert(size): + """Return string with file size in b or Kb or Mb or Gb or Tb.""" + for i, unit in enumerate(['%d b', '%.1f Kb', '%.2f Mb', '%.3f Gb', '%.4f Tb']): + if size < 1024**(i+1): + return unit % (size/1024.**i) + return '>1024 Tb' + +def main(): + """The main function.""" + apt_pkg.InitConfig() + apt_pkg.InitSystem() + + cache = apt_pkg.GetCache() + count = 50 + for size, packg in nlargest(count, pkggetter(cache)): + print packg, size_convert(size) + +if __name__ == "__main__": + main() -- 1.7.9.5