API:Edit/Editing with Python

From MediaWiki.org
Jump to: navigation, search

Edit example in Python, regarding the API:Edit article (based on User:Sebelino7/Login with Python)

Tested with MediaWiki 1.26

# -*- coding: utf-8 -*-

import urllib2
import requests

user    = 'mediawiki_login'
passw   = urllib2.quote('mediawiki_pass')
baseurl = 'http://meta.wikimedia.org/w/'
login_params  = '?action=login&lgname=%s&lgpassword=%s&format=json'% (user,passw)
summary='bot update'
content='Hej!'
title = 'User:Bot/Test'
 
# Login request
r1 = requests.post(baseurl+'api.php'+login_params)
login_token = r1.json()['login']['token']

#login confirm
login_params2 = login_params+'&lgtoken=%s'% login_token
r2 = requests.post(baseurl+'api.php'+login_params2, cookies=r1.cookies)

#get edit token2
params3 = '?format=json&action=query&meta=tokens&continue='
r3 = requests.get(baseurl+'api.php'+params3, cookies=r2.cookies)
edit_token = r3.json()['query']['tokens']['csrftoken']

edit_cookie = r2.cookies.copy()
edit_cookie.update(r3.cookies)

# save action
headers = {'content-type': 'application/x-www-form-urlencoded'}
payload = {'action': 'edit', 'assert': 'user', 'format': 'json', 'text': content, 'summary': summary, 'title': title, 'token': edit_token}
r4 = requests.post(baseurl+'api.php', headers=headers, data=payload, cookies=edit_cookie)

print (r4.text)