photos.amdavidson.com/_bin/make_gallery.rb

89 lines
2.3 KiB
Ruby
Executable file

#!/usr/bin/env ruby
puts "Gallery title?"
gallery_title = gets.chomp
gallery_slug = gallery_title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
puts "Getting jpg images for gallery."
@images = Dir.glob("#{Dir.pwd}/*.jpg")
Dir.mkdir gallery_slug
@names = Array.new
@images.each do |image|
basename = File.basename(image, '.jpg')
@names.push(basename)
puts "Resizing #{basename}."
thumb = "convert #{image} -filter Lanczos -sampling-factor 1x1 -unsharp 1.5x1+0.7+0.02 -quality 90 -resize 300x300 -set filename:f \"%t_t\" './#{gallery_slug}/%[filename:f].jpg'"
`#{thumb}`
mid = "convert #{image} -filter Lanczos -sampling-factor 1x1 -unsharp 1.5x1+0.7+0.02 -quality 90 -resize 1300x1300 -set filename:f \"%t_m\" './#{gallery_slug}/%[filename:f].jpg'"
`#{mid}`
full = "convert #{image} -filter Lanczos -sampling-factor 1x1 -unsharp 1.5x1+0.7+0.02 -quality 90 -resize 2500x2500 -set filename:f \"%t\" './#{gallery_slug}/%[filename:f].jpg'"
`#{full}`
puts "Making page for #{basename}."
page_text = <<END
---
layout: default
gallery-title: #{gallery_title}
title:
image-name: #{basename}
---
<article>
<header>
{% if page.gallery-title %}
<p class="subheading"><a href="/photos">Photos</a> / <a href="../">{{page.gallery-title}}</a></p>
{% endif %}
{% if page.photo-title %}
<h1 class="post-title">{{page.photo-title}}</h1>
{% endif %}
</header>
<p>
<a href="../#{basename}.jpg"><img src="../#{basename}_m.jpg" /></a>
</p>
<p class="caption">#{basename}</p>
</article>
END
File.open("./#{gallery_slug}/#{basename}.html", 'w') { |file| file.write(page_text) }
end
puts "Making gallery page."
gallery_text = <<END
---
layout: default
title: #{gallery_title}
slug: #{gallery_slug}
key-photo: #{@names.first}
images:
END
@names.each do |name|
gallery_text += "- image_name: #{name}\n"
end
gallery_text += <<END
---
<article>
<header>
{% if page.gallery-title %}
<h1 class="post-title">{{page.gallery-title}}</h1>
{% endif %}
</header>
<ul class="gallery">
{% for image in page.images %}
<li><a href="{{ page.url }}{{ image.image_name}}/"><img src="{{ page.url }}{{ image.image_name }}_t.jpg" /></a></li>
{% endfor %}
</ul>
</article>
END
File.open("./#{gallery_slug}/index.html", "w") { |file| file.write(gallery_text) }
puts "Gallery complete."