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.
64 lines
1.6 KiB
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
|