You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ktorrent/estimation-scripts/processlog.rb

64 lines
1.6 KiB

IDX_TIME = 0
IDX_STATE = 5
def adjustTimestamps(perFile)
startTime = 0
offset = 0
lastDeactivation = -1
lastSample = nil
perFile.each_key do |file|
perFile[file].each do |line|
time = line[0].to_i
startTime = time if startTime == 0
time = time - startTime - offset
line[IDX_TIME] = time.to_s
if line[IDX_STATE] == 'RUNNING'
lastSample = line
elsif line[IDX_STATE] == 'ACTIVATED'
offset = time - lastDeactivation unless lastDeactivation == -1
perFile[file].delete(line)
elsif line[IDX_STATE] == 'DEACTIVATED'
lastDeactivation = time
perFile[file].delete(line)
elsif line[IDX_STATE] == 'FINISHED'
# print last sample: time speed=0 downloaded left=0 peersTotal
# puts "#{line[0].to_i},0,#{lastSample[2].to_i + lastSample[3].to_i},0,#{lastSample[4].to_i}"
perFile[file].delete(line)
end
end
end
end
perFile = Hash.new
inputFile = File.new(ARGV[0])
inputFile.each do |line|
splitted = line.strip.split(",")
if splitted.length == 7
key = splitted[0]
perFile[key] = Array.new if perFile[key] == nil
perFile[key].push(splitted[1..6])
end
end
inputFile.close
adjustTimestamps(perFile)
perFile.each_key do |file|
outfile = File.new("torrent-#{file}.log", "w")
perFile[file].each do |line|
outfile.puts line[0..4].join(",")
end
outfile.close
end