summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xhtml.rb134
-rwxr-xr-xrss.rb71
-rw-r--r--snippets/contact.html10
-rw-r--r--snippets/pictures.html22
-rw-r--r--snippets/slideshow.js2
5 files changed, 141 insertions, 98 deletions
diff --git a/html.rb b/html.rb
index e39f5fc..5b8a9e2 100755
--- a/html.rb
+++ b/html.rb
@@ -1,120 +1,134 @@
 #!/usr/bin/env ruby
+require 'erb'
 
-ROOT = ARGV[0]
-SNIPPETS = File.join(File.dirname(__FILE__), "snippets")
+MEDIA_DIR = '/srv/media'
+MEDIA_URL = 'https://media.pdp8.info'
+WWW_DIR = '/srv/www/pdp8-test'
+SNIPPETS = File.join(File.dirname(__FILE__), 'snippets')
 
-def nav cat
-  html = "<nav>"
+def nav(cat)
+  html = '<nav>'
   html += "<a id='logo' href='/about.html'><img src='/pdp8.png' alt='pdp8'></a>"
-  ["music", "pictures", "videos", "code", "contact"].each do |c|
-    c == cat ? cl = 'item current' : cl = 'item'
+  %w[music pictures videos code contact].each do |c|
+    cl = c == cat ? 'item current' : 'item'
     html += "<a class='#{cl}' href='/#{c}.html'>#{c}</a>"
   end
   html += "<a class='item' href='/rss.xml'>rss</a>"
   html += "<a id='menu' href='#' onclick='show_vertical_menu()'>&equiv;</a>"
-  html += "</nav>"
+  html += '</nav>'
   html
 end
 
-def file_html basename
-  path = File.join(SNIPPETS, basename + ".html")
-  html = File.read(File.join(SNIPPETS, "head.html"))
+def file_html(basename)
+  path = File.join(SNIPPETS, basename + '.html')
+  html = File.read(File.join(SNIPPETS, 'head.html'))
   html += nav basename
   html += "<div class='post'>"
   html += File.read(path)
-  html += "</div>"
-  html += File.read(File.join(SNIPPETS, "tail.html"))
+  html += '</div>'
+  html += File.read(File.join(SNIPPETS, 'tail.html'))
   print_html basename, html
 end
 
-def print_html basename, html
-  out = File.join(ROOT, basename + ".html")
+def print_html(basename, html)
+  out = File.join(WWW_DIR, basename + '.html')
   puts out
-  File.open(out, "w+") { |f| f.puts html }
+  File.open(out, 'w+') { |f| f.puts html }
+  File.open('tmp.html', 'w+') { |f| f.puts html } if basename == 'music'
   puts `tidy -iqm -w 0 #{out} 2>&1`
 end
 
 def music_html
-  music = Dir[File.join(ROOT, "music", "*")].sort.reverse
-  html = File.read(File.join(SNIPPETS, "head.html"))
-  html += nav "music"
-  music.each_with_index do |dir, i|
-    date = File.basename(dir).split("_")[0]
+  music = Dir[File.join(MEDIA_DIR, 'music', '*')].sort.reverse
+  html = File.read(File.join(SNIPPETS, 'head.html'))
+  html += nav 'music'
+  music.each do |dir|
+    date = File.basename(dir).split('_')[0]
     html += "<div class='post' id='#{date}'>"
-    title = File.basename(dir).split("_")[1..-1].join(" ")
+    title = File.basename(dir).split('_')[1..-1].join(' ')
     html += "<h1>#{title}</h1>"
-    html += File.read(File.join(dir, "README")) + "<p>"
-    cover = File.join("/", dir.sub(ROOT, ''), "cover.jpeg")
+    html += File.read(File.join(dir, 'README')).chomp.gsub("\n\n", '<p>').gsub("\n", '<br>') + '<p>'
+    cover = File.join(MEDIA_URL, dir.sub(MEDIA_DIR, ''), 'cover.jpeg')
     html += "<img class='cover' src='#{cover}' alt='cover'>"
