diff options
author | pdp8 <pdp8@pdp8.info> | 2024-07-29 14:21:31 +0200 |
---|---|---|
committer | pdp8 <pdp8@pdp8.info> | 2024-07-29 14:21:31 +0200 |
commit | cd53a2fe5fc8baf9750fbd2d9b0b4c855d8694a7 (patch) | |
tree | 689c156602c61da3a8ea177e49ec10590f1f6fd0 /html.rb | |
parent | d987641d7b68fcfa8431b1835411bb1095a37961 (diff) |
rss sorting fixed, rss limited to 25 items, fediring
Diffstat (limited to 'html.rb')
-rwxr-xr-x | html.rb | 189 |
1 files changed, 0 insertions, 189 deletions
diff --git a/html.rb b/html.rb deleted file mode 100755 index d3def36..0000000 --- a/html.rb +++ /dev/null @@ -1,189 +0,0 @@ -#!/usr/bin/env ruby - -MEDIA_DIR = '/srv/media' -MEDIA_URL = 'https://media.pdp8.info' -WWW_DIR = '/srv/www/pdp8-test' -SNIPPETS = File.join(File.dirname(__FILE__), 'html') - -def nav(cat) - html = '<nav>' - html += "<a id='logo' href='/about.html'><img src='/pdp8.png' alt='pdp8'></a>" - %w[music pictures videos climbing 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='/social/create.html'>social</a>" - html += " <a class='item' href='/rss.xml'>rss</a>" - html += " <a id='menu' href='#' onclick='show_vertical_menu()'>≡</a>" - html += '</nav>' - html -end - -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')) - print_html basename, html -end - -def print_html(basename, html) - out = File.join(WWW_DIR, basename + '.html') - puts out - File.open(out, 'w+') { |f| f.puts html } - puts `tidy -iqm -w 0 #{out} 2>&1` -end - -def music_html - music = Dir[File.join(MEDIA_DIR, 'music', '20*')].sort.reverse - html = File.read(File.join(SNIPPETS, 'head.html')) - html += nav 'music' - html += '<div class="post"><a href="https://faircamp.webr.ing/prev/pdp8.info/music.html">← prev</a> | - <a href="https://faircamp.webr.ing/">faircamp webring</a> | - <a href="https://faircamp.webr.ing/rand">random</a> | - <a href="https://faircamp.webr.ing/next/pdp8.info/music.html">next →</a></div>' - music.each do |dir| - # next if dir.match 'alfadeo' - - date = File.basename(dir).split('_')[0] - html += "<div class='post' id='#{date}'>" - title = File.basename(dir).split('_')[1..-1].join(' ') - html += "<h1>#{title}</h1>" - 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.webp') - alt = File.read(File.join(dir, 'cover.txt')).chomp - w, h = `identify -format "%w %h" #{cover}`.chomp.split(' ') - html += "<img class='cover' loading='lazy' width='#{w}' height='#{h}' src='#{cover}' alt='#{alt}'>" - 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].gsub('_', ' ') - # name += " ©#{copyrights[i]}" if copyrights - html += '<tr>' - html += "<td>#{name}</td>" - html += "<td> - <audio preload='none' controls> - <source src='#{mp3}' type='audio/mpeg'> - <a href=#{mp3}>#{mp3}</a> - </audio> - </td>" - html += '</tr>' - end - html += '</table>' - ia = "https://archive.org/details/pdp8_#{title.gsub(' ', '_')}" - html += "<p>Internet Archive: <a href='#{ia}'>#{ia}</a>" - 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>' - end - html += '<p>© 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 -end - -def picture_html - html = File.read(File.join(SNIPPETS, 'head.html')) - html += nav 'pictures' - html += '<div class="gallery">' - Dir[File.join(MEDIA_DIR, 'pictures', '*.jpeg')].sort.reverse.each do |img| - thumb = File.join(MEDIA_URL, 'pictures', 'thumb', File.basename(img).sub(/jpeg$/, 'webp')) - html += "<a href='#{File.join(MEDIA_URL, 'pictures', - File.basename(img))}'><img class='thumb' loading='lazy' width='150' height='100' src='#{thumb}'></a>" - end - html += '</div>' - html += '<p>© 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 'pictures', html -end - -def video_html - 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(' ') - html += "<h1>#{title}</h1>" - 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>' - - 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') - w, h = `ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 #{webm}`.chomp.split(',') - - html += "<video controls preload='none' width='#{w}' height='#{h}' poster='#{poster}'> - <source src='#{webm}' type='video/webm'> - <source src='#{mp4}' type='video/mp4'> - <a href=#{mp4}>#{mp4}</a> - </video><p> - " - html += lines.join('<br>') - html += '</div>' - end - html += '<p> © 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 -end - -def climbing_html - html = File.read(File.join(SNIPPETS, 'head.html')) - html += nav 'climbing' - Dir[File.join(MEDIA_DIR, 'climbing', '*.txt')].collect do |txt| - lines = File.read(txt).lines.collect { |l| l.chomp } - { date: lines.shift, - text: lines.join('<br>'), - mp4: txt.sub(MEDIA_DIR, MEDIA_URL).sub('.txt', '.mp4'), - webm: txt.sub(MEDIA_DIR, MEDIA_URL).sub('.txt', '.webm'), - webp: txt.sub(MEDIA_DIR, MEDIA_URL).sub('.txt', '.webp') } - end.sort_by { |m| m[:date] }.reverse.each do |post| - w, h = `ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 #{post[:webm]}`.chomp.split(',') - html += '<div class="post">' - html += "<h1>#{post[:date]}</h1>" - html += "<video controls preload='none' width='#{w}' height='#{h}' poster=#{post[:webp]}> - <source src='#{post[:webm]}' type='video/webm'> - <source src='#{post[:mp4]}' type='video/mp4'> - <a href=#{post[:mp4]}>#{post[:mp4]}</a> - </video><p> - " - html += post[:text] - html += '</div>' - end - html += File.read(File.join(SNIPPETS, 'tail.html')) - print_html 'climbing', html -end - -music_html -# picture_html -video_html -climbing_html - -%w[about code pictures contact].each do |basename| - file_html basename -end - -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', - 'sitemap.txt' -].each { |f| puts `rsync -av "#{File.join(SNIPPETS, f)}" "#{WWW_DIR}"` } |