Last active
August 29, 2015 14:09
-
-
Save danmichaelo/8ef75811e74cd9d76cfc to your computer and use it in GitHub Desktop.
Bot: Datomerking av vedlikeholdsmaler
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# encoding=utf-8 | |
import json | |
import time | |
from mwclient import Site | |
from mwtemplates import TemplateEditor | |
import logging | |
import logging.handlers | |
logger = logging.getLogger('bot') | |
logger.setLevel(logging.DEBUG) | |
formatter = logging.Formatter('[%(asctime)s %(levelname)s] %(message)s') | |
console_handler = logging.StreamHandler() | |
console_handler.setLevel(logging.INFO) | |
console_handler.setFormatter(formatter) | |
logger.addHandler(console_handler) | |
warn_handler = logging.FileHandler('warnings.log') | |
warn_handler.setLevel(logging.WARNING) | |
warn_handler.setFormatter(formatter) | |
logger.addHandler(warn_handler) | |
logger.info('Starter...') | |
def locate_template(ed, tplNames): | |
for n in tplNames: | |
if n in ed.templates: | |
return ed.templates[n][0] | |
return None | |
def locate_date(page, tplNames): | |
ts = None | |
for rev in page.revisions(prop='timestamp|content'): | |
if '*' not in rev: | |
return None | |
te = TemplateEditor(rev['*']) | |
tpl = locate_template(te, tplNames) | |
if tpl is None: | |
return ts | |
elif 'timestamp' not in rev: | |
return None | |
else: | |
ts = rev['timestamp'] | |
def main(): | |
config = json.load(open('config.json', 'r')) | |
site = Site(('https', 'no.wikipedia.org'), clients_useragent=u'Datomerking av vedlikeholdsmaler. Run by [[User:Danmichaelo]]. BasedOnMwClient/0.7') | |
site.login(config['username'], config['password']) | |
tplNames = ['Opprydning'] | |
tplPage = site.pages[u'Mal:%s' % (tplNames[0])] | |
tplNames.extend([x.page_title for x in tplPage.backlinks(filterredir='redirects')]) | |
for page in tplPage.embeddedin(): | |
te = TemplateEditor(page.text()) | |
tpl = locate_template(te, tplNames) | |
if tpl is None: | |
logger.warn(u'%s: Malen ble ikke funnet direkte på siden.' % (page.page_title)) | |
continue | |
if 'dato' in tpl.parameters: | |
logger.debug(u'%s: {{%s}} har allerede dato-parameter' % (page.page_title, tpl.page_title)) | |
continue | |
dato = locate_date(page, tplNames) | |
if dato is None: | |
logger.warn(u'%s: Fant ikke tidspunktet da malen ble satt inn.' % (page.page_title)) | |
continue | |
dato = time.strftime('%Y-%m-%d', dato) | |
tpl.parameters['dato'] = dato | |
logger.info(u'[[%s]]: Legger til |dato=%s' % (page.page_title, dato)) | |
# page.save(te.wikitext(), u'Bot: Legger inn |dato=%s i {{%s}}' % (dato, tpl.page_title) | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment