English Wikipedia @ Freddythechick:Database reports/Recently created biographies of living people/Configuration

newbios.py

<syntaxhighlight lang="python">

  1. !/usr/bin/env python2.5
  1. Copyright 2009 bjweeks, MZMcBride
  1. This program is free software: you can redistribute it and/or modify
  2. it under the terms of the GNU General Public License as published by
  3. the Free Software Foundation, either version 3 of the License, or
  4. (at your option) any later version.
  1. This program is distributed in the hope that it will be useful,
  2. but WITHOUT ANY WARRANTY; without even the implied warranty of
  3. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  4. GNU General Public License for more details.
  1. You should have received a copy of the GNU General Public License
  2. along with this program. If not, see <http://www.gnu.org/licenses/>.

import datetime import MySQLdb import re import wikitools import settings

report_title = settings.rootpage + 'Recently created biographies of living people'

report_template = u Recently created biographies of living people; data as of %s.

%s

%s

wiki = wikitools.Wiki(settings.apiurl) wiki.login(settings.username, settings.password)

htime = re.sub(r'[ ]+0', ' ', (datetime.datetime.utcnow() - datetime.timedelta(days=1)).strftime('%B %d')) qtime = (datetime.datetime.utcnow() - datetime.timedelta(days=1)).strftime('%Y%m%d')

conn = MySQLdb.connect(host=settings.host, db=settings.dbname, read_default_file='~/.my.cnf') cursor = conn.cursor() cursor.execute( /* newbios.py SLOW_OK */ SELECT

 page_title

FROM recentchanges JOIN page ON page_id = rc_cur_id JOIN categorylinks ON cl_from = rc_cur_id WHERE rc_namespace = 0 AND page_is_redirect = 0 AND cl_to = "Living_people" AND rc_new = 1 AND (SELECT

      MIN(rev_timestamp)
    FROM revision
    WHERE rev_page = rc_cur_id) LIKE "%s%%";

 % qtime)

i = 1 output = [] for row in cursor.fetchall():

   page_title = u'%s' % unicode(row[0], 'utf-8')
   full_page_title = u'%s' % page_title
   talk_page = wikitools.Page(wiki, 'Talk:%s' % page_title, followRedir=False)
   table_row = u| %d

| %s |- % (i, full_page_title)

   output.append(table_row)
   i += 1
   if not talk_page.exists:
talk_page.edit(text='
 Biography NA‑class
 Lua error in mw.title.lua at line 346: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').This page is within the scope of WikiProject Biography, a collaborative effort to create, develop and organize Wikipedia's articles about people. All interested editors are invited to join the project and contribute to the discussion. For instructions on how to use this banner, please refer to the documentation.
NAThis page does not require a rating on Wikipedia's content assessment scale.
', summary=settings.newpageeditsumm, bot=1, skipmd5=True)
   elif talk_page.exists and u'Template:WPBiography' not in talk_page.getTemplates():
talk_page.edit(prependtext='
 Biography NA‑class
 Lua error in mw.title.lua at line 346: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').This page is within the scope of WikiProject Biography, a collaborative effort to create, develop and organize Wikipedia's articles about people. All interested editors are invited to join the project and contribute to the discussion. For instructions on how to use this banner, please refer to the documentation.
NAThis page does not require a rating on Wikipedia's content assessment scale.
\n', summary=settings.addtemplateeditsumm, bot=1, skipmd5=True)

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, htime, '\n'.join(output)) report_text = report_text.encode('utf-8') report.edit(report_text, summary=settings.editsumm, bot=1)

cursor.close() conn.close() </syntaxhighlight>

crontab

<syntaxhighlight lang="text"> 8 0 * * * python ~/scripts/biobot/newbios.py > /dev/null </syntaxhighlight>