38 lines
1.1 KiB
Python
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
|