Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Paste
P3232
scripts/thanks.py
Active
Public
Actions
Authored by
darthbhyrava
on Jun 12 2016, 3:39 PM.
Edit Paste
Archive Paste
View Raw File
Subscribe
Mute Notifications
Award Token
Flag For Later
Tags
Pywikibot-Thanks
Referenced Files
F4157779: scripts/thanks.py
Jun 12 2016, 3:39 PM
2016-06-12 15:39:36 (UTC+0)
Subscribers
darthbhyrava
jayvdb
Legoktm
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
A script which takes a revision ID on the wiki and thanks it on behalf of the user logged in.
Syntax:
python pwb.py thanks [rev]
Params
-rev: - The value of the revisionID to be thanked.
(Start with hardcoded revision 217210 on test:test)
I can call the Thanks API for this, which must be called by `action=thank`. It needs the params `rev`, `source` (optional),
and token=csrf, I must get the csrf token via the Tokens API. And I must have site and user credentials working.
"""
from
__future__
import
absolute_import
,
unicode_literals
import
pywikibot
import
requests
# import urllib
# import urllib2
def
thank_rev
(
rev_id
):
"""
Thank the given revision ID on the wiki on behalf of the user logged in.
"""
#Login into the wiki
site
=
pywikibot
.
Site
()
site
.
login
()
#Get csrf token from site.
token
=
site
.
tokens
[
'csrf'
]
#token = token[:-2]+"%2B%5C"
print
rev_id
print
token
#GET request (doesn't work, tokens need to be in the POST body):
#response = urllib2.urlopen("https://test.wikipedia.org/w/api.php?action=thank&format=json&rev={0}&token={1}&source=diff".format(rev_id, token))
#html = response.read()
#print html
#Make a POST request to thank the rev_id. (doesn't work, leading to bad token errors)
# url = 'https://test.wikipedia.org/w/api.php?action=thank&format=json'
# values = {'rev' : rev_id,
# 'source' : 'test_thank',
# 'token' : token }
# data = urllib.urlencode(values)
# req = urllib2.Request(url, data)
# response = urllib2.urlopen(req)
# html = response.read()
# print html
#Using requests to make GET or POST requests instead of urlib2
#r = requests.get("https://test.wikipedia.org/w/api.php?action=thank&format=json&rev={0}&token={1}&source=diff".format(rev_id, token))
values
=
{
'rev'
:
rev_id
,
'source'
:
'test_thank'
,
'token'
:
token
}
r
=
requests
.
post
(
"https://test.wikipedia.org/w/api.php?action=thank&format=json"
,
data
=
values
)
print
(
r
.
text
)
def
main
(
*
args
):
"""
Proces command line arguments and thank the rev
"""
# Process the args
local_args
=
pywikibot
.
handle_args
(
args
)
for
arg
in
local_args
:
option
,
sep
,
value
=
arg
.
partition
(
':'
)
if
option
==
'-rev'
:
rev_id
=
int
(
value
)
#Call the thank method
thank_rev
(
rev_id
)
if
__name__
==
"__main__"
:
main
()
Event Timeline
darthbhyrava
created this paste.
Jun 12 2016, 3:39 PM
2016-06-12 15:39:36 (UTC+0)
darthbhyrava
mentioned this in
T137462: GSoC: Pywikibot-Thanks | Meeting 5 | 10th June
.
Log In to Comment