如何以编程方式从软件中心获取应用程序列表

如何以编程方式从软件中心获取应用程序列表

我正在编写一个 PyGI 应用程序,我想在自动完成文本条目或下拉列表中显示来自 Ubuntu 软件中心的匹配应用程序列表。我还没有找到呈现信息的最佳方式,我只是想让用户更轻松地输入应用程序的名称。

但在此之前,我想弄清楚如何获取数据。是否有 API 可以从软件中心获取所有应用程序的列表,或者间接通过 Unity 中的应用程序仪表板获取?

答案1

您可以直接使用 xapian DB:

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

或者内部软件中心 API:

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

答案2

使用包python-apt 安装 python-apt,有文档/usr/share/doc/python-apt

例如,要获取所有已安装软件包的列表,请使用

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

由于软件中心是用 Python 编写的,您可能也想查看它的源代码。

相关内容