-    html += "<table>"
-    Dir[File.join(dir, "*mp3")].each do |mp3|
-      mp3 = mp3.sub(ROOT, '')
-      html += "<tr>"
+    html += '<table>'
+    copyrights_file = File.join(dir, 'copyrights')
+    copyrights = File.readlines(copyrights_file).collect { |l| l.chomp } if File.exist? copyrights_file
+    Dir[File.join(dir, '*mp3')].each_with_index do |mp3, _i|
+      mp3 = File.join(MEDIA_URL, mp3.sub(MEDIA_DIR, ''))
+      name = File.basename(mp3, '.mp3')[3..-1]
+      # name += " &copy;#{copyrights[i]}" if copyrights
+      html += '<tr>'
       html += "<td>
         <audio controls>
         <source src='#{mp3}' type='audio/mpeg'>
         </audio>
         </td>"
-      html += "<td>#{File.basename(mp3, '.mp3')[3..-1]}</td>"
-      html += "</tr>"
+      html += "<td>#{name}</td>"
+      html += '</tr>'
     end
-    html += "</table>"
-    bc = "https://pdp8.bandcamp.com/album/#{title.gsub(' ', '-')}"
+    html += '</table>'
+    bc = if File.exist?(File.join(dir, 'bandcamp'))
+           File.read(File.join(dir, 'bandcamp')).chomp
+         else
+           "https://pdp8.bandcamp.com/album/#{title.gsub(' ', '-')}"
+         end
     html += "<p>Bandcamp: <a href='#{bc}'>#{bc}</a>"
-    html += "</div>"
-    html += "<hr>"
+    html += '</div>'
+    html += '<hr>'
   end
   html += '<p>&copy; pdp8 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>'
-  html += File.read(File.join(SNIPPETS, "tail.html"))
-  print_html "music", html
+  html += File.read(File.join(SNIPPETS, 'tail.html'))
+  print_html 'music', html
 end
 
 def video_html
-  videos = Dir[File.join(ROOT, "videos", "*")].sort.reverse
-  html = File.read(File.join(SNIPPETS, "head.html"))
-  html += nav "videos"
-  videos.each_with_index do |dir, i|
-    date = File.basename(dir).split("_")[0]
+  videos = Dir[File.join(MEDIA_DIR, 'videos', '*')].sort.reverse
+  html = File.read(File.join(SNIPPETS, 'head.html'))
+  html += nav 'videos'
+  videos.each_with_index do |dir, _i|
+    date = File.basename(dir).split('_')[0]
     html += "<div class='post' id='#{date}'>"
-    title = File.basename(dir).split("_")[1..-1].join(" ")
+    title = File.basename(dir).split('_')[1..-1].join(' ')
     html += "<h1>#{title}</h1>"
-    txt = File.read(File.join(dir, "README"))
+    txt = File.read(File.join(dir, 'README'))
     txt = txt.gsub(/(http\S*)/, '<a href="\1">\1</a>')
     lines = txt.split("\n")
-    html += lines.shift + "<p>"
+    html += lines.shift + '<p>'
 
-    mp4 =   File.join("/videos", File.basename(dir), title.gsub(" ", "_") + ".mp4")
-    webm = File.join("/videos", File.basename(dir), title.gsub(" ", "_") + ".webm")
-    poster = File.join("/videos", File.basename(dir), "poster.png")
+    mp4 =   File.join(MEDIA_URL, 'videos', File.basename(dir), title.gsub(' ', '_') + '.mp4')
+    webm = File.join(MEDIA_URL, 'videos', File.basename(dir), title.gsub(' ', '_') + '.webm')
+    poster = File.join(MEDIA_URL, 'videos', File.basename(dir), 'poster.png')
 
     html += "<video controls poster='#{poster}'>
         <source src='#{webm}' type='video/webm'>
         <source src='#{mp4}' type='video/mp4'>
         </video><p>
         "
-    html += lines.join("<br>")
-    html += "</div>"
-    html += "<hr>"
+    html += lines.join('<br>')
+    html += '</div>'
+    html += '<hr>'
   end
   html += '<p>&nbsp;&copy; pdp8 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>'
-  html += File.read(File.join(SNIPPETS, "tail.html"))
-  print_html "videos", html
+  html += File.read(File.join(SNIPPETS, 'tail.html'))
+  print_html 'videos', html
 end
 
 music_html
 video_html
 
-["about", "code", "pictures", "contact"].each do |basename|
+%w[about code pictures contact].each do |basename|
   file_html basename
 end
 
