Adrian Short 11 år sedan
incheckning
6ce6aae3d3
1 ändrade filer med 61 tillägg och 0 borttagningar
  1. +61
    -0
      csv2georss.rb

+ 61
- 0
csv2georss.rb Visa fil

@@ -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

Laddar…
Avbryt
Spara