fdroid / php-fdroid
PHP的F-Droid仓库解析库
Requires
- ext-json: *
- ext-simplexml: *
README
此仓库包含一个PHP类,用于解析和使用F-Droid仓库的index.xml
/index-v1.json
/index-v2.json
文件。我已经连续几年使用它处理这三种格式,所以它应该相当稳定——尽管它远非完美。目前没有多少文档。只要许可证合适,您可以使用它在自己的项目中。
此项目的目标之一是提供稳定的API:无论您使用的是哪个索引版本,通过此API提供的结构都应该兼容(仅提供新索引版本(如v2)的属性,而旧版本(如v1或v0(XML))则没有)。由于新索引版本有时也会重新组织结构(如v2对本地化属性所做的),此API将这些属性移回到它们之前的位置——这意味着两点:1)您可以使用同一库中的每个现有索引版本,获取相同结构,2)您应该能够轻松地更新到此API的新版本,将其作为即插即用的替代品而无需“破坏东西”。如果您仍然想要“较新的结构”:从实现index-v2开始,将检查一个常量。如果您定义FREPP_KEEP_EXTENDED
并将其设置为1
(当前设置为true
也可以工作,但我保留在未来版本中使用它逐步的可能性,因此最好使用整数),则将并行保留较新的结构。请注意,对于大型索引,结果在内存中的对象也可能变得相当大:截至2023年6月的F-Droid.org索引,包含扩展结构的应用列表的print_r()
结果是一个近80MB的文件,而没有扩展结构则大约是45MB。
要开始,您可能想看看doc/example.php
文件,该文件提供了简短的操作流程。所有源代码也使用Javadoc风格的PHPDoc进行注释。因此,如果您需要它,请查看后者维基百科页面,以了解生成API参考的可能性。
哦:关于名称。最初我将其命名为“Prepaf”(Php REpo PArser for Fdroid)。但由于即使是我自己也无法记住这个名字,我决定使用一个更简单的名称:Frepp,其含义相当于“Fdroid REpo Parser(库)PHP”。最终将其纳入F-Droid命名空间,并将其重命名为php-fdroid
。
注意
- 此类原本打算用于本地仓库。我在自己的(有600多个应用)中使用它,速度和处理时间似乎都很不错。但是,在大型仓库上同时进行多个会话时,它会变得相当耗内存(见上面的“内存对象”)。因此,随着我的自己的仓库现在已超过1k个应用,F-Droid的超过4k,我已经转向使用此库将结构导入数据库,并让客户端使用该数据库。
- 虽然它不适用于远程仓库,但它可以使用下载的
index.xml
(或index-v1.json
/index-v2.json
)运行——但有一些限制:由于没有.apk文件,因此无法评估它们的最后构建时间戳,如果没有可用的categories.txt
,也无法评估)。使用F-Droid自己的index.xml
和index-v1.json
(当时有3,000多个应用)的快速测试表明,速度仍然似乎合理。 - 特别附录:例如,如果fdroidserver进行了重大更新,其应用缓存可能需要重建,这意味着应用被添加到仓库的日期会丢失。为了预防这种情况,您可以在
维护者备注
块中使用AppAdded: YYYY-MM-DD
格式的行来保存它。库会检查这个信息,并优先使用它。
许可证
本项目使用的是GPLv2
许可证,如LICENSE
文件所述。
贡献
你喜欢这个库并想要贡献吗?
- 欢迎提交/合并请求!
- 例如,通过发送一些mBTC到
1FsfvUGUpoPkLvJboKAnuBXHZ1zN3hbBL1
来激励我 :)