summaryrefslogtreecommitdiff
path: root/pictures.rb
diff options
context:
space:
mode:
authorpdp8 <pdp8@pdp8.info>2024-08-18 16:10:01 +0200
committerpdp8 <pdp8@pdp8.info>2024-08-18 16:10:01 +0200
commitfdf16740af88ffa1d820dd86565e945eeb551072 (patch)
treefcc8991287a131f5477bb1e2cc2d660a18ebc7b1 /pictures.rb
parent02877167870245be0986a2bb8af984c9eb3dc1dd (diff)
pictures synced to social outbox, albums removed
Diffstat (limited to 'pictures.rb')
-rwxr-xr-xpictures.rb89
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("'", '&apos;').gsub('"', '&quot;') : ''
+ html += "alt='#{alt}' src='#{img['url']}'>"
end
+html += '</div>'
html += File.read(File.join(SNIPPETS, 'tail.html'))
print_html 'pictures', html