summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile28
-rwxr-xr-xpictures.rb40
2 files changed, 40 insertions, 28 deletions
diff --git a/Makefile b/Makefile
index fadd139..eec9eef 100644
--- a/Makefile
+++ b/Makefile
@@ -1,21 +1,29 @@
+export PATH := /etc/profiles/per-user/ch/bin:$(PATH)
+
 MEDIA_DIR := /srv/media
 TEST_DIR := /srv/www/pdp8-test
 PUB_DIR := /srv/www/pdp8
 
 MUSIC_DIR := $(MEDIA_DIR)/music
 FLAC := $(wildcard $(MUSIC_DIR)/*/*.flac)
-MP3 := $(subst flac,mp3,$(FLAC))
+MP3 := $(subst flac, mp3, $(FLAC))
 
 IMG_DIR := $(MEDIA_DIR)/pictures
-WWW_DIR := $(IMG_DIR)/www
-IMG := $(wildcard $(IMG_DIR)/*.jpeg)
-IMG_WWW := $(subst $(IMG_DIR), $(WWW_DIR), $(subst jpeg,webp, $(IMG)))
+WEBP_DIR := $(IMG_DIR)/webp
+JPEG_DIR := $(IMG_DIR)/jpeg
+TXT_DIR := $(IMG_DIR)/txt
+
+JPEG_IMG := $(wildcard $(JPEG_DIR)/*.jpeg)
+WEBP_IMG := $(subst jpeg, webp, $(JPEG_IMG))
+TXT_IMG := $(subst jpeg, txt, $(JPEG_IMG))
+
+IMG_COLLECTIONS := $(wildcard $(IMG_DIR)/collections/*)
 
 VIDEO_DIR := /srv/media/videos
 VIDEO_WEBM := $(wildcard $(VIDEO_DIR)/*/*.webm)
-VIDEO_MP4 := $(subst webm,mp4, $(VIDEO_WEBM))
-VIDEO_WEBP := $(subst webm,webp, $(VIDEO_WEBM))
-VIDEO_PNG := $(subst webm,png, $(VIDEO_WEBM))
+VIDEO_MP4 := $(subst webm, mp4, $(VIDEO_WEBM))
+VIDEO_WEBP := $(subst webm, webp, $(VIDEO_WEBM))
+VIDEO_PNG := $(subst webm, png, $(VIDEO_WEBM))
 
 CLIMBING_DIR := /srv/media/climbing
 CLIMBING_WEBM := $(wildcard $(CLIMBING_DIR)/*.webm)
@@ -34,7 +42,7 @@ all: test
 
 test: $(TEST_HTML) $(TEST_OTHER)
 
-www-pictures: $(IMG_WWW)
+pictures: $(WEBP_IMG) $(TXT_IMG) 
 
 $(TEST_DIR)/rss.xml: $(TEST_HTML)
 	./rss.rb 
@@ -45,7 +53,7 @@ $(TEST_DIR)/index.html: $(TEST_DIR)/music.html
 $(TEST_DIR)/music.html: $(MP3)
 	./music.rb
 
-$(TEST_DIR)/pictures.html: /srv/social/outbox/create/ $(IMG_WWW)
+$(TEST_DIR)/pictures.html: $(IMG_COLLECTIONS)
 	./pictures.rb
 	
 $(TEST_DIR)/videos.html: $(VIDEO_MP4) $(VIDEO_WEBP)
@@ -75,7 +83,7 @@ $(TEST_DIR)/%.txt: ./html/%.txt
 %.webp: %.webm
 	ffmpeg -i $< -loglevel error -vf thumbnail -frames:v 1 -c:v png -f image2pipe - | magick - $@
 
-$(WWW_DIR)/%.webp: $(IMG_DIR)/%.jpeg
+$(WEBP_DIR)/%.webp: $(JPEG_DIR)/%.jpeg
 	magick $< -resize 1536x1024 -quality 85 $@
 
 %.mp4: %.webm
diff --git a/pictures.rb b/pictures.rb
index e21cb9b..33c7ec6 100755
--- a/pictures.rb
+++ b/pictures.rb
@@ -2,30 +2,34 @@
 require 'json'
 require_relative 'lib'
 
-PICTURE_URL = 'https://media.pdp8.info/pictures'
 PICTURE_PATH = '/srv/media/pictures'
+WEBP_PATH = File.join PICTURE_PATH, 'webp'
+TXT_PATH = File.join PICTURE_PATH, 'txt'
 
-html = File.read(File.join(SNIPPETS, 'head.html'))
-html += nav 'pictures'
+COLLECTION_PATH = File.join PICTURE_PATH, 'collections'
 
-posts = Dir[File.join('/srv', 'social', 'outbox', 'create', '*.json')].collect { |f| JSON.load_file(f) }.select do |a|
-  a['to'].include?('https://www.w3.org/ns/activitystreams#Public') and a['object']['attachment']
-end.collect { |a| a['object'] }.select { |o| o['attachment'].size == 1 and o['attachment'][0]['mediaType'].match(/image/) }
+PICTURE_URL = 'https://media.pdp8.info/pictures'
+WEBP_URL = File.join PICTURE_URL, 'webp'
+JPEG_URL = File.join PICTURE_URL, 'jpeg'
 
-posts.sort_by { |o| o['published'] }.reverse.each do |object|
-  att = object['attachment'][0]
-  url = att['url']
-  basename = File.basename(url, File.extname(url))
-  next if basename == 'cover'
+html = File.read(File.join(SNIPPETS, 'head.html'))
+html += nav 'pictures'
 
-  www_path = File.join(PICTURE_PATH, 'www', basename + '.webp')
-  www_url = File.join(PICTURE_URL, 'www', basename + '.webp')
-  alt = att['name'] ? att['name'].gsub("'", '&apos;').gsub('"', '&quot;') : ''
-  src_url = File.join(PICTURE_URL, basename + File.extname(url))
-  w, h = `/etc/profiles/per-user/ch/bin/identify -format "%w %h" #{www_path}`.chomp.split(' ')
+Dir[File.join COLLECTION_PATH, '*']
+  .sort_by { |c| File.mtime c }
+  .reverse.each do |collection|
   html += "<div class='post'>"
-  html += "<a href='#{src_url}'><img loading='lazy' width='#{w}' height='#{h}' "
-  html += "alt='#{alt}' src='#{www_url}'></a>"
+  html += "<h1>#{collection.gsub('_', ' ')}</h1>\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 += "<a href='#{src}'><img loading='lazy' width='#{w}' height='#{h}' "
+    html += "alt='#{alt}' src='#{url}'></a>"
+  end
   html += '</div>'
 end