Last active
October 15, 2019 13:41
-
-
Save annacruz/6d8123904bf801f2a0608d7d8e827c41 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env ruby | |
require 'json' | |
require 'date' | |
file = File.open(ARGV[0]) | |
file_data = file.read | |
timesheet = JSON.parse(file_data) | |
with_converted_data = [] | |
timesheet.each do |worklog| | |
converted = Time.at(worklog['timestamp'].to_i).to_datetime.strftime('%Y-%m-%d') | |
with_converted_data << { "timestamp": worklog['timestamp'], "converted_data": converted, "message": worklog['message']} | |
end | |
grouped = with_converted_data.group_by { |i| i[:converted_data] } | |
worked_hours_month = [] | |
grouped.each do |item| | |
timestamps = item[1].map { |i| Time.at(i[:timestamp].to_i) } | |
next if timestamps.size == 1 || (timestamps.size % 2).odd? | |
worked_hours_day = 0 | |
workhours = timestamps.sort | |
workhours.each_with_index do |workhour, index| | |
next if index.zero? | |
worked_hours_day += (workhour - workhours[index - 1]) | |
end | |
worked_hours_day = (worked_hours_day / 3600).round(2) | |
print "Date: #{item[0]} -> Worked hours: #{worked_hours_day} \n" | |
print "Messages: \n" | |
item[1].each do |i| | |
print i[:message] + "\n" | |
end | |
worked_hours_month << worked_hours_day | |
print "\n\n" | |
end | |
total_worked = worked_hours_month.reduce(:+) | |
print "Total worked in the period: #{total_worked}\n" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env ruby | |
require 'json' | |
files = Dir["./2019*.json"] | |
name_to_search = "Anna Cruz" | |
filename = name_to_search.downcase.split[0] + '_filtered.json' | |
new_file_content = [] | |
files.sort.each do |file| | |
current_file = File.open(file) | |
file_data = current_file.read | |
slack_entries = JSON.parse(file_data) | |
selected = slack_entries.select do |entry| | |
begin | |
entry['user_profile']['real_name'] == name_to_search | |
rescue | |
next | |
end | |
end | |
only_necessary = [] | |
selected.each do |item| | |
only_necessary << { timestamp: item['ts'].sub(/\.[0-9]*/, ''), message: item['text'].delete('```')}.to_json | |
end | |
new_file_content << only_necessary | |
end | |
File.open(filename, 'a+') { |f| | |
f.write('[') | |
new_file_content = new_file_content.flatten | |
new_file_content.each_with_index do |content, index| | |
f.write(content) | |
f.puts(',') unless index == new_file_content.size - 1 | |
f.puts if index == new_file_content.size - 1 | |
end | |
f.write(']') | |
f.close | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment