Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I'd like to know how many downloads of a given package in a PPA there have been since it was first published.

I remember there was a bug about it about getting these metrics on the web UI, but as far as I know, it never got implemented.

But I think the number of downloads can nevertheless be obtained via the Launchpad API if I'm the owner of that PPA. Any pointers?

share|improve this question

4 Answers 4

up vote 13 down vote accepted

Check out this script:

#!/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'

To use it

$ python ppastats.py webupd8team themes natty i386

share|improve this answer

You can generate an HTML report containing statistics and graphs about download counts of a PPA with ppastats (http://wpitchoune.net/blog/ppastats/).

Here is an example: http://wpitchoune.net/ppastats/ppa/otto-kesselgulasch/gimp/.

If you are using Ubuntu, you can install it by using the PPA ppa:jfi/ppastats:

sudo apt-add-repository ppa:jfi/ppastats
sudo apt-get update
sudo apt-get install ppastats

Then to generate the HTML report:

ppastats [PPA_OWNER] [PPA_NAME] -o [OUTPUT_DIR]
share|improve this answer

From the jfi/ppastats package, I managed to figure out how the API worked, and I made a userscript (Greasemonkey/Tampermonkey), that will neatly list the download count next to your packages. Make sure to go to the "View all builds" view, to which there is two links added in your package details. Patches for improvements are welcome!

share|improve this answer
    
whut? How does this work? How is this simpler than the accepted answer? –  Whaaaaaat Sep 26 at 8:02
    
It's a cross platform script that you run in your browser with either the Greasemonkey extension (Firefox) or the Tampermonkey extension (Chrome). I would say that it is simpler. –  Stefan Sundin Sep 26 at 17:21
    
Where are the download counts? I see "view download counts" but when I click that I don't see them anyway on the page.. –  Seth Oct 3 at 16:51
    
Strange. I tested the latest version with both Firefox and Chrome (Greasemonkey and Tampermonkey). Try going to my PPA (which is the one I made it for): launchpad.net/~stefansundin/+archive/ubuntu/truecrypt/… It may have some problems with an archive that has been copied between ubuntu versions, in which case you may see a spinner that never goes away. I'll try to solve this in a later version. –  Stefan Sundin Oct 4 at 23:54

There is another python script available at:

https://bugs.launchpad.net/launchpad/+bug/139855/comments/66

DL: https://bugs.launchpad.net/launchpad/+bug/139855/+attachment/3217345/+files/ppastats

usage: ppastat.py [-h] [--all] [--arch ARCH] user [ppa [ppa ...]]

share|improve this answer
    
Welcome to AskUbuntu! Although this may possibly answer the question, there are no real explanations, and this might be better off as a comment. –  No Time Oct 15 at 4:36

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.