diff options
-rw-r--r-- | Makefile | 28 | ||||
-rwxr-xr-x | pictures.rb | 40 |
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("'", ''').gsub('"', '"') : '' - 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 |