为什么我无法使用 JSON API 获取 Ubuntu 软件中心中此应用的所有评论?

为什么我无法使用 JSON API 获取 Ubuntu 软件中心中此应用的所有评论?

读完这篇文章后我有一个疑问:是否有可用的软件中心 Web API?

我正在尝试了解 Ubuntu 软件中心的 JSON 端点。

此 JSON 列出了软件中心提供的所有应用程序:http://software-center.ubuntu.com/api/2.0/applications/any/ubuntu/any/any/

太棒了...现在我需要获得一个应用程序的所有评论!

因此我选择一个应用程序并packages_name从 JSON 文件中获取它:

{
        "status": "Published", 
        "package_name": "splashtop-streamer", 
        "video_embedded_html_urls": [
            "http://myapps.developer.ubuntu.com/dev/apps/1804/video/264a5fb11b60410a3a7d03bebdd1fcccd0cf5a72/"
        ],....

这里package_namesplashtop-streamer

要获取vlc应用程序的所有评论,我只需执行以下操作:https://reviews.ubuntu.com/reviews/api/1.0/reviews/filter/any/ubuntu/any/any/vlc

但对于splashtop-streamer应用程序我不能:https://reviews.ubuntu.com/reviews/api/1.0/reviews/filter/any/ubuntu/any/any/splashtop-streamer

它仅返回以下内容:

[]

如果你看看splashtop-streamer安装splashtop-streamer在线,你会看到它确实有评论。那么为什么 API 返回一个空列表?

答案1

这并不明显,但那里的 API 过滤器使用 origin 来指定应用程序是来自 ubuntu 档案还是 PPA。因此,对于商业应用程序,按“ubuntu”过滤将得到零结果。你想要的是:

http://reviews.ubuntu.com/reviews/api/1.0/reviews/filter/any/any/any/any/splashtop-streamer/
http://reviews.ubuntu.com/reviews/api/1.0/reviews/filter/any/any/any/any/splashtop-streamer/page/2/

ETC。

请注意,如果您愿意的话,还有一个小包装器可以让您的代码更清洁:

$ bzr branch lp:~rnr-developers/rnr-server/rnrclient
$ cd rnrclient && virtualenv venv && venv/bin/python setup.py install && venv/bin/python
>>> from rnrclient import RatingsAndReviewsAPI
>>> api = RatingsAndReviewsAPI("http://reviews.ubuntu.com/reviews/api/1.0")
>>> api.server_status()
u'ok'
>>> streamer_reviews = api.get_reviews(packagename='splashtop-streamer')
>>> len(streamer_reviews)
10
>>> streamer_reviews = api.get_reviews(packagename='splashtop-streamer', page=2)
...

相关内容