如何从PPA中获取软件包的下载数量?

我想知道自从给定软件包在PPA中首次发布以来有多少次下载。

我记得有一个关于在Web界面上获取这些指标的错误报告,但据我所知,它从未被实现。

但是,我认为如果我是该PPA的所有者,仍然可以通过Launchpad API获得下载次数。请指点一下?

4个回答

请查看这个脚本:
#!/usr/bin/python2

# Usage python ppastats.py PPATEAM (ex: webupd8team) PPA (ex: gthumb) DIST (Ubuntu version eg maverick) ARCH (ubuntu arch eg i386 or amd64)
# Example - highest downloaded file: python ppastats.py webupd8team y-ppa-manager maverick amd64 | tr '\t' ',' | cut -d ',' -f3 | sort -gr

import sys
from launchpadlib.launchpad import Launchpad

PPAOWNER = sys.argv[1]
PPA = sys.argv[2]
desired_dist_and_arch = 'https://api.launchpad.net/devel/ubuntu/' + sys.argv[3] + '/' + sys.argv[4]

cachedir = "~/.launchpadlib/cache/"
lp_ = Launchpad.login_anonymously('ppastats', 'production', cachedir)
owner = lp_.people[PPAOWNER]
archive = owner.getPPAByName(name=PPA)

for individualarchive in archive.getPublishedBinaries(status='Published', distro_arch_series=desired_dist_and_arch):
    x = individualarchive.getDownloadCount()
    if x > 0:
        print individualarchive.binary_package_name + "\t" + individualarchive.binary_package_version + "\t" + str(individualarchive.getDownloadCount())
    elif x < 1:
        print '0'

使用方法:

python ppastats.py webupd8team themes natty i386

2sudo pip install launchpadlib && sudo pip install simplejson - OverCoder
我稍微扩展了一下这个内容:https://gist.github.com/nathan-osman/b9158d058cc45916dcd20a591b66d0b4 现在你不再需要指定一个二进制文件,而且你会得到一个格式良好的表格。 - Nathan Osman
这个计数的单位是什么?总数?每月?也许附上底层功能文档的链接会很棒!谢谢! - Matifou

jfi/ppastats包中,我成功地弄清了API的工作原理,并且我制作了一个用户脚本(Greasemonkey/Tampermonkey),它会在您的软件包旁边整齐地列出下载次数。请确保进入“查看所有构建”视图,您的软件包详细信息中会添加两个链接。欢迎提供改进的补丁!

什么?这是怎么回事?这比接受的答案更简单吗? - Kaz Wolfe
这是一个跨平台脚本,您可以在浏览器中使用Greasemonkey扩展(Firefox)或Tampermonkey扩展(Chrome)运行。我认为它更简单。 - stefansundin
下载次数在哪里?我看到了“查看下载次数”,但是当我点击它时,页面上却没有显示出来。 - Seth
奇怪。我用Firefox和Chrome(Greasemonkey和Tampermonkey)测试了最新版本。试试去我的个人包存档(这是我为其制作的):https://launchpad.net/~stefansundin/+archive/ubuntu/truecrypt/+builds?build_state=built它可能在复制了Ubuntu版本之间的存档时出现问题,如果是这种情况,你可能会看到一个永远不消失的旋转图标。我将在以后的版本中尝试解决这个问题。 - stefansundin
是的,访问你的PPA可以正常工作,但是我的显示完全没有任何内容。很有可能还没有人下载它,但是ppastats似乎与此相矛盾:http://paste.ubuntu.com/8752766/(抱歉我之前没有回复,但是你没有@提到我,所以我直到现在才看到) - Seth
@seth 你贴的链接对我有效。我看到了下载次数:19次,9次和0次。这个脚本对于有很多发布版本的ppas肯定会有问题,但是欢迎提供补丁。 - stefansundin
@StefanSundin 有趣的是,我碰巧此刻正在使用Windows,并且我安装了脚本,现在它可以工作了。奇怪。为什么ppa-stats本身显示的数量与用户脚本不同呢? - Seth
@Seth 这很奇怪。我不确定 ppastats 是否完全一样... 我没有注意到它在我的软件包上有任何差异。我建议将用户脚本作为对 ppastats 的补充使用。 - stefansundin

你可以使用ppastats(http://wpitchoune.net/blog/ppastats/)生成一个包含有关PPA下载计数的统计数据和图表的HTML报告。
这里有一个示例:http://wpitchoune.net/ppastats/ppa/otto-kesselgulasch/gimp/
如果你正在使用Ubuntu,你可以通过使用PPA ppa:jfi/ppastats来安装它。
sudo apt-add-repository ppa:jfi/ppastats
sudo apt-get update
sudo apt-get install ppastats

然后生成HTML报告:
ppastats [PPA_OWNER] [PPA_NAME] -o [OUTPUT_DIR]

1目前还没有可用的生动套餐 :/ - Seth
ppastats在vivid上编译正常,至少是版本1.3.3(http://wpitchoune.net/ppastats/files/ppastats-1.3.3.tar.gz)。Ubuntu的打包也可以,可以使用git-buildpackage从以下git仓库构建:http://git.wpitchoune.net/psensor-pkg-ubuntu.git。我可能会在某个时候公开上传它。 - JeanFI
我刚刚安装了最新的二进制包,一切正常。你知道你可以让Launchpad为你重新构建一个更新版本的软件包吗? - Seth
没有yakkety包 :( - Seth
截至今天,xenial i386 源中的此 ppa 计数为 1。在安装一个软件包之前了解计数是有关声誉方面的……只是说一下。 - Rondo
无法在Ubuntu 18.04上工作? - Matifou


欢迎来到AskUbuntu!虽然这可能回答了问题,但没有提供真正的解释,或许更适合作为评论。 - No Time
需要任何特殊的依赖吗?在Trusty上,它会出现“IndexError: list index out of range”错误。 - landroni