Author: robweir Date: Thu Nov 15 14:30:37 2012 New Revision: 1409807 URL: http://svn.apache.org/viewvc?rev=1409807&view=rev Log: Initial checkin of platform.py script for gathering platform download statistics from SourceForge
Added: incubator/ooo/devtools/aoo-stats/platform.py Added: incubator/ooo/devtools/aoo-stats/platform.py URL: http://svn.apache.org/viewvc/incubator/ooo/devtools/aoo-stats/platform.py?rev=1409807&view=auto ============================================================================== --- incubator/ooo/devtools/aoo-stats/platform.py (added) +++ incubator/ooo/devtools/aoo-stats/platform.py Thu Nov 15 14:30:37 2012 @@ -0,0 +1,113 @@ +################################################################ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +################################################################ + + +# This script queries the SourceForce REST API for download statistics for +# sets of files on SourceForge, on a given date, in ISO format (YYYY-MM-DD) +# passed in as a command line argument. The download count for that date +# is written to stdout. + + +import urllib +import json +import sys +import datetime +import time + +from urllib import urlencode + +def getSourceForgeStats(download, startDate, endDate): + + url = download + "/stats/json?start_date=" + startDate + "&" "end_date=" + endDate + + attempts = 0 + + while attempts < 3: + try: + conn = urllib.urlopen(url) + data = conn.read() + + return data + + except: + attempts += 1 + print "error " + str(attempts) + + return "" + + +if len(sys.argv) != 4: + print "syntax: python platform.py <urls.lst> <start-date> <end-date>" + print "where <file.list> is a list of files URL's to gather stats on, and <start-date> and <end-date> are in YYYY-MM-DD format." + exit(-1) + +downloads = [line.strip() for line in open(sys.argv[1])] + +count = 0 + +windows = 0 +mac = 0 +linux = 0 +android = 0 +solaris = 0 +bsd = 0 +unknown = 0 + +for download in downloads : + + start_date = sys.argv[2] + end_date = sys.argv[3] + + print download + + data = json.loads(getSourceForgeStats(download,start_date,end_date)) + + oses = data["oses"] + + for os in oses: + if os[0] == "Windows": + windows += os[1] + elif os[0] == "Macintosh": + mac += os[1] + elif os[0] == "Linux": + linux += os[1] + elif os[0] == "Android": + android += os[1] + elif os[0] == "Solaris": + solaris += os[1] + elif os[0] == "BSD": + bsd += os[1] + elif os[0] == "Unknown": + unknown += os[1] + +print + +total = windows + mac + linux + android + solaris + bsd + unknown + +print "Windows: " + str(windows) + " (" + "%0.2f" % (100.0*windows/total) + "%)" +print "Macintish: " + str(mac) + " (" + "%0.2f" % (100.0*mac/total) + "%)" +print "Linux: " + str(linux) + " (" + "%0.2f" % (100.0*linux/total) + "%)" +print "Android: " + str(android) + " (" + "%0.2f" % (100.0*android/total) + "%)" +print "Solaris: " + str(solaris) + " (" + "%0.2f" % (100.0*solaris/total) + "%)" +print "BSD: " + str(bsd) + " (" + "%0.2f" % (100.0*bsd/total) + "%)" +print "Unknown: " + str(unknown) + " (" + "%0.2f" % (100.0*unknown/total) + "%)" + +