require_relative "sheet.rb" require 'digest' CURRENT_BLOCK = 12345 COMMUNITY_REACTIONS = 54321 def main sheet = Sheet.new('Metadata/InvisibleFriends_Metadata.csv') sheet.headers.concat(['Seed', 'Filename', 'SHA256']) puts "Extending metadata" sheet.each do |row| padded_id = row["Number"].rjust(5, '0') gif_path = "GIFs/INVISIBLE_FRIENDS_#{padded_id}.gif" row["Seed"] = row["Number"] row["Filename"] = gif_path row["SHA256"] = shasum(gif_path) print '.' end puts "" sorted = sheet.dup sorted.data.sort! { |a, b| a.fetch("SHA256") <=> b.fetch("SHA256") } sorted.data.shuffle!(random: Random.new(CURRENT_BLOCK)) sorted.data.rotate!(COMMUNITY_REACTIONS) sorted.each_with_index { |row, i| row['Number'] = i + 1 } sorted.save("Metadata/enriched_and_sorted.csv") combined_shasum = sorted.reduce("") { |str, row| str + row["SHA256"] } provenance = Digest::SHA256.hexdigest(combined_shasum) File.open('provenance.txt', 'w') { |f| f << provenance } end def shasum(path) `shasum -a 256 "#{path}" | awk '{ print $1 }'`.chomp end main