diff --git a/polltemps.py b/polltemps.py new file mode 100755 index 0000000..87f1a38 --- /dev/null +++ b/polltemps.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python2.5 + +# Copyright 2011 bjweeks, MZMcBride, WOSlinker + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import datetime +import MySQLdb +import wikitools +import settings + +report_title = settings.rootpage + 'Template categories containing articles' + +report_template = u''' +Template categories containing articles; data as of %s. + +{| class="wikitable sortable" style="width:100%%; margin:auto;" +|- style="white-space:nowrap;" +! No. +! Category +|- +%s +|} +''' + +wiki = wikitools.Wiki(settings.apiurl) +wiki.login(settings.username, settings.password) + +conn = MySQLdb.connect(host=settings.host, db=settings.dbname, read_default_file='~/.my.cnf') +cursor = conn.cursor() +cursor.execute(''' +/* polltemps.py SLOW_OK */ +SELECT + ns_name, + page_title +FROM page AS pg1 +JOIN toolserver.namespace +ON dbname = %s +AND pg1.page_namespace = ns_id +JOIN templatelinks AS tl +ON pg1.page_id = tl.tl_from +WHERE pg1.page_namespace = 14 +AND tl.tl_namespace = 10 +AND tl.tl_title = 'Template_category' +AND EXISTS (SELECT + 1 + FROM page AS pg2 + JOIN categorylinks AS cl + ON pg2.page_id = cl.cl_from + WHERE pg2.page_namespace = 0 + AND pg1.page_title = cl.cl_to); +''' , settings.dbname) + +i = 1 +output = [] +for row in cursor.fetchall(): + ns_name = unicode(row[0], 'utf-8') + cl_to = unicode(row[1], 'utf-8') + category_link = u'[[:%s:%s|%s]]' % (ns_name, cl_to, cl_to) + table_row = u'''| %d +| %s +|-''' % (i, category_link) + output.append(table_row) + i += 1 + +cursor.execute('SELECT UNIX_TIMESTAMP() - UNIX_TIMESTAMP(rc_timestamp) FROM recentchanges ORDER BY rc_timestamp DESC LIMIT 1;') +rep_lag = cursor.fetchone()[0] +current_of = (datetime.datetime.utcnow() - datetime.timedelta(seconds=rep_lag)).strftime('%H:%M, %d %B %Y (UTC)') + +report = wikitools.Page(wiki, report_title) +report_text = report_template % (current_of, '\n'.join(output)) +report_text = report_text.encode('utf-8') +report.edit(report_text, summary=settings.editsumm, bot=1) + +cursor.close() +conn.close()