如何使用 appstream API 获取有关应用程序的元数据?

如何使用 appstream API 获取有关应用程序的元数据?

我正在尝试制作一个 GUI 前端来pacman使用alpm.我最近发现它appstream可以帮助我获取应用程序的图标、屏幕截图等。但我不明白我该怎么做。在文档中appstreamstruct AsIcon它定义了有关图标的信息,如文件名、url、大小等,但它没有像get_icon_for_app("app_name").如果有人能指出我正确的方向,那将是一个很大的帮助。一些示例代码什么的。

答案1

我开始在解决这个问题上取得进展,所以我想我会用一个代码片段来记录它。希望这对查找这个问题的人有所帮助。

//Create a new "pool" of metadata:
AsPool * pool = as_pool_new();

//Set the pool flags. In this case,
//I'm choosing the flag that tells it
//to load the Flatpak metadata from the standard location:
as_pool_set_flags(pool, AS_POOL_FLAG_LOAD_FLATPAK);

//Load the metadata.
//I'm supposed to pass objects for handling
//errors and cancellations, but I don't care
//right now and NULL works.
as_pool_load(pool, NULL, NULL);

//I'm getting a single component (read: app) by id,
//but it returns an array because there could be
//multiple repos with the same app, and if so it
//will return one component for each of them:
GPtrArray * components = as_pool_get_components_by_id(pool, "refname");

这给了我一个元数据池和一个组件(应用程序)。从这里我可以使用这些方法来安装、删除、获取元数据或我想要的任何其他内容。我认为这可能是与 AppStream API 交互的一个很好的起点。

相关内容