4 require 'yajl/json_gem'
8 $metafile = "tmp/songtitle"
9 $cuefile = "cue/#{$set}.cues"
11 def write_metafile(title)
12 File.open($metafile, "a+") do |fp|
13 fp.flock(File::LOCK_EX)
18 fp.flock(File::LOCK_UN)
22 def write_cuefile(title)
23 line = [ Time.now.to_i, title ].to_csv
24 File.open($cuefile, "a") do |fp|
25 fp.flock(File::LOCK_EX)
28 fp.flock(File::LOCK_UN)
33 file = "sets/#{$set}/tracklist.csv"
34 csv = CSV.read(File.open(file), encoding: 'UTF-8')
35 names = csv.shift.map(&:to_sym)
36 $tracklist = csv.map do |row|
37 Hash[*names.zip(row).flatten]
46 $tracklist.sort! {|a,b| a[:index].to_i <=> b[:index].to_i }
55 class App < Sinatra::Base
57 set :protection, :except => :frame_options
60 get '/tracklist.json' do
65 index = params["index"].to_i
66 if ( index < 0 || index > $tracklist.length )
68 return "No such track index."
71 title = ( index < 1 ) ? "-" : $tracklist.detect{|a| a[:index].to_i == index.to_i }[:title]
78 get '/js/handler.js' do
79 content_type 'text/javascript'
83 get '/css/meta.css' do
84 content_type 'text/css'
89 erb :index, :locals => { :mixtitle => $set, :tracklist => tracklist_json }