Rosetta Code/Rank languages by popularity: Difference between revisions

Content added Content deleted
(→‎{{header|Ruby}}: use the Programming_Languages category)
(added python fail-proof solution)
Line 453: Line 453:
for n, i in enumerate(sorted(result,key=key1,reverse=True)):
for n, i in enumerate(sorted(result,key=key1,reverse=True)):
print "%3d. %3d - %s" % (n+1, i[1], i[0])</lang>
print "%3d. %3d - %s" % (n+1, i[1], i[0])</lang>

Fail-proof solution

<lang python>import json
import urllib

result = []

langs = json.load(urllib.urlopen("http://www.rosettacode.org/w/api.php?\
action=query&list=categorymembers&cmtitle=Category:Programming_Languages\
&cmlimit=500&format=json"));

titles = [i['title'] for i in langs['query']['categorymembers']]

while titles:
t = '|'.join(titles[:50])
info = json.load(urllib.urlopen("http://www.rosettacode.org/w/api.php?\
action=query&prop=categoryinfo&format=json",
data=urllib.urlencode({"titles":t})))['query']['pages']
for i in info:
try:
result.append([info[i]['title'], info[i]['categoryinfo']['pages']])
except:
pass
del titles[:50]

c = 0
for i in sorted(result,key=lambda x: x[1],reverse=True):
c += 1
print "%d. %s - %d" % (c, i[0].replace("Category:",''), i[1])</lang>


=={{header|Ruby}}==
=={{header|Ruby}}==