diff --git a/neinomat-radio-chaotica b/neinomat-radio-chaotica index 2177a0c..42e8278 100755 --- a/neinomat-radio-chaotica +++ b/neinomat-radio-chaotica @@ -5,8 +5,6 @@ require 'cgi' require 'date' require 'erb' -@wiki = MediaWiki.dotfile(nil,'entropia') - #---------------------------------------------------------------------------- # Constants @@ -63,29 +61,30 @@ ein podcast der sendungen des entropia e.v., chaos computer club karlsruhe auf q ' TPL_ITEM = ' - <%= CGI::escapeHTML(t["titel"]) %> - <%= t["url"] %> - <%= CGI::escapeHTML(t["titel"]) %> + <%= CGI::escapeHTML(episode["title"]) %> + <%= episode["url"] %> + <%= CGI::escapeHTML(episode["title"]) %> Talk Radio - " length="<%= t["length"] %>" type="audio/mpeg" /> + " length="<%= episode["length"] %>" type="audio/mpeg" /> - <%= t["url"] %> - <%= t["pubdate"] %> - <%= t["discussion"] %> - <%= CGI::escapeHTML(t["titel"]) %> + <%= episode["url"] %> + <%= episode["pubdate"] %> + <%= episode["discussion"] %> + <%= CGI::escapeHTML(episode["title"]) %> radio@entropia.de no Entropia e.V. Karlsruhe entropia,karlsruhe,ccc,hacking,computer,technology,society,chaosradio,chaos,politics - <%= t["duration"] %> - <%= CGI::escapeHTML(t["titel"]) %> - <%= CGI::escapeHTML(t["titel"]) %> + <%= episode["duration"] %> + <%= CGI::escapeHTML(episode["title"]) %> + <%= CGI::escapeHTML(episode["title"]) %> ' #---------------------------------------------------------------------------- +# Some helper functions def parse_template(title, template) template_re = Regexp.new("\\\{\\\{" + template + "(.*?)\\\}\\\}") @@ -117,40 +116,45 @@ def datum2isodate(datum) end #---------------------------------------------------------------------------- -sendungen = [] +# Get episodes from wiki + +@wiki = MediaWiki.dotfile(nil,'entropia') template = "Vorlage:Radio Chaotica-Sendung" +episodes = [] @wiki.article(template).what_links_here.each do |page| # puts page # DEBUG if erste_sendung = parse_template(page, template)["erste_sendung"] - sendung = {} - sendung["datum"] = erste_sendung.gsub(/\s*um\s*\d+:\d+$/,"") - sendung["titel"] = page - sendung["url"] = "http://entropia.de/wiki/#{CGI::escape(page)}" - sendung["discussion"] = "http://entropia.de/wiki/Diskussion:#{CGI::escape(page)}" - sendung["download"] = parse_template(page, template)["download"] - + episode = { + "title" => page, + "url" => "http://entropia.de/wiki/#{CGI::escape(page)}", + "discussion" => "http://entropia.de/wiki/Diskussion:#{CGI::escape(page)}", + "enclosure_url" => parse_template(page, template)["download"], + "date" => Date.today(), # fallback + } + + # Get a real date - if sendung["datum"] !~ /^[0-9]{2}\.[0-9]{2}\.[0-9]{4}.*$/ - $stderr.puts "#{sendung["datum"]} looks funny, fall back to today." - sendung["date"] = Date.today() + erste_sendung.gsub!(/\s*um\s*\d+:\d+$/,"") + if erste_sendung !~ /^[0-9]{2}\.[0-9]{2}\.[0-9]{4}.*$/ + $stderr.puts "Field '#{erste_sendung}' in #{episode["url"]} looks funny, fall back to today." else - sendung["date"] = Date.parse(datum2isodate(sendung["datum"])) + episode["date"] = Date.parse(datum2isodate(erste_sendung)) end - sendung["pubdate"] = sendung["date"].strftime(RFC822) + episode["pubdate"] = episode["date"].strftime(RFC822) + # FIXME - sendung["length"] = 57671680 - sendung["duration"] = "00:59:59" + episode["length"] = 57671680 + episode["duration"] = "00:59:59" + - sendungen.push(sendung) - else - $stderr.puts page, ": erste_sendung nicht gesetzt" + episodes.push(episode) end # break # DEBUG end -sendungen = sendungen.sort do |x,y| +episodes = episodes.sort do |x,y| y["date"] <=> x["date"] end @@ -158,7 +162,7 @@ end # Generate RSS items = "" -sendungen.each do |t| +episodes.each do |episode| items += ERB.new(TPL_ITEM).result(binding); end