![为什么我无法使用 JSON API 获取 Ubuntu 软件中心中此应用的所有评论?](https://linux22.com/image/1079433/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%20JSON%20API%20%E8%8E%B7%E5%8F%96%20Ubuntu%20%E8%BD%AF%E4%BB%B6%E4%B8%AD%E5%BF%83%E4%B8%AD%E6%AD%A4%E5%BA%94%E7%94%A8%E7%9A%84%E6%89%80%E6%9C%89%E8%AF%84%E8%AE%BA%EF%BC%9F.png)
读完这篇文章后我有一个疑问:是否有可用的软件中心 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_name
是splashtop-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在线,你会看到它确实有评论。那么为什么 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)
...