aboutsummaryrefslogtreecommitdiff
path: root/_plugins/generate-media-files.rb
blob: 388168c26477c9cf5aa43ac3d4b23b79be59201f (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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