aboutsummaryrefslogblamecommitdiff
path: root/_plugins/generate-torrent.rb
blob: 1c642f42b449d1833ac7e277c6b614922ac07f11 (plain) (tree)































                                                                                                                                                                                                                                                             
TRACKERS = '-a udp://tracker.coppersurfer.tk:6969/announce -a udp://tracker.ccc.de:80/announce -a udp://tracker.publicbt.com:80 -a udp://tracker.istole.it:80 -a http://tracker.openbittorrent.com:80/announce -a http://tracker.ipv6tracker.org:80/announce'

module Jekyll
  class TorrentGenerator < Generator
    safe true

    MEDIA_EXTENSION = {
      'podcasts' => 'ogg',
      'screencasts' => 'mkv'
    }

    def generate(site)
      site.collections.each do |name, collection|
        if ['podcasts', 'screencasts'].include? name
          collection.docs.each do |document|
            date = document.data['date'].strftime('%Y-%m-%d')
            slug = document.data['slug']
            extension = MEDIA_EXTENSION[name]
            file = "#{date}-#{slug}.#{extension}"
            media =  "resources/#{name}/#{file}"
            torrent = "#{media}.torrent"
            webseed = "#{site.config['url']}/#{media}"
            unless File.exist? torrent then
              puts "Missing '#{torrent}' file, generating..."
              puts `mktorrent #{TRACKERS} -f -v -d -c '#{document.content}' -n #{file} -w #{webseed} -o #{torrent} #{media}`
            end
          end
        end
      end
    end
  end
end