diff --git a/neinomat-radio-chaotica b/neinomat-radio-chaotica index b02f2f3..d9277aa 100755 --- a/neinomat-radio-chaotica +++ b/neinomat-radio-chaotica @@ -1,18 +1,38 @@ #!/usr/bin/env ruby -require 'mediawikibot' +$:.unshift('vendor/ruby-mediawiki/lib') +$:.unshift('vendor/htree') +require 'mediawiki/dotfile' +@wiki = MediaWiki.dotfile(nil,'entropia') -if ARGV.size() != 2 - $stderr.print($0 + " \n") - exit(1) -end +def parse_template(title, template) + template_re = Regexp.new("\\\{\\\{" + template + "(.*?)\\\}\\\}") + + fields = {} + + fields_string = @wiki.article(title).text.scan(template_re)[0][0] -b = MediaWikiBot::WikiBot.new("http://entropia.de/wiki/") -b.login(ARGV[0], ARGV[1]) + 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" -b.get_what_uses_template(template).each do |page| - if erste_sendung = b.parse_template(page, template)["erste_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 @@ -20,4 +40,6 @@ b.get_what_uses_template(template).each do |page| end end -b.edit("Benutzer:Neingeist/Radio Chaotica-Liste", body, "Test") +a = @wiki.article("Benutzer:Neingeist/Radio Chaotica-Liste") +a.text = body +a.submit("Radio Chaotica-Liste")