Skip to content

Instantly share code, notes, and snippets.

@donjar
Created October 27, 2017 09:51
Show Gist options
  • Save donjar/d0e59723a88284586ef3a14fe7bbf900 to your computer and use it in GitHub Desktop.
Save donjar/d0e59723a88284586ef3a14fe7bbf900 to your computer and use it in GitHub Desktop.
require 'nokogiri'
require 'time'
def get_name_and_time_data(xml_filename)
xml_file = Nokogiri::XML(File.read(xml_filename))
xml_file.child.children.map do |event|
event_children = event.children
system = event_children.find { |c| c.name == 'System' }
time = system.children.find { |c| c.name == 'TimeCreated' }.values.first
rendering_info = event_children.find { |c| c.name == 'RenderingInfo' }
message = rendering_info.children.find { |c| c.name == 'Message' }.child.text
account = message.match(/Account Name:\s*(\w*)/)[1]
[account, Time.iso8601(time)]
end.sort_by { |name, time| time }
end
def compact_data(name_time_data)
prev_time = nil
prev_name = nil
name_time_data.map do |name, time|
next if name == prev_name && (time - prev_time).abs <= 5
prev_time = time
prev_name = name
[name, time]
end.compact
end
%w(31 34 35 37 38 39 40 41).each do |pc|
puts "=== PC #{pc} ==="
compact_data(get_name_and_time_data("#{pc}.xml")).each do |line|
p line
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment