* import fixes for Paris

This commit is contained in:
Seth Call 2015-12-18 11:35:56 -06:00
parent 8c7c345859
commit ff6f133620
5 changed files with 166 additions and 61 deletions

View File

@ -405,6 +405,7 @@ module JamRuby
s3_target = audio_path + '/' + output_filename
@@log.debug("uploading #{output_file} to #{s3_target}")
JamTrackImporter.song_storage_manager.upload(s3_target, output_file)
finish('success', nil)
end
@ -414,6 +415,8 @@ module JamRuby
end
def dry_run(metadata, metalocation)
# STDIN.gets
@@log.debug("dry_run: #{metadata.inspect}")
metadata ||= {}
@ -1124,16 +1127,9 @@ module JamRuby
possible_part = "#{bits[2]} #{bits[3]}"
end
# this implies we've found an instrument and part in file name; try this out first
if possible_instrument && possible_part
result = determine_instrument(possible_instrument, possible_part)
instrument = result[:instrument]
part = result[:part]
end
# otherwise, try mapping
if instrument.nil?
mapping = JamTrackImporter.paris_mapping[possible_instrument]
if instrument.nil? && possible_instrument
mapping = JamTrackImporter.paris_mapping[possible_instrument.downcase]
if mapping
instrument = mapping[:instrument].downcase
part = mapping[:part]
@ -1450,58 +1446,9 @@ module JamRuby
@@log.debug("no existing track found; creating a new one")
track = JamTrackTrack.new
track.original_filename = wav_file
track.original_audio_s3_path = wav_file
file = JamTrackFile.new
file.original_filename = wav_file
file.original_audio_s3_path = wav_file
parsed_wav = parse_file(wav_file)
unknowns = 0
if parsed_wav[:master]
track.track_type = 'Master'
track.part = 'Master Mix'
track.instrument_id = 'computer'
tracks << track
@@log.debug("#{self.name} master! filename: #{parsed_wav[:filename]}")
elsif parsed_wav[:type] == :track
if !parsed_wav[:instrument] || !parsed_wav[:part]
@@log.warn("#{self.name} track! instrument: #{parsed_wav[:instrument] ? parsed_wav[:instrument] : 'N/A'}, part: #{parsed_wav[:part] ? parsed_wav[:part] : 'N/A'}, filename: #{parsed_wav[:filename]} ")
unknowns += 1
else
@@log.debug("#{self.name} track! instrument: #{parsed_wav[:instrument] ? parsed_wav[:instrument] : 'N/A'}, part: #{parsed_wav[:part] ? parsed_wav[:part] : 'N/A'}, filename: #{parsed_wav[:filename]} ")
end
track.instrument_id = parsed_wav[:instrument] || 'other'
track.track_type = 'Track'
track.part = parsed_wav[:part] || "Other #{unknowns}"
tracks << track
elsif parsed_wav[:type] == :clicktxt
file.file_type = 'ClickTxt'
addt_files << file
elsif parsed_wav[:type] == :clickwav
file.file_type = 'ClickWav'
addt_files << file
# and also add a JamTrackTrack for this click track
track.track_type = 'Click'
track.part = 'Clicktrack'
track.instrument_id = 'computer'
track.position = 10000
tracks << track
elsif parsed_wav[:type] == :precount
file.file_type = 'Precount'
file.precount_num = parsed_wav[:precount_num]
addt_files << file
else
finish("unknown_file_type", "unknown file type #{wave_file}")
if !assign_instrument_parts(wav_file, tracks, addt_files)
return false
end
end
jam_track.jam_track_tracks.each do |jam_track_track|
@ -1537,6 +1484,100 @@ module JamRuby
return synchronize_audio_files(jam_track, skip_audio_upload)
end
def reassign_instrument_parts(jam_track)
tracks = []
addt_files = []
jam_track.jam_track_tracks.each do |track|
return if !assign_instrument_parts(track.original_filename, tracks, addt_files, true)
end
@@log.info("sorting #{tracks.length} tracks")
tracks = sort_tracks(tracks)
deduplicate_parts(tracks)
tracks.each do |track|
if track.changed?
puts "CHANGE: #{track.changes.inspect}"
end
if !track.save!
finish('invalid_audio', track.errors.inspect)
end
end
end
def assign_instrument_parts(wav_file, tracks, addt_files, reassign = false)
if !reassign
track = JamTrackTrack.new
track.original_filename = wav_file
track.original_audio_s3_path = wav_file
file = JamTrackFile.new
file.original_filename = wav_file
file.original_audio_s3_path = wav_file
else
matches = JamTrackTrack.where(original_filename: wav_file)
if matches.count > 1
raise "multiple jam track tracks encountered with #{wav_file} as original_filename"
elsif matches.count == 0
raise "unable to locate jam track wit h#{wav_file} as original_filename"
end
track = matches[0]
track.original_audio_s3_path = wav_file
file = nil
end
parsed_wav = parse_file(wav_file)
unknowns = 0
if parsed_wav[:master]
track.track_type = 'Master'
track.part = 'Master Mix'
track.instrument_id = 'computer'
tracks << track
@@log.debug("#{self.name} master! filename: #{parsed_wav[:filename]}")
elsif parsed_wav[:type] == :track
if !parsed_wav[:instrument] || !parsed_wav[:part]
@@log.warn("#{self.name} track! instrument: #{parsed_wav[:instrument] ? parsed_wav[:instrument] : 'N/A'}, part: #{parsed_wav[:part] ? parsed_wav[:part] : 'N/A'}, filename: #{parsed_wav[:filename]} ")
unknowns += 1
else
@@log.debug("#{self.name} track! instrument: #{parsed_wav[:instrument] ? parsed_wav[:instrument] : 'N/A'}, part: #{parsed_wav[:part] ? parsed_wav[:part] : 'N/A'}, filename: #{parsed_wav[:filename]} ")
end
track.instrument_id = parsed_wav[:instrument] || 'other'
track.track_type = 'Track'
track.part = parsed_wav[:part] || "Other #{unknowns}"
tracks << track
elsif parsed_wav[:type] == :clicktxt
file.file_type = 'ClickTxt'
addt_files << file
elsif parsed_wav[:type] == :clickwav
if file
file.file_type = 'ClickWav'
addt_files << file
end
# and also add a JamTrackTrack for this click track
track.track_type = 'Click'
track.part = 'Clicktrack'
track.instrument_id = 'computer'
track.position = 10000
tracks << track
elsif parsed_wav[:type] == :precount
file.file_type = 'Precount'
file.precount_num = parsed_wav[:precount_num]
addt_files << file
else
finish("unknown_file_type", "unknown file type #{wave_file}")
return false
end
return true
end
def synchronize_audio_files(jam_track, skip_audio_upload)
begin
@ -2905,6 +2946,51 @@ module JamRuby
end
end
def create_importer_from_existing(jam_track)
importer = JamTrackImporter.new(@storage_format)
importer.name = jam_track.name
importer.metadata = load_metalocation(jam_track.metalocation)
importer
end
def resync_instruments(licensor)
load_paris_mappings if @paris_mapping.nil?
JamTrack.where(licensor_id: licensor.id).each do |jam_track|
puts "RESYNCING JAMTRACK #{jam_track.id}"
JamTrackTrack.where(jam_track_id: jam_track.id).order(:position).each do |track|
puts "BEFORE TRACK #{track.instrument_id} #{track.part}"
end
importer = create_importer_from_existing(jam_track)
importer.reassign_instrument_parts(jam_track)
#puts ">>>>>>>>> HIT KEY TO CONTINUE <<<<<<<<<<"
#STDIN.gets
end
end
def missing_masters(licensor)
count = 0
JamTrack.where(licensor_id: licensor.id).each do |jam_track|
if jam_track.master_track.nil?
puts "MISSING #{jam_track.metalocation}"
count += 1
end
end
puts "missing master count: #{count}"
end
def tency_genre_dump
load_tency_mappings

