|
@@ -0,0 +1,61 @@ |
|
|
|
|
|
require 'csv' |
|
|
|
|
|
require 'pp' |
|
|
|
|
|
require 'erb' |
|
|
|
|
|
require 'time' |
|
|
|
|
|
|
|
|
|
|
|
# $ ruby csv2georss.rb myfile.csv > feed.xml |
|
|
|
|
|
|
|
|
|
|
|
template = ERB.new <<-EOF |
|
|
|
|
|
<?xml version="1.0" encoding="UTF-8" ?> |
|
|
|
|
|
<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"> |
|
|
|
|
|
<channel> |
|
|
|
|
|
<title><%= channel[:title] %></title> |
|
|
|
|
|
<link><%= channel[:link] %></link> |
|
|
|
|
|
<description><%= channel[:description] %></description> |
|
|
|
|
|
<pubDate><%= Time.now.rfc822 %></pubDate> |
|
|
|
|
|
<% items.each do |item| %> |
|
|
|
|
|
<item> |
|
|
|
|
|
<title><%= item[:title] %></title> |
|
|
|
|
|
<link><%= item[:link] %></link> |
|
|
|
|
|
<description><![CDATA[<%= item[:description] %>]]></description> |
|
|
|
|
|
<pubDate><%= item[:pubDate] %></pubDate> |
|
|
|
|
|
<author><%= item[:author] %></author> |
|
|
|
|
|
<guid isPermalink="true"><%= item[:guid] %></guid> |
|
|
|
|
|
<geo:lat><%= item[:lat] %></geo:lat> |
|
|
|
|
|
<geo:long><%= item[:long] %></geo:long> |
|
|
|
|
|
</item> |
|
|
|
|
|
<% end %> |
|
|
|
|
|
</channel> |
|
|
|
|
|
</rss> |
|
|
|
|
|
EOF |
|
|
|
|
|
|
|
|
|
|
|
channel = { |
|
|
|
|
|
:title => "Open Plaques", |
|
|
|
|
|
:link => "http://openplaques.org/", |
|
|
|
|
|
:description => "Documenting the historical links between people and places, as recorded by commemorative plaques." |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
items = [] |
|
|
|
|
|
line = 0 |
|
|
|
|
|
|
|
|
|
|
|
CSV.foreach(ARGV[0]) do |row| |
|
|
|
|
|
line += 1 |
|
|
|
|
|
next if line == 1 # skip header row |
|
|
|
|
|
|
|
|
|
|
|
link = "http://www.plaqueguide.com/?locationid=" + row[0] |
|
|
|
|
|
|
|
|
|
|
|
item = { |
|
|
|
|
|
:id => row[0], # id |
|
|
|
|
|
:title => row[3], # location |
|
|
|
|
|
:link => link, |
|
|
|
|
|
:description => row[32], # note1 |
|
|
|
|
|
:pubDate => Time.now.rfc822, |
|
|
|
|
|
:author => "feedback@openplaques.org", |
|
|
|
|
|
:guid => link, |
|
|
|
|
|
:lat => row[5], |
|
|
|
|
|
:long => row[6] |
|
|
|
|
|
} |
|
|
|
|
|
items << item |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
puts template.result |