initial import of solutions for wikipedia data challenges
[wikipedia-cdsw-solutions] / solution_7.py
1 # 7. Can you build a list of all of the articles edited by "Benjamin
2 # Mako Hill"? What is the article with the longest title that user
3 # Benjamin Mako Hill has edited?
4
5 # Step 1: Searching around on Google, I found this documentation which
6 # seemed like the right way to answer this question:
7 # https://www.mediawiki.org/wiki/API:Usercontribs
8
9 import requests
10
11 edited_pages = []
12
13 # parameter version which makes a little more sense
14 parameters = {'action' : 'query',
15               'list' : 'usercontribs',
16               'ucuser' : 'Benjamin Mako Hill',
17               'uclimit' : 500,
18               'ucprop' : 'title',
19               'format' : 'json',
20               'continue' : ''}
21
22 while True:
23     wp_call = requests.get('https://en.wikipedia.org/w/api.php', params=parameters)
24     response = wp_call.json()
25
26     contribs = response['query']['usercontribs']
27     
28     for contrib in contribs:
29         if contrib['title'] not in edited_pages:
30             edited_pages.append(contrib['title'])
31
32     # keep looping if we need to continue
33     if 'continue' in response:
34         parameters.update(response['continue'])
35     else:
36         break
37
38 # print out the list of pages
39 counter = 0
40 for page in edited_pages:
41     counter = counter + 1
42     print(page)
43
44 print("TOTAL PAGES: %s" % counter)

Benjamin Mako Hill || Want to submit a patch?