module Jekyll class MediaFilesGenerator < Generator safe true priority :high def generate(site) site.collections['podcasts'].docs.each do |document| date = document.data['date'].strftime('%Y-%m-%d') slug = document.data['slug'] flac = "resources/podcasts/#{date}-#{slug}.flac" ogg = "resources/podcasts/#{date}-#{slug}.ogg" unless File.exist? ogg then puts "Missing '#{ogg}' file, generating..." puts `ffmpeg -i #{flac} -ar 48000 -vn -c:a libvorbis -b:a 320k #{ogg}` site.static_files << Jekyll::StaticFile.new(site, site.source, '', ogg) end checksum_file = "#{ogg}.checksum" checksum = `sha256sum #{flac} #{ogg} | sha256sum | awk '{ print $1 }'` if File.exist? checksum_file then unless checksum == File.read(checksum_file) raise "Checksum mismatch for '#{flac}'.\nRe-generate the Ogg files and checksums with:\n\nrm '#{ogg}' '#{checksum_file}'" end else puts "Missing checksum for '#{flac}', generating..." File.write(checksum_file, checksum) end end end end end