#!/usr/bin/env ruby $:.unshift('vendor/ruby-mediawiki/lib') $:.unshift('vendor/htree') require 'mediawiki/dotfile' @wiki = MediaWiki.dotfile(nil,'entropia') def parse_template(title, template) template_re = Regexp.new("\\\{\\\{" + template + "(.*?)\\\}\\\}") fields = {} fields_string = @wiki.article(title).text.scan(template_re)[0][0] inlink = 0 field = "" fields_string += "|" unless fields_string.match(/\|$/) fields_string.split(//).each do |c| if c == "|" && inlink == 0 (key, value) = field.split(/=/) fields[key] = value field = "" else inlink += 1 if c == "[" inlink -= 1 if c == "]" field += c end end fields end body = "" template = "Vorlage:Radio Chaotica-Sendung" @wiki.article(template).what_links_here.each do |page| if erste_sendung = parse_template(page, template)["erste_sendung"] datum = erste_sendung.gsub(/\s*um\s*\d+:\d+$/,"") body += "* " + datum + " [[" + page + "]]\n" else $stderr.print(page, ": erste_sendung nicht gesetzt") end end a = @wiki.article("Benutzer:Neingeist/Radio Chaotica-Liste") a.text = body a.submit("Radio Chaotica-Liste")