Last week, we had a Indic Wikisource Proofreadthon 2020 event. see here for full details
Though I did not participated in this event, (feels sad for this. Life is too messy nowadays), I thought to build a small tool to give report on any wikipedia user’s contribution on given wikisite for a given date range.
It may help to calculate, measure, decide on the contributions for such competitions.
Mediawiki has a good API to fetch user contribuions. https://www.mediawiki.org/wiki/API:Usercontribs
Get all edits by a user. https://www.mediawiki.org/wiki/Special:MyLanguage/API:Usercontribs
The maximum number of contributions to return. Type: integer or max The value must be between 1 and 500.
The start timestamp to return from. Type: timestamp
The end timestamp to return to. Type: timestamp
When more results are available, use this to continue.
In which direction to enumerate:
newer – List oldest first. Note: ucstart has to be before ucend.
older – List newest first (default). Note: ucstart has to be later than ucend.
One of the following values: newer, older Default: older
The above details helped much.
For my wonder, there was a sample python code on the same page.
The code gave only 500 results. I wrote a loop to get the data batch by batch till all the data is received.
Published the tool here – https://github.com/tshrinivasan/wiki_user_contributions_report
How to run?
python3 get_user_contributions.py <language> <wikisite> <username> <start_date> <end_date>
This will give the data as a CSV file. Used a csv-to-html convertor utility to convert this to web page with all the data in sortable table.
For my wonder, my friend Dinesh Karthik, converted this as a nice web application with flask, dash and hosted in heroku.
Thanks to Info-farmer for providing the idea, Bartosz Dziewoński on wikipedia mailing list for answering all my questions, Dinesh for making a web application quickly.
is a good place to ask any tech questions regarding wikipedia.
Thanks to all wikisource contributors for the event and in general.