Better feed now
This commit is contained in:
		
							parent
							
								
									f5b07db285
								
							
						
					
					
						commit
						d0ffc55b65
					
				
					 3 changed files with 46 additions and 9 deletions
				
			
		| 
						 | 
					@ -16,6 +16,7 @@ require "#{$0}.templates.rb"
 | 
				
			||||||
#----------------------------------------------------------------------------
 | 
					#----------------------------------------------------------------------------
 | 
				
			||||||
# Some helper functions
 | 
					# Some helper functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get HEAD info from an URL
 | 
				
			||||||
def head(url)
 | 
					def head(url)
 | 
				
			||||||
  uri = URI.parse(url)
 | 
					  uri = URI.parse(url)
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
| 
						 | 
					@ -24,6 +25,16 @@ def head(url)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Q&D text-to-html
 | 
				
			||||||
 | 
					def to_html(text)
 | 
				
			||||||
 | 
					  html = text.clone
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					  html.gsub!(/(http:\/\/\S*)/, '<a href="\1">\1</a>')
 | 
				
			||||||
 | 
					  html.gsub!(/\n/, "<br/>")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  html
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#----------------------------------------------------------------------------
 | 
					#----------------------------------------------------------------------------
 | 
				
			||||||
# Get episodes from wiki
 | 
					# Get episodes from wiki
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,19 +45,26 @@ episodes = []
 | 
				
			||||||
