|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
import os, time, json
|
|
|
|
from sys import stdin, stderr, stdout
|
|
|
|
from pprint import pprint
|
|
|
|
import subprocess
|
|
|
|
import mwclient
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
site = mwclient.Site('en.wikipedia.org')
|
|
|
|
print(site)
|
|
|
|
|
|
|
|
previous_result = '' # keep track of changes, only print when there are new results (when the wikipage changed)
|
|
|
|
|
|
|
|
timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
|
|
|
|
log = open('sandbox-score-revids.txt', 'a+')
|
|
|
|
log.write('''* * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
|
|
Logging sandbox-score-revids.py {}
|
|
|
|
|
|
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * *'''.format(timestamp))
|
|
|
|
|
|
|
|
while True:
|
|
|
|
|
|
|
|
page = site.Pages['User:Trustinformationws/sandbox']
|
|
|
|
# print(page)
|
|
|
|
|
|
|
|
revid = list(page.revisions())[0]['revid']
|
|
|
|
|
|
|
|
# model = 'draftquality'
|
|
|
|
# model = 'damaging'
|
|
|
|
# model = 'goodfaith'
|
|
|
|
model = 'goodfaith draftquality'
|
|
|
|
# model = 'wp10'
|
|
|
|
|
|
|
|
cmd = "echo '{\"rev_id\": "+str(revid)+"}' | ores score_revisions https://ores.wikimedia.org enwiki "+model
|
|
|
|
# print(cmd)
|
|
|
|
|
|
|
|
sub = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
|
|
output = sub.communicate()[0]
|
|
|
|
# print('>>> this is the current output', output)
|
|
|
|
output = str(output)
|
|
|
|
output = output.split('\\n')[2]
|
|
|
|
result = json.loads(output)
|
|
|
|
# pprint(result)
|
|
|
|
|
|
|
|
if result != previous_result:
|
|
|
|
|
|
|
|
if model == 'damaging':
|
|
|
|
true = result['score']['damaging']['score']['probability']['true']
|
|
|
|
false = result['score']['damaging']['score']['probability']['false']
|
|
|
|
x = '''\nLatest revid: {}. This edit is ...
|
|
|
|
... {} likely to be goodfaith,
|
|
|
|
... {} likely badfaith.'''.format(revid, true, false)
|
|
|
|
|
|
|
|
if model == 'draftquality':
|
|
|
|
ok = result['score']['draftquality']['score']['probability']['OK']
|
|
|
|
vandalism = result['score']['draftquality']['score']['probability']['vandalism']
|
|
|
|
spam = result['score']['draftquality']['score']['probability']['spam']
|
|
|
|
attack = result['score']['draftquality']['score']['probability']['attack']
|
|
|
|
x = '''\nLatest revid: {}. It is ...
|
|
|
|
... {} likely to be OK,
|
|
|
|
... {} likely to be vandalism,
|
|
|
|
... {} likely to be spam,
|
|
|
|
... {} likely to be an attack.'''.format(revid, ok, vandalism, spam, attack)
|
|
|
|
|
|
|
|
if model == 'wp10':
|
|
|
|
pprint(result)
|
|
|
|
|
|
|
|
if model == 'goodfaith':
|
|
|
|
true = result['score']['goodfaith']['score']['probability']['true']
|
|
|
|
false = result['score']['goodfaith']['score']['probability']['false']
|
|
|
|
x = '''\nLatest revid: {}. This edit is ...
|
|
|
|
... {} likely to be goodfaith,
|
|
|
|
... {} likely badfaith.'''.format(revid, true, false)
|
|
|
|
|
|
|
|
if model == 'goodfaith draftquality':
|
|
|
|
true = result['score']['goodfaith']['score']['probability']['true']
|
|
|
|
false = result['score']['goodfaith']['score']['probability']['false']
|
|
|
|
|
|
|
|
ok = result['score']['draftquality']['score']['probability']['OK']
|
|
|
|
vandalism = result['score']['draftquality']['score']['probability']['vandalism']
|
|
|
|
spam = result['score']['draftquality']['score']['probability']['spam']
|
|
|
|
attack = result['score']['draftquality']['score']['probability']['attack']
|
|
|
|
x = '''\nLatest revid: {}.
|
|
|
|
The last edit is ...
|
|
|
|
... {} likely to be goodfaith,
|
|
|
|
... {} likely badfaith.\n
|
|
|
|
The article quality ...
|
|
|
|
... {} likely to be OK,
|
|
|
|
... {} likely to be vandalism,
|
|
|
|
... {} likely to be spam,
|
|
|
|
... {} likely to be an attack.\n'''.format(revid, ok, vandalism, spam, attack, true, false)
|
|
|
|
|
|
|
|
print(x)
|
|
|
|
log.write(x)
|
|
|
|
|
|
|
|
previous_result = result
|
|
|
|
|
|
|
|
time.sleep(10)
|
|
|
|
|
|
|
|
log.close()
|