diff options
Diffstat (limited to 'pictures.rb')
-rwxr-xr-x | pictures.rb | 89 |
1 files changed, 15 insertions, 74 deletions
diff --git a/pictures.rb b/pictures.rb index 71b06d4..89b770c 100755 --- a/pictures.rb +++ b/pictures.rb @@ -1,82 +1,23 @@ #!/usr/bin/env ruby require_relative 'lib' -require 'fileutils' - -PICTURE_PATH = '/srv/media/pictures' -WEBP_PATH = File.join PICTURE_PATH, 'webp' -TXT_PATH = File.join PICTURE_PATH, 'txt' - -ALBUM_PATH = File.join PICTURE_PATH, 'albums' - -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 - `cd /srv/www/pdp8-test/pictures; git add #{File.basename(album)}` - 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 += "<div class='slide'>" - html += '<img ' - html += "alt='#{File.read(meta[:txt])}' " if File.exist?(meta[:txt]) - html += "src='#{meta[:webp]}'>" - html += "<div class='slidenav'>" - html += "<a href='#{before}' class='navarrow'>←</a>" - html += "<a href='/pictures.html##{File.basename(album)}'>back</a>" - html += "<a href='#{after}' class='navarrow'>→</a>" - html += '</div>' - html += '</div>' - html += File.read(File.join(SNIPPETS, 'tail.html')) - html_file = File.join(www_dir, File.basename(img, File.extname(img)) + '.html') - File.open(html_file, 'w+') { |f| f.puts html } - puts `tidy -iqm -w 0 #{html_file} 2>&1` - end -end +require 'json' html = File.read(File.join(SNIPPETS, 'head.html')) html += nav 'pictures' -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 - html += "<section id='#{File.basename album}'>" - html += "<h1><a href='#{meta(images.first, - album)[:href]}'>#{File.basename(album).gsub('_', ' ')}</a></h1>\n" - html += "<div class='gallery'>" - images.each_with_index do |img, _i| - meta = meta img, album - html += "<a href='#{meta[:href]}'><img class='thumb' loading='lazy' width='150' height='100' " - html += "alt='#{File.read(meta[:txt])}' " if File.exist?(meta[:txt]) - html += "src='#{meta[:thumb]}'></a>" - end - html += '</div>' - html += '</section>' +html += "<div class='gallery'>" +Dir[File.join(OUTBOX_DIR, 'create', '*.json')] + .collect { |f| JSON.load_file(f) } + .select { |a| a['to'].include?('https://www.w3.org/ns/activitystreams#Public') } + .sort_by { |a| a['published'] }.reverse + .collect { |a| a['object'] } + .collect { |o| o['attachment'] } + .flatten.compact + .select { |a| a['url'] =~ %r{pictures/webp} and a['mediaType'] == 'image/webp' } + .each do |img| + html += "<img loading='lazy' " + alt = img['name'] ? img['name'].gsub("'", ''').gsub('"', '"') : '' + html += "alt='#{alt}' src='#{img['url']}'>" end +html += '</div>' html += File.read(File.join(SNIPPETS, 'tail.html')) print_html 'pictures', html |