@wiki.article(template).what_links_here.each do |page|
 | 
					@wiki.article(template).what_links_here.each do |page|
 | 
				
			||||||
  # puts page # DEBUG
 | 
					  # puts page # DEBUG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if erste_sendung = parse_template(page, template)["erste_sendung"]
 | 
					  episode_info = parse_template(page, template)
 | 
				
			||||||
 | 
					  if erste_sendung = episode_info["erste_sendung"]
 | 
				
			||||||
    episode = {
 | 
					    episode = {
 | 
				
			||||||
      "title"         => page,
 | 
					      "title"         => page,
 | 
				
			||||||
      "url"           => @wiki.full_article_url(page),
 | 
					      "url"           => @wiki.full_article_url(page),
 | 
				
			||||||
      "discussion"    => @wiki.full_article_url("Diskussion:#{page}"),
 | 
					      "discussion"    => @wiki.full_article_url("Diskussion:#{page}"),
 | 
				
			||||||
      "enclosure_url" => parse_template(page, template)["download"],
 | 
					      "enclosure_url" => episode_info["download"].chomp,
 | 
				
			||||||
      "date"          => Date.today(), # fallback
 | 
					      "date"          => Date.today(), # fallback
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					      "description"   => episode_info["beschreibung"] || "",
 | 
				
			||||||
 | 
					      "summary"       => episode_info["beschreibung"] || "",
 | 
				
			||||||
    } 
 | 
					    } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Check problem fields
 | 
				
			||||||
 | 
					    MediaWiki::logger.warn "Field beschreibung in #{episode["url"]} empty" if episode["description"] == ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Get a real date
 | 
					    # Get a real date
 | 
				
			||||||
    erste_sendung.gsub!(/\s*um\s*\d+:\d+$/,"")
 | 
					    erste_sendung.gsub!(/\s*um\s*\d+:\d+$/,"")
 | 
				
			||||||
    if erste_sendung !~ /^[0-9]{2}\.[0-9]{2}\.[0-9]{4}.*$/
 | 
					    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."
 | 
					      MediaWiki::logger.warn "Field erste_sendung='#{erste_sendung}' in #{episode["url"]} looks funny, fall back to today."
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      episode["date"] = Date.parse(datum2isodate(erste_sendung))
 | 
					      episode["date"] = Date.parse(datum2isodate(erste_sendung))
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
| 
						 | 
					@ -57,12 +75,16 @@ episodes = []
 | 
				
			||||||
    episode["length"] = head["content-length"]
 | 
					    episode["length"] = head["content-length"]
 | 
				
			||||||
    episode["type"]   = head["content-type"]
 | 
					    episode["type"]   = head["content-type"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # More foo
 | 
				
			||||||
 | 
					    episode["summary"] =         episode["summary"] + ERB.new(TPL_SUMMARY_ADD).result(binding)
 | 
				
			||||||
 | 
					    episode["content:encoded"] = to_html(episode["summary"])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # We just assume that the episode's length is an hour or so
 | 
					    # We just assume that the episode's length is an hour or so
 | 
				
			||||||
    episode["duration"] = "00:59:59"
 | 
					    episode["duration"] = "00:59:59"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    episodes.push(episode)
 | 
					    episodes.push(episode)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  # $stderr.puts "DEBUG: Only crawling one episode"; break 
 | 
					  #MediaWiki::logger.warn "DEBUG: Only crawling one episode"; break 
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Sort episodes, starting with last
 | 
					# Sort episodes, starting with last
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,6 +32,9 @@ TPL_RSS = '<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
<itunes:subtitle xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">ein podcast der sendungen des entropia e.v., chaos computer club karlsruhe auf querfunk, 104.8 mhz</itunes:subtitle>
 | 
					<itunes:subtitle xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">ein podcast der sendungen des entropia e.v., chaos computer club karlsruhe auf querfunk, 104.8 mhz</itunes:subtitle>
 | 
				
			||||||
<itunes:summary xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
 | 
					<itunes:summary xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
 | 
				
			||||||
ein podcast der sendungen des entropia e.v., chaos computer club karlsruhe auf querfunk, 104.8 mhz
 | 
					ein podcast der sendungen des entropia e.v., chaos computer club karlsruhe auf querfunk, 104.8 mhz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					infos zur sendung unter:
 | 
				
			||||||
 | 
					http://entropia.de/wiki/Radio_Chaotica
 | 
				
			||||||
</itunes:summary>
 | 
					</itunes:summary>
 | 
				
			||||||
<itunes:image xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" href="http://podcast.entropia.de/chaotica-300x300-crappy.png"/>
 | 
					<itunes:image xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" href="http://podcast.entropia.de/chaotica-300x300-crappy.png"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,14 +55,14 @@ TPL_ITEM = '
 | 
				
			||||||
<item>
 | 
					<item>
 | 
				
			||||||
  <title><%= CGI::escapeHTML(episode["title"]) %></title> 
 | 
					  <title><%= CGI::escapeHTML(episode["title"]) %></title> 
 | 
				
			||||||
  <link><%= episode["url"] %></link>
 | 
					  <link><%= episode["url"] %></link>
 | 
				
			||||||
  <description><%= CGI::escapeHTML(episode["title"]) %></description>
 | 
					  <description><%= CGI::escapeHTML(episode["description"]) %></description>
 | 
				
			||||||
  <category>Talk Radio</category>
 | 
					  <category>Talk Radio</category>
 | 
				
			||||||
  <enclosure url="<%= episode["enclosure_url"] %>" length="<%= episode["length"] %>" type="<%= episode["type"] %>" />
 | 
					  <enclosure url="<%= episode["enclosure_url"] %>" length="<%= episode["length"] %>" type="<%= episode["type"] %>" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <guid isPermaLink="true"><%= episode["url"] %></guid>
 | 
					  <guid isPermaLink="true"><%= episode["url"] %></guid>
 | 
				
			||||||
  <pubDate><%= episode["pubdate"] %></pubDate>
 | 
					  <pubDate><%= episode["pubdate"] %></pubDate>
 | 
				
			||||||
  <comments><%= episode["discussion"] %></comments>
 | 
					  <comments><%= episode["discussion"] %></comments>
 | 
				
			||||||
  <content:encoded><%= CGI::escapeHTML(episode["title"]) %></content:encoded>
 | 
					  <content:encoded><%= CGI::escapeHTML(episode["content:encoded"]) %></content:encoded>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <author>radio@entropia.de</author>
 | 
					  <author>radio@entropia.de</author>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,7 +70,19 @@ TPL_ITEM = '
 | 
				
			||||||
  <itunes:author xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">Entropia e.V. Karlsruhe</itunes:author>
 | 
					  <itunes:author xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">Entropia e.V. Karlsruhe</itunes:author>
 | 
				
			||||||
  <itunes:keywords xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">entropia,karlsruhe,ccc,hacking,computer,technology,society,chaosradio,chaos,politics</itunes:keywords>
 | 
					  <itunes:keywords xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">entropia,karlsruhe,ccc,hacking,computer,technology,society,chaosradio,chaos,politics</itunes:keywords>
 | 
				
			||||||
  <itunes:duration xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><%= episode["duration"] %></itunes:duration>
 | 
					  <itunes:duration xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><%= episode["duration"] %></itunes:duration>
 | 
				
			||||||
  <itunes:subtitle xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><%= CGI::escapeHTML(episode["title"]) %></itunes:subtitle>
 | 
					  <itunes:subtitle xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
 | 
				
			||||||
  <itunes:summary xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><%= CGI::escapeHTML(episode["title"]) %></itunes:summary>
 | 
					    <%= CGI::escapeHTML(episode["description"]) %>
 | 
				
			||||||
 | 
					  </itunes:subtitle>
 | 
				
			||||||
 | 
					  <itunes:summary xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><%= CGI::escapeHTML(episode["summary"]) %></itunes:summary>
 | 
				
			||||||
</item>
 | 
					</item>
 | 
				
			||||||
'
 | 
					'
 | 
				
			||||||
 | 
					TPL_SUMMARY_ADD = '
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Weitere Informationen zur Sendung gibt es unter:
 | 
				
			||||||
 | 
					<%= episode["url"] %>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ihr habt Fragen und Anregungen? Hinterlasst sie uns auf der Diskussionsseite zur Sendung oder per Mail an radio@entropia.de:
 | 
				
			||||||
 | 
					<%= episode["discussion"] %>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Weitere Sendungen findet ihr hier: Radio Chaotica. Wir senden (fast ;-) jeden 3. Montag im Monat um 16:00 Uhr live auf Querfunk 104,8 MHz im Raum Karlsruhe. Für alle, die Querfunk nicht über UKW empfangen können, existiert auch der Querfunk Live-Stream (http://www.querfunk.de/live.html) oder natürlich unser Podcast - den ihr gerade lest oder hört :-)
 | 
				
			||||||
 | 
					'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
def parse_template(title, template)
 | 
					def parse_template(title, template)
 | 
				
			||||||
  template_re = Regexp.new("\\\{\\\{" + template + "(.*?)\\\}\\\}")
 | 
					  template_re = Regexp.new("\\\{\\\{" + template + "(.*?)\\\}\\\}", Regexp::MULTILINE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  fields = {}
 | 
					  fields = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue