From 2a606b947dc318a783cfd202a446c03586a95cf4 Mon Sep 17 00:00:00 2001 From: Waishnav Date: Sat, 17 Sep 2022 05:09:46 +0530 Subject: updated algorithm | update csv at every second --- src/Watcher/watch_log.py | 87 ++++++++++++++++++++++++++---------------------- 1 file changed, 48 insertions(+), 39 deletions(-) (limited to 'src/Watcher/watch_log.py') diff --git a/src/Watcher/watch_log.py b/src/Watcher/watch_log.py index cc85a23..a221194 100755 --- a/src/Watcher/watch_log.py +++ b/src/Watcher/watch_log.py @@ -3,7 +3,7 @@ import csv import time import get_windows as x import afk as y -from time_operations import time_difference +from time_operations import time_difference, time_addition, convert # get current time whenever the function is called def get_time(): @@ -15,59 +15,68 @@ def get_date(): d = os.popen('''date +"%Y-%m-%d"''').read() return d[0:-1] -def append_line_in_csv(date, opened_time, closed_time, window_name): +def update_csv(date, Data): user = os.getlogin() - time_spent = time_difference(opened_time, closed_time) - filename = "/home/"+os.getlogin()+"/.cache/Watcher/raw_data/"+date+".csv" - Data = [closed_time, time_spent, window_name] - with open(filename, 'a') as csvfile: + filename = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv" + overwrite_Data = [] + with open(filename, 'w') as csvfile: + for x,y in Data.items(): + overwrite_Data.append([y,x]) + csvwriter = csv.writer(csvfile, delimiter='\t') - csvwriter.writerow(Data) + csvwriter.writerows(overwrite_Data) # Expected Behaviour == if date got changed then append line in new csv file after initializing the csv file # also if usr is AFK then append line +def import_data(file): + with open(file, 'r') as f: + raw_data = f.readlines() + data = dict() + #l = [] + for x in raw_data: + x = x.split('\t') + a = {x[1][:-1]:x[0]} + #l.append(x[1][:-1]) + data.update(a) + return data + # TODO: AFK feature devlopement (it will be developed after completing alpha product (after whole project up end running) def log_creation(): - filename = "/home/"+os.getlogin()+"/.cache/Watcher/raw_data/"+get_date()+".csv" + filename = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+get_date()+".csv" if not(os.path.isfile(filename)): - with open(filename, 'a') as csvfile: - csvwriter = csv.writer(csvfile, delimiter='\t') - csvwriter.writerow([get_time(), "00:00:00", ""]) - logout_time = os.popen("tail -n1 " + filename).read().split("\t")[0] - append_line_in_csv(get_date(), logout_time, get_time(), "User-logged-in") + os.popen("touch " + filename) afk = False - afkTimeout = 3 # timeout in minutes - + afkTimeout = 1 # timeout in minutes + data = import_data(filename) while True: - opened_at = get_time() - previous_window = x.active_window() + date = get_date() + filename = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv" + afk = y.is_afk(afkTimeout) - if (y.returned_from_afk(afk, afkTimeout)): - previous_window = "AFK" - if os.path.exists(filename): - opened_at = os.popen(" tail -n1 "+ filename).read().split("\t")[0] - else: - previous_date = os.popen("""date -d "1 day ago" '+%Y-%m-%d'""").read()[:-1] - opened_at = os.popen(" tail -n1 ~/.cache/Watcher/raw_data/"+previous_date+".csv").read().split("\t")[0] - afk = False + if not(afk): + active_window = x.active_window() + usage = data.get(active_window) + if usage == None: + usage = "00:00:00" - if (x.is_window_changed(previous_window, afk, afkTimeout) and not afk): - if(y.is_afk(afkTimeout)): - afk = True - # minimizing error - closed_at = time_difference("00:02:58", get_time()) - else: - closed_at = get_time() # for next_window its the opening time + time.sleep(1) + if y.is_afk(afkTimeout): + afk_time = int(round(int(os.popen("xprintidle").read()[:-1])/1000, 0)) + usage = time_difference(convert(afk_time), usage) - date = get_date() - filename = "/home/"+os.getlogin()+"/.cache/Watcher/raw_data/"+date+".csv" - append_line_in_csv(date, opened_at, closed_at, previous_window) + usage = time_addition("00:00:01", usage) + data.update({active_window : usage}) + if os.path.isfile("/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv"): + update_csv(get_date(), data) + elif not(os.path.isfile("/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv")): + os.popen("touch " + "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv") + data.clear() if __name__ == "__main__": - #log_creation() - filename = "/home/"+os.getlogin()+"/.cache/Watcher/raw_data/"+get_date()+".csv" - opened_at = os.popen(" tail -n1 "+ filename).read().split("\t")[0] - print(opened_at) + log_creation() + #afk_time = int(round(int(os.popen("xprintidle").read()[:-1])/1000, 0)) + #print(afk_time) + -- cgit v1.2.3 From 096138c06eb6d8db6584039584b49ed5cd4d6f39 Mon Sep 17 00:00:00 2001 From: Pawan Patil <63651567+PawanPatil19@users.noreply.github.com> Date: Thu, 20 Oct 2022 03:42:22 +0800 Subject: fix : v2.0 Issue to avoid replication of data as day changed --- src/Watcher/watch_log.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/Watcher/watch_log.py') diff --git a/src/Watcher/watch_log.py b/src/Watcher/watch_log.py index a221194..0d2095a 100755 --- a/src/Watcher/watch_log.py +++ b/src/Watcher/watch_log.py @@ -46,7 +46,9 @@ def import_data(file): def log_creation(): filename = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+get_date()+".csv" if not(os.path.isfile(filename)): - os.popen("touch " + filename) + creat_file = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+get_date()+".csv" + with open(creat_file, 'w') as fp: + pass afk = False afkTimeout = 1 # timeout in minutes @@ -69,11 +71,15 @@ def log_creation(): usage = time_addition("00:00:01", usage) data.update({active_window : usage}) - if os.path.isfile("/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv"): + if os.path.isfile("/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+get_date()+".csv"): update_csv(get_date(), data) - elif not(os.path.isfile("/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv")): - os.popen("touch " + "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv") + elif not(os.path.isfile("/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+get_date()+".csv")): + new_filename = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+get_date()+".csv" + with open(new_filename, 'w') as fp: + pass + data.clear() + if __name__ == "__main__": log_creation() -- cgit v1.2.3 From 4c214e401abc4d7d4c9a7182348b6bebf78de34a Mon Sep 17 00:00:00 2001 From: Waishnav Date: Mon, 14 Nov 2022 11:03:06 +0530 Subject: changed some variable names --- src/Watcher/get_windows.py | 12 +++--------- src/Watcher/watch_log.py | 2 +- 2 files changed, 4 insertions(+), 10 deletions(-) (limited to 'src/Watcher/watch_log.py') diff --git a/src/Watcher/get_windows.py b/src/Watcher/get_windows.py index c22d909..a0be469 100755 --- a/src/Watcher/get_windows.py +++ b/src/Watcher/get_windows.py @@ -1,12 +1,4 @@ import os -import time -import platform -from afk import get_afk_status - -if platform.system() == 'Windows': - from win32gui import GetWindowText, GetForegroundWindow -elif platform.system() == 'Darwin': - import subprocess # get title name of app that user working on def active_window_title(): @@ -51,5 +43,7 @@ def active_window(): def previous_window(array_of_window, active_window): array_of_window.remove(active_window) array_of_window.append(active_window) - return l[-2] + return array_of_window[-2] +if __name__ == "__main__": + print(active_window()) diff --git a/src/Watcher/watch_log.py b/src/Watcher/watch_log.py index 0d2095a..6a44ca5 100755 --- a/src/Watcher/watch_log.py +++ b/src/Watcher/watch_log.py @@ -16,7 +16,6 @@ def get_date(): return d[0:-1] def update_csv(date, Data): - user = os.getlogin() filename = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv" overwrite_Data = [] with open(filename, 'w') as csvfile: @@ -57,6 +56,7 @@ def log_creation(): date = get_date() filename = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv" afk = y.is_afk(afkTimeout) + print(data) if not(afk): active_window = x.active_window() -- cgit v1.2.3