RosettaCodeData/Task/Rosetta-Code-Rank-languages.../Python/rosetta-code-rank-languages...

38 lines
1.1 KiB
Python

import requests
import operator
import re
api_url = 'http://rosettacode.org/w/api.php'
languages = {}
parameters = {
'format': 'json',
'action': 'query',
'generator': 'categorymembers',
'gcmtitle': 'Category:Programming Languages',
'gcmlimit': '200',
'gcmcontinue': '',
'continue': '',
'prop': 'categoryinfo'
}
headers = {
'User-Agent': 'Rosetta Code Task bot'
}
while(True):
response = requests.get(api_url, params=parameters, headers=headers).json()
for k,v in response['query']['pages'].items():
if 'title' in v and 'categoryinfo' in v:
languages[v['title']]=v['categoryinfo']['size']
if 'continue' in response:
gcmcontinue = response['continue']['gcmcontinue']
# print(gcmcontinue)
parameters.update({'gcmcontinue': gcmcontinue})
else:
break
# report top 15 languages
for i, (language, size) in enumerate(sorted(languages.items(), key=operator.itemgetter(1), reverse=True)[:15]):
print("{:4d} {:4d} - {}".format(i+1, size, re.sub('Category:','',language))) # strip Category: from language