diff options
| -rw-r--r-- | README.md | 15 | ||||
| -rw-r--r-- | index.html.erb | 35 | ||||
| -rw-r--r-- | lib/events.rb | 2 | ||||
| -rw-r--r-- | lib/i18n.rb | 8 | ||||
| -rwxr-xr-x | ramaskrik-program.rb | 9 | ||||
| -rw-r--r-- | styles.css | 1 |
6 files changed, 43 insertions, 27 deletions
@@ -6,13 +6,14 @@ Siden som genereres av scriptet krever en nettleser med SVG 1.1 støtte, noe [de ## Bruksanvisning -Programmet tar en `.json` fil med data som input. Dataene må være en json liste (array) hvor hvert object i listen er en visning. Hver visning må ha følgende felter: +Programmet tar en `.json` fil med data som input. Dataene må være en json liste (array) hvor hvert objekt i listen er en visning. Hver visning må ha følgende felter: - title: tekst, Filmens tittel - venue: telst, Sal/auditorium/rom for visningen - start\_time: tid+dato i et noenlunde maskinlesbart standardformat (ISO8601 er fint!) - duration: Visningens lengde i sekunder - image: url til filmplakat (valgfritt) +- info_link: Lenke til informasjon om filmen Her er et eksempel fra en fil: @@ -23,7 +24,8 @@ Her er et eksempel fra en fil: "venue":"Storsalen", "start_time":"2023-10-19 10:30:00 +0200", "duration":"6300", - "image":"https://mff.dx.no/132216.jpeg?w=270&h=480&fit=crop&auto=compress" + "image":"https://mff.dx.no/132216.jpeg?w=270&h=480&fit=crop&auto=compress", + "info_link":"https://ramaskrik.no/the-rows-DXM20250679" }, { ... @@ -37,17 +39,16 @@ Kjør programmet slik: % ruby ramaskrik-program.rb <input-fil.json> ``` -Den skal da generere en `index.html` og en `program.ics` (kalender) fil i samme katalog. +Den skal da generere en webside under `build` katalogen, som inneholder alt som trengs for siden. -Last opp disse til et egnet sted på en webserver, og du har ditt eget ramaskrik program. +Last opp denne til et egnet sted på en webserver, og du har ditt eget ramaskrik program. -Programmet kan selvsagt brukes til å lage andre tilsvarende programoversikter også. Bare -tilpass koden og malene etter ønske. +Programmet kan selvsagt brukes til å lage andre tilsvarende programoversikter også. Bare tilpass koden og malene etter ønske. ## LISENS -Copyright (C) 2018 [Harald Eilertsen](haraldei@anduin.net) +Copyright (C) 2018,2025 [Eilertsens Kodeknekkeri](https://kodeknekkeriet.net) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/index.html.erb b/index.html.erb index 62f31d2..53b1465 100644 --- a/index.html.erb +++ b/index.html.erb @@ -9,25 +9,30 @@ <body> <h1><%= title %></h1> <section id="introduction"> - <p>Dette er en annen visning av programmet for skrekkfilmfestivalen - <a href="https://ramaskrik.no">Ramaskrik <%= year %></a>. Jeg laget det for - meg selv, for å få en bedre oversikt over hvilke filmer som går hvor og når. Offisielt program finner du - på <a href="https://ramaskrik.no/program/">Ramaskrik sine egne websider</a>. Denne siden ble generert - <%= Date.today.strftime('%d.%m.%Y') %>, evt. endringer i programmet etter det er ikke tatt med.</p> + <details> + <summary>Informasjon</summary> + <p>Dette er en annen visning av programmet for skrekkfilmfestivalen + <a href="https://ramaskrik.no">Ramaskrik <%= year %></a>. Jeg laget det for + meg selv, for å få en bedre oversikt over hvilke filmer som går hvor og når. Offisielt program finner du + på <a href="https://ramaskrik.no/program/">Ramaskrik sine egne websider</a>. Denne siden ble generert + <%= Date.today.strftime('%d.%m.%Y') %>, evt. endringer i programmet etter det er ikke tatt med.</p> - <p>Du kan merke hvilke filmer du ønsker å se ved å klikke/tappe på de. Siden vil huske hvilke filmer du - har valgt, så du vil kunne bruke denne siden til å planlegge ruten din igjennom festivalen hvis du vil. - (Ingen data sendes til websiden, hvilke filmer du har valgt vil kun lagres i din egen nettleser.)</p> + <p>Du kan merke hvilke filmer du ønsker å se ved å klikke/tappe på de. Siden vil huske hvilke filmer du + har valgt, så du vil kunne bruke denne siden til å planlegge ruten din igjennom festivalen hvis du vil. + (Ingen data sendes til websiden, hvilke filmer du har valgt vil kun lagres i din egen nettleser.)</p> - <p>Programmet er også tilgjengelig som en kalenderfil. - <a href="./program-ramaskrik-<%= year %>.ics">Klikk her</a> - for å legge den til i kalenderen din.</p> + <p>Programmet er også tilgjengelig som en kalenderfil. + <a href="./program-ramaskrik-<%= year %>.ics">klikk her</a> + for å legge den til i kalenderen din.</p> - <p>Har du spørsmål, ta kontakt med meg <a href="mailto:haraldei-ramaprogram@anduin.net">via epost</a>.</p> + <p>Har du spørsmål, ta kontakt med meg <a href="mailto:haraldei-ramaprogram@anduin.net">via epost</a>.</p> + </details> </section> <section id="events-list"> - <% eventlist.each do |date, events| %> - <h2><%= date.strftime("%A %d.%m.%Y") %></h2> + <p>Last ned som <a href="./program-ramaskrik-<%= year %>.ics">kalenderfil</a></p> + <% eventlist.keys.sort.each do |date| %> + <% events = eventlist[date] %> + <h2><%= lang.weekday(date.wday).capitalize %> – <%= date.strftime("%d.%m.%Y") %></h2> <div class="events" style="height: <%= 200 + (events.end_time - events.start_time) / 50 %>px; width: <%= 100 + (events.venues.length * 350) %>px;"> <% start_time = events.start_time.to_i %> <% end_time = events.end_time.to_i %> @@ -36,7 +41,7 @@ <h3>Kl.</h3> <div class="time-column-inner"> <% (start_time..end_time).step(3600 / 4) do |time| %> - <div class="timestamp" style="top: <%= (time - start_time).to_i / 50 - 5 %>px; height: 10px;"> + <div class="timestamp" style="top: <%= (time - start_time).to_i / 50 %>px; height: 10px;"> <%= Time.at(time).strftime('%H:%M') %> </div> <% end %> diff --git a/lib/events.rb b/lib/events.rb index 24404f1..055b9c2 100644 --- a/lib/events.rb +++ b/lib/events.rb @@ -15,7 +15,7 @@ module Events @duration = attrs['duration'].to_i @title = attrs['title'] @venue = attrs['venue'] - @image_url = attrs['image'] unless attrs['image'].length < 10 + @image_url = attrs['image'] unless attrs['image'].nil? or attrs['image'].length < 10 @info_link = attrs['info_link'] end diff --git a/lib/i18n.rb b/lib/i18n.rb new file mode 100644 index 0000000..0a2e461 --- /dev/null +++ b/lib/i18n.rb @@ -0,0 +1,8 @@ +class I18n + + Weekday = %w{søndag mandag tirsdag onsdag torsdag fredag lørdag} + + def weekday(day) + Weekday[day] + end +end diff --git a/ramaskrik-program.rb b/ramaskrik-program.rb index cd22839..5e58620 100755 --- a/ramaskrik-program.rb +++ b/ramaskrik-program.rb @@ -22,8 +22,8 @@ require 'date' require 'delegate' require 'erb' require 'events' +require 'i18n' require 'json' -require 'scrapers/ramaskrik' require 'nokogiri' require 'open-uri' require 'uri' @@ -33,8 +33,8 @@ class EventDecorator < SimpleDelegator attr_reader :height def calc_offsets(time_offset) - @offset = 5 + (start_time - time_offset).to_i / 50 - @height = 5 + duration / 50; + @offset = 5 + (start_time - time_offset).to_f / 50 + @height = 5 + duration.to_f / 50; start_time + duration end end @@ -52,7 +52,7 @@ class SortedEventList .sort{ |a,b| a.start_time - b.start_time } .map{ |e| EventDecorator.new(e) } - @start_time = @events.first.start_time - (@events.first.start_time.min * 60) + @start_time = @events.first.start_time # - (@events.first.start_time.min * 60) @events.group_by{|e| e.venue}.each do |venue, events| time_offset = start_time @@ -82,6 +82,7 @@ def make_sorted_event_lists_by_date(events_by_date) new_list end +lang = I18n::new year = Date::today.year title = "Ramaskrik #{year} - Program" @@ -43,6 +43,7 @@ a:hover { } .timestamp { position: absolute; + font-family: Helvetica, Arial, "Sans Serif"; font-size: 10px; } .event-item { |
