Como obter programaticamente uma lista de aplicativos do Centro de Software

4

Estou escrevendo um aplicativo PyGI onde gostaria de mostrar uma lista de aplicativos correspondentes do Ubuntu Software Center em uma entrada de texto de preenchimento automático ou dropdwon. Ainda não descobri a melhor maneira de apresentar as informações, só quero facilitar para o usuário digitar o nome de um aplicativo.

Mas antes disso, gostaria de descobrir como obter os dados. Existe uma API para obter uma lista de todos os aplicativos do Centro de Software ou indiretamente por meio do Applications Dash no Unity?

    
por David Planella 18.05.2012 / 18:59

2 respostas

5

Você pode usar o DB xapian diretamente:

import xapian
db=xapian.Database("/var/cache/software-center/xapian")
for m in db.postlist(""): 
    appname = db.get_document(m.docid).get_data()

Ou a API interna do software-center:

import sys
sys.path.insert(0, "/usr/share/software-center/")
import softwarecenter.db.database
db = softwarecenter.db.database.StoreDatabase()
db._aptcache.open()
# 'use_axi' is use apt-xapian-index
# 'use_agent' is use the Software Center Agent database
db.open(use_axi=False, use_agent=False)
for doc in db:
    app = db.get_application(doc)
    print app.appname, app.pkgname
    appdetails = app.get_details(db)
    # Icon names are relative to /usr/share/app-install/icons/
    print appdetails.icon
    
por Michael Vogt 24.05.2012 / 13:49
2

Use o pacote python-apt , há documentos em /usr/share/doc/python-apt

Por exemplo, para obter uma lista de todos os pacotes instalados, use

import apt
cache = apt.Cache()
installed_packages = [p for p in cache if p.is_installed]

Como o Centro de Software é escrito em Python, você pode querer dar uma olhada em seu código-fonte também.

    
por Florian Diesch 18.05.2012 / 19:11