From cce22311a59de94e982de9816e57f7dc2927494f Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Mon, 1 Oct 2018 20:54:38 +0200 Subject: Generate single html file with all graphs inline. This makes the links in the svg's work properly on the page. --- ramaskrik-program.rb | 52 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 21 deletions(-) (limited to 'ramaskrik-program.rb') diff --git a/ramaskrik-program.rb b/ramaskrik-program.rb index c2ba006..3c56edc 100644 --- a/ramaskrik-program.rb +++ b/ramaskrik-program.rb @@ -15,6 +15,7 @@ # along with this program. If not, see . require 'date' +require 'erb' require 'nokogiri' require 'open-uri' require 'room-schedule' @@ -37,26 +38,35 @@ class Movie end end -doc = Nokogiri::HTML(open("https://ramaskrik.no/program/")) -movies = doc.css(".kultur-type-movie").map { |movie| Movie.new(movie) } -days = movies.group_by { |movie| movie.start_time.strftime("%A %d.%m.%Y") } -days.each do |d, movies| - rooms = movies.group_by { |m| m.venue }.delete_if { |t, _| t == "Ramaskrik" } - - graph = SVG::Graph::RoomSchedule.new({ - graph_title: d, - show_graph_title: true, - show_x_guidelines: true, - width: 1280, - height: rooms.keys.length * 100 + 25, - key: false, - x_label_format: "%H:%M", - timescale_divisions: "30 minutes", - }) - - rooms.each do |title, data| - graph.add_data(title: title, data: data) - end +def scrape_program + doc = Nokogiri::HTML(open("https://ramaskrik.no/program/")) + doc.css(".kultur-type-movie").map { |movie| Movie.new(movie) } +end + +def generate_graphs + days = scrape_program.group_by { |movie| movie.start_time.strftime("%A %d.%m.%Y") } + days.map do |d, movies| + rooms = movies.group_by { |m| m.venue }.delete_if { |t, _| t == "Ramaskrik" } + + graph = SVG::Graph::RoomSchedule.new({ + graph_title: d, + show_graph_title: true, + show_x_guidelines: true, + width: 1280, + height: rooms.keys.length * 100 + 25, + key: false, + x_label_format: "%H:%M", + timescale_divisions: "30 minutes", + }) - IO.write("#{d}-program.svg", graph.burn()) + rooms.each do |title, data| + graph.add_data(title: title, data: data) + end + + yield graph + end end + +t = ERB.new(IO.read("index.html.erb")) +IO.write("index.html", t.result(binding)) + -- cgit v1.2.3