#!/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 damaging' # 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 damaging': # pprint(result) goodfaith = result['score']['goodfaith']['score']['probability']['true'] badfaith = result['score']['goodfaith']['score']['probability']['false'] warning = '' goodfaith_prediction = result['score']['goodfaith']['score']['prediction'] if goodfaith_prediction == False: warning = '\n*THIS PLAYER IS OUT OF THE GAME*\n' damaging = result['score']['damaging']['score']['probability']['true'] nondamaging = result['score']['damaging']['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 damaging.\n Some extra information: The article quality ... ... {} likely to be OK, ... {} likely to be vandalism, ... {} likely to be spam, ... {} likely to be an attack.\n {}'''.format(revid, goodfaith, damaging, ok, vandalism, spam, attack, warning) print(x) log.write(x) previous_result = result time.sleep(10) log.close()