From d987641d7b68fcfa8431b1835411bb1095a37961 Mon Sep 17 00:00:00 2001 From: pdp8 Date: Sun, 28 Jul 2024 09:44:00 +0200 Subject: image albums, flex layout --- pictures.rb | 83 +++++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 64 insertions(+), 19 deletions(-) (limited to 'pictures.rb') diff --git a/pictures.rb b/pictures.rb index 33c7ec6..246b0c5 100755 --- a/pictures.rb +++ b/pictures.rb @@ -1,37 +1,82 @@ #!/usr/bin/env ruby -require 'json' require_relative 'lib' +require 'fileutils' PICTURE_PATH = '/srv/media/pictures' WEBP_PATH = File.join PICTURE_PATH, 'webp' TXT_PATH = File.join PICTURE_PATH, 'txt' -COLLECTION_PATH = File.join PICTURE_PATH, 'collections' +ALBUM_PATH = File.join PICTURE_PATH, 'albums' -PICTURE_URL = 'https://media.pdp8.info/pictures' +PICTURE_URL = File.join MEDIA_URL, 'pictures' WEBP_URL = File.join PICTURE_URL, 'webp' +THUMB_URL = File.join PICTURE_URL, 'thumb' JPEG_URL = File.join PICTURE_URL, 'jpeg' +def meta(img, album) + basename = File.basename(img, File.extname(img)) + path = File.join(WEBP_PATH, basename + '.webp') + { + basename: basename, + webp: File.join(WEBP_URL, basename + '.webp'), + txt: File.join(TXT_PATH, basename + '.txt'), + src: File.join(JPEG_URL, basename + File.extname(img)), + thumb: File.join(THUMB_URL, basename + '.webp'), + href: File.join('/pictures', File.basename(album), + File.basename(img, File.extname(img)) + '.html') + } +end + +albums = Dir[File.join ALBUM_PATH, '*'].sort_by { |a| File.mtime a }.reverse + +albums.each do |album| + www_dir = File.join('/srv/www/pdp8-test/pictures', File.basename(album)) + FileUtils.mkdir_p www_dir + images = File.readlines(album, chomp: true) + n = images.size + images.each_with_index do |img, i| + before = meta(images[(i - 1) % n], album)[:href] + after = meta(images[(i + 1) % n], album)[:href] + meta = meta img, album + + html = File.read(File.join(SNIPPETS, 'head.html')) + html += nav 'pictures' + html += "
" + html += '&1` + end +end + html = File.read(File.join(SNIPPETS, 'head.html')) html += nav 'pictures' - -Dir[File.join COLLECTION_PATH, '*'] - .sort_by { |c| File.mtime c } - .reverse.each do |collection| - html += "
" - html += "

#{collection.gsub('_', ' ')}

\n" - File.readlines(collection, chomp: true).each do |line| - basename = File.basename(line, File.extname(line)) - path = File.join(WEBP_PATH, basename + '.webp') - url = File.join(WEBP_URL, basename + '.webp') - alt = File.read(File.join(TXT_PATH, basename, '.txt')) - src = File.join(JPEG_URL, basename + File.extname(url)) - w, h = `/etc/profiles/per-user/ch/bin/identify -format "%w %h" #{path}`.chomp.split(' ') - html += "