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
 | 
			
		||||
 | 
			
		||||
# Get HEAD info from an URL
 | 
			
		||||
def head(url)
 | 
			
		||||
  uri = URI.parse(url)
 | 
			
		||||
 
 | 
			
		||||
| 
						 | 
				
			
			@ -24,6 +25,16 @@ def head(url)
 | 
			
		|||
  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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -34,19 +45,26 @@ episodes = []
 | 
			
		|||
@wiki.article(template).what_links_here.each do |page|
 | 
			
		||||
  # 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 = {
 | 
			
		||||
      "title"         => page,
 | 
			
		||||
      "url"           => @wiki.full_article_url(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
 | 
			
		||||
 
 | 
			
		||||
      "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
 | 
			
		||||
    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."
 | 
			
		||||
      MediaWiki::logger.warn "Field erste_sendung='#{erste_sendung}' in #{episode["url"]} looks funny, fall back to today."
 | 
			
		||||
    else
 | 
			
		||||
      episode["date"] = Date.parse(datum2isodate(erste_sendung))
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			@ -57,12 +75,16 @@ episodes = []
 | 
			
		|||
    episode["length"] = head["content-length"]
 | 
			
		||||
    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
 | 
			
		||||
    episode["duration"] = "00:59:59"
 | 
			
		||||
 | 
			
		||||
    episodes.push(episode)
 | 
			
		||||
  end
 | 
			
		||||
  # $stderr.puts "DEBUG: Only crawling one episode"; break 
 | 
			
		||||
  #MediaWiki::logger.warn "DEBUG: Only crawling one episode"; break 
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# Sort episodes, starting with last
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue