You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.1 KiB
Ruby
46 lines
1.1 KiB
Ruby
#!/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")
|