summaryrefslogtreecommitdiff
path: root/autopatrol.rb
diff options
context:
space:
mode:
Diffstat (limited to 'autopatrol.rb')
-rwxr-xr-xautopatrol.rb50
1 files changed, 50 insertions, 0 deletions
diff --git a/autopatrol.rb b/autopatrol.rb
new file mode 100755
index 0000000..cabc875
--- /dev/null
+++ b/autopatrol.rb
@@ -0,0 +1,50 @@
+#!/usr/bin/env ruby
+# -*- coding: utf-8 -*-
+
+load 'mwapi.rb'
+require 'yaml'
+require 'pp'
+
+mw = MWApi.new('https://wiki.parabolagnulinux.org/api.php')
+credentials = YAML.load_file('credentials.yml')
+mw.login(credentials['username'], credentials['password'])
+
+print "Finding autopatrol users...\n"
+users = []
+aufrom = ''
+while not aufrom.nil? do
+ audata = mw.query(
+ :list => :allusers,
+ :aurights => :autopatrol,
+ :aulimit => 5000,
+ :aufrom => aufrom)
+ users.concat(audata['query']['allusers'])
+ aufrom = (audata['query-continue'].nil?) ? nil : audata['query-continue']['allusers']['aufrom']
+end
+
+print "Finding unpatrolled edits by autopatrol users...\n"
+changes = []
+users.each do |user|
+ print " -> #{user['name']}\n"
+ rccontinue = ''
+ while not rccontinue.nil?
+ query = {
+ :list => :recentchanges,
+ :rcuser => user['name'],
+ :rclimit => 5000,
+ :rcshow => '!patrolled',
+ :rctoken => :patrol,
+ }
+ if rccontinue.length > 0
+ query.merge!({:rccontinue => rccontinue})
+ end
+ rcdata = mw.query(query)
+ changes.concat(rcdata['query']['recentchanges'])
+ rccontinue = (rcdata['query-continue'].nil?) ? nil : rcdata['query-continue']['recentchanges']['rccontinue']
+ end
+end
+
+changes.each do |change|
+ print "Patrolling change #{change['rcid']} to #{change['title']}\n"
+ mw.patrol({:rcid => change['rcid'], :token => change['patroltoken']})
+end