-last = (Dir[File.join(ROOT, "music", "*")] + Dir[File.join(ROOT, "videos", "*")]).sort_by { |d| File.basename(d) }.last.split("/")[-2] + '.html'
-puts `cp "#{File.join(ROOT, last)}" "#{File.join(ROOT, "index.html")}"`
+last = (Dir[File.join(MEDIA_DIR, 'music', '*')] + Dir[File.join(MEDIA_DIR, 'videos', '*')]).sort_by { |d|
+  File.basename(d)
+}.last.split('/')[-2] + '.html'
+puts `cp "#{File.join(WWW_DIR, last)}" "#{File.join(WWW_DIR, 'index.html')}"`
 
 [
-  "pdp8.png",
-  "540px-PDP-8_.jpg",
-  "style.css",
-  "slideshow.js",
-  "robots.txt"
-].each { |f| puts `rsync -av "#{File.join(SNIPPETS, f)}" "#{ROOT}"` }
+  'pdp8.png',
+  '540px-PDP-8_.jpg',
+  'style.css',
+  'slideshow.js',
+  'robots.txt'
+].each { |f| puts `rsync -av "#{File.join(SNIPPETS, f)}" "#{WWW_DIR}"` }
diff --git a/rss.rb b/rss.rb
index b700f55..47b47c0 100755
--- a/rss.rb
+++ b/rss.rb
@@ -1,32 +1,51 @@
 #!/usr/bin/env ruby
-require "rss"
+require 'date'
+MEDIA = '/srv/media/'
+WWW = '/srv/www/pdp8-test/'
+items = []
+%w[music videos].each do |cat|
+  Dir[File.join(MEDIA, cat, '*')].each do |dir|
+    date = File.basename(dir).split('_')[0]
+    updated = Date.parse(date) # .strftime('%Y-%m-%d')
+    items << {
+      title: File.basename(dir).split('_')[1..-1].join(' '),
+      link: File.join('https://pdp8.info', cat + '.html#' + date),
+      description: File.read(File.join(dir, 'README')).chomp.sub(/^\n/, '').sub("\n\n", "\n"),
+      pubDate: updated.httpdate,
+      'dc:date' => updated.rfc3339
+    }
+  end
+end
+date = Dir[File.join(MEDIA, 'pictures', '*.jpeg')].last.split('_')[0]
+updated = Date.parse(date) # .strftime('%Y%m%d')
+items << {
+  title: 'pictures',
+  link: 'https://pdp8.info/pictures.html',
+  pubDate: updated.httpdate,
+  'dc:date' => updated.rfc3339
+}
 