View File

@ -214,6 +214,7 @@
"Bass Guitar": { "client_id": 20, "server_id": "bass guitar" },
"Computer": { "client_id": 30, "server_id": "computer" },
"Drums": { "client_id": 40, "server_id": "drums" },
"Percussion": { "client_id": 41, "server_id": "percussion" },
"Electric Guitar": { "client_id": 50, "server_id": "electric guitar" },
"Keyboard": { "client_id": 60, "server_id": "keyboard" },
"Piano": { "client_id": 61, "server_id": "piano" },
@ -244,6 +245,7 @@
20: { "server_id": "bass guitar" },
30: { "server_id": "computer" },
40: { "server_id": "drums" },
41: { "server_id": "percussion" },
50: { "server_id": "electric guitar" },
60: { "server_id": "keyboard" },
61: { "server_id": "piano"} ,

View File

@ -68,6 +68,7 @@
"computer": "computer",
"_default": "default",
"drums": "drums",
"percussion": "drums",
"electric guitar": "electric_guitar",
"euphonium": "euphonium",
"flute": "flute",

View File

@ -95,7 +95,7 @@ Logging::Rails.configure do |config|
Logging.logger['ActiveSupport::OrderedOptions'].level = :warn
Logging.logger['InfluxDB'].level = :warn
#Logging.logger['Rails'].level = :warn
#Logging.logger['ActiveRecord::Base'].level = :warn
Logging.logger['ActiveRecord::Base'].level = :warn
# Under Phusion Passenger smart spawning, we need to reopen all IO streams
# after workers have forked.

View File

@ -24,6 +24,11 @@ namespace :jam_tracks do
JamTrackImporter.dry_run
end
task paris_create_masters: :environment do |task, args|
JamTrackImporter.storage_format = 'Paris'
JamTrackImporter.create_masters
end
task timtracks_dry_run: :environment do |task, args|
JamTrackImporter.storage_format = 'TimTracks'
JamTrackImporter.dry_run
@ -39,7 +44,6 @@ namespace :jam_tracks do
JamTrackImporter.add_tency_metadata
end
task tency_create_master: :environment do |task, args|
JamTrackImporter.storage_format = 'Tency'
@ -85,11 +89,23 @@ namespace :jam_tracks do
JamTrackImporter.synchronize_from_meta("audio/#{path}/meta.yml", resync_audio: true, skip_audio_upload: false)
end
task resync_instruments: :environment do |task, args|
JamTrackImporter.storage_format = 'Paris'
JamTrackImporter.resync_instruments(JamTrackLicensor.find_by_name!('Paris Music'))
end
task dump_missing_masters: :environment do |task, args|
JamTrackImporter.storage_format = 'Paris'
JamTrackImporter.missing_masters(JamTrackLicensor.find_by_name!('Paris Music'))
end
task tency_genre_dump: :environment do |task, args|
JamTrackImporter.storage_format = 'Tency'
JamTrackImporter.tency_genre_dump
end
task paris_genre_dump: :environment do |task, args|
JamTrackImporter.storage_format = 'Paris'