-ROOT = ARGV[0]
+xml = ['<?xml version="1.0" encoding="UTF-8"?>
+<rss version="2.0"
+  xmlns:content="http://purl.org/rss/1.0/modules/content/"
+  xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <channel>
+    <title>pdp8</title>
+    <link>https://pdp8.info</link>
+    <description>music, pictures and videos</description>
+    <language>en</language>']
+date = DateTime.now
+xml << "    <pubDate>#{date.httpdate}</pubDate>"
+xml << "    <dc:date>#{date.rfc3339}</dc:date>"
 
-rss = RSS::Maker.make("2.0") do |maker|
-  maker.channel.language = "en"
-  maker.channel.author = "pdp8"
-  maker.channel.updated = Time.now.to_s
-  maker.channel.link = "https://pdp8.info"
-  maker.channel.title = "pdp8"
-  maker.channel.description = "music, pictures and videos"
-  ["music", "videos"].each do |cat|
-    Dir[File.join(ROOT, cat, "*")].each do |dir|
-      maker.items.new_item do |item|
-        item.title = File.basename(dir).split("_")[1..-1].join(" ")
-        date = File.basename(dir).split("_")[0]
-        item.link = File.join("https://pdp8.info", cat + ".html#" + date)
-        item.updated = Time.parse(date).strftime("%Y-%m-%d")
-        item.description = File.read(File.join(dir, "README")).chomp.sub(/^\n/, '').sub("\n\n", "\n")
-      end
-    end
-  end
-  maker.items.new_item do |item|
-    item.title = "pictures"
-    item.link = "https://pdp8.info/pictures.html"
-    date = Dir[File.join(ROOT, "pictures", "*.jpeg")].last.split("_")[0]
-    item.updated = Time.parse(date).strftime("%Y%m%d")
+items.sort_by { |i| i['dc:date'] }.each do |item|
+  xml << '    <item>'
+  item.each do |k, v|
+    xml << "      <#{k}>#{v}</#{k}>"
   end
+  xml << '    </item>'
 end
+xml << '  </channel>
+</rss>'
 
-File.open(File.join(ROOT, "rss.xml"), "w+") { |f| f.puts rss }
+File.open(File.join(WWW, 'rss.xml'), 'w+') { |f| f.puts xml.join("\n") }
diff --git a/snippets/contact.html b/snippets/contact.html
index a454e64..4582664 100644
--- a/snippets/contact.html
+++ b/snippets/contact.html
@@ -1,9 +1,15 @@
 <h1>email</h1>
 <a href='mailto:info@pdp8.info'>info@pdp8.info</a>
+<h1>fediverse</h1>
+<a href='https://social.pdp8.info/pdp8'>@pdp8@social.pdp8.info</a>
+<!--
 <h1>matrix</h1>
 <a href='https://matrix.to/#/@pdp8:matrix.pdp8.info'>@pdp8:matrix.pdp8.info</a>
+-->
 <h1>newsletter</h1>
 <h2>subscribe</h2>
-send a mail to <a href='mailto:info@pdp8.info?subject=Subscribe'>info@pdp8.info</a> with <b>subscribe</b> in the subject (your address will be used only for the newsletter and won't be shared with anyone)
+send a mail to <a href='mailto:info@pdp8.info?subject=Subscribe'>info@pdp8.info</a> with <b>subscribe</b> in the subject
+(your address will be used only for the newsletter and won't be shared with anyone)
 <h2>unsubscribe</h2>
-send a mail to <a href='mailto:info@pdp8.info?subject=Subscribe'>info@pdp8.info</a> with <b>unsubscribe</b> in the subject
+send a mail to <a href='mailto:info@pdp8.info?subject=Subscribe'>info@pdp8.info</a> with <b>unsubscribe</b> in the
+subject
\ No newline at end of file
diff --git a/snippets/pictures.html b/snippets/pictures.html
index 359de8d..25bf1c2 100644
--- a/snippets/pictures.html
+++ b/snippets/pictures.html
@@ -1,18 +1,22 @@
-<script src="/distances.js"></script>
+<script src="https://media.pdp8.info/pictures/distances.js"></script>
 <script src="/slideshow.js"></script>
 
-<img id="image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgYAAAAAMAASsJTYQAAAAASUVORK5CYII=" alt/>
+<img id="image"
+  src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgYAAAAAMAASsJTYQAAAAASUVORK5CYII="
+  alt />
 
 <div id="controller">
-  <a class="btn" onclick="toggle_play()"><i id="play-indicator" title="Pause slideshow" class="fa fa-pause" aria-hidden="true"></i></a>
-  <a class="btn" onclick="new_selection()"><i id="shuffle-indicator" title="Next slideshow" class="fa fa-random" aria-hidden="true"></i></a>
-  <p>&copy; pdp8 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>
+  <a class="btn" onclick="toggle_play()"><i id="play-indicator" title="Pause slideshow" class="fa fa-pause"
+      aria-hidden="true"></i></a>
+  <a class="btn" onclick="new_selection()"><i id="shuffle-indicator" title="Next slideshow" class="fa fa-random"
+      aria-hidden="true"></i></a>
+  <p>&copy; pdp8 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0
+      International License</a>
 </div>
 
 <a id="prev" onclick="prev()">&lsaquo;</a>
 <a id="next" onclick="next()">&rsaquo;</a>
 
-<script> 
-  (function() { new_selection(); play() })();
-</script>
-
+<script>
+  (function () {new_selection(); play()})();
+</script>
\ No newline at end of file
diff --git a/snippets/slideshow.js b/snippets/slideshow.js
index 23d7c3e..ea265e4 100644
--- a/snippets/slideshow.js
+++ b/snippets/slideshow.js
@@ -75,6 +75,6 @@ function next() {
 }
 
 function update() {
-  src('image',"/pictures/"+selection[current])
+  src('image',"https://media.pdp8.info/pictures/"+selection[current])
 }