Open ahmubashshir opened 1 year ago
From a85d7a39c15601ef5ec1e2c3bdc88abe8b6bd209 Mon Sep 17 00:00:00 2001
Message-Id: <a85d7a39c15601ef5ec1e2c3bdc88abe8b6bd209.1679478751.git.ahmubashshir@gmail.com>
From: Mubashshir <ahmubashshir@gmail.com>
Date: Wed, 22 Mar 2023 15:50:09 +0600
Subject: [PATCH] path: Use `xdg.BaseDirectory` to get cache path
Signed-off-by: Mubashshir <ahmubashshir@gmail.com>
---
misc/export_to_2.0 | 11 ++++-------
src/Watcher/analysis.py | 7 +++----
src/Watcher/commands.py | 4 ++--
src/Watcher/files.py | 11 +++++++++++
src/Watcher/watch_log.py | 18 +++++++++---------
src/bin/watcher | 5 ++++-
6 files changed, 33 insertions(+), 23 deletions(-)
mode change 100755 => 100644 src/Watcher/commands.py
create mode 100644 src/Watcher/files.py
diff --git a/misc/export_to_2.0 b/misc/export_to_2.0
index ef30ffe..d6fe65c 100755
--- a/misc/export_to_2.0
+++ b/misc/export_to_2.0
@@ -5,12 +5,11 @@ sys.path.insert(0, "/usr/share/Watcher/")
import csv
from watch_log import get_date
import datetime
+import files
import time_operations as to
def extract_data(date):
- user = os.getlogin()
- path = "/home/" + user +"/.cache/Watcher/raw_data/"
- filename = path + date + ".csv"
+ filename = files.raw_log(date)
l = list() # l = list of (app_name, time spent on app on that session)
d = dict()
@@ -64,7 +63,7 @@ def final_report(window_opened, time_spent):
def export_to_new(date):
window_opened, time_spent = extract_data(date)
sorted_report = final_report(window_opened, time_spent)
- filename = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv"
+ filename = files.daily_log(date)
overwrite_Data = []
with open(filename, 'w') as csvfile:
for x,y in sorted_report.items():
@@ -76,8 +75,6 @@ def export_to_new(date):
del sorted_report
del overwrite_Data
-path = "/home/" + os.getlogin() +"/.cache/Watcher/raw_data/"
+path = os.path.dirname(files.raw_log('empty'))
for file in os.listdir(path):
export_to_new(file[:-4])
-
-
diff --git a/src/Watcher/analysis.py b/src/Watcher/analysis.py
index 0e917f8..d43b1b4 100755
--- a/src/Watcher/analysis.py
+++ b/src/Watcher/analysis.py
@@ -3,11 +3,11 @@ import csv
from watch_log import get_date
import datetime
import time_operations as to
+import files
# creating dictionary to store time spend on each applicaitons on that particular day
def final_report(date):
- path = "/home/" + os.getlogin() +"/.cache/Watcher/daily_data/"
- filename = path + date + ".csv"
+ filename = files.daily_log(date)
report = dict()
if os.path.isfile(filename):
@@ -64,7 +64,7 @@ def weekday_from_date(date):
def weekly_logs(week = str(os.popen('''date +"W%V-%Y"''').read()[0:-1])):
user = os.getlogin()
- filename = "/home/"+user+"/.cache/Watcher/Analysis/"+week+".csv"
+ filename = files.weekly_log(week)
with open(filename, "w") as csvfile:
csvwriter = csv.writer(csvfile, delimiter='\t')
@@ -95,4 +95,3 @@ def weekly_logs(week = str(os.popen('''date +"W%V-%Y"''').read()[0:-1])):
#testing
if __name__ == "__main__":
weekly_logs("W29-2022")
-
diff --git a/src/Watcher/commands.py b/src/Watcher/commands.py
old mode 100755
new mode 100644
index 8805dac..6234011
--- a/src/Watcher/commands.py
+++ b/src/Watcher/commands.py
@@ -1,5 +1,6 @@
import os
import csv
+import uuid
import datetime
from watch_log import get_date
import analysis as anls
@@ -71,8 +72,7 @@ def daily_summary(date = get_date()):
print(" " + Color.GREEN(f'{x:<22}') + '\t ',f'{to.format_time(y):>12}')
def week_summary(week = os.popen('''date +"W%V-%Y"''').read()[:-1]):
- user = os.getlogin()
- filename = "/home/"+user+"/.cache/Watcher/Analysis/"+week+".csv"
+ filename = files.weekly_log(week)
with open(filename, 'r') as file:
csvreader = csv.reader(file, delimiter='\t')
week_overview = dict()
diff --git a/src/Watcher/files.py b/src/Watcher/files.py
new file mode 100644
index 0000000..1f4c9e3
--- /dev/null
+++ b/src/Watcher/files.py
@@ -0,0 +1,11 @@
+from xdg.BaseDirectory import save_cache_path
+from os import getlogin, path
+def weekly_log(week):
+ return path.join(save_cache_path('Watcher/Analysis'), '%s.csv' % week)
+
+def daily_log(date):
+ return path.join(save_cache_path('Watcher/daily_data'), '%s.csv' % date)
+
+def raw_log(date):
+ return path.join(save_cache_path('Watcher/raw_data'), '%s.csv' % date)
+user = getlogin()
diff --git a/src/Watcher/watch_log.py b/src/Watcher/watch_log.py
index 6a44ca5..6119e45 100755
--- a/src/Watcher/watch_log.py
+++ b/src/Watcher/watch_log.py
@@ -1,6 +1,7 @@
import os
import csv
import time
+import files
import get_windows as x
import afk as y
from time_operations import time_difference, time_addition, convert
@@ -16,7 +17,7 @@ def get_date():
return d[0:-1]
def update_csv(date, Data):
- filename = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv"
+ filename = files.daily_log(date)
overwrite_Data = []
with open(filename, 'w') as csvfile:
for x,y in Data.items():
@@ -43,9 +44,9 @@ def import_data(file):
# 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/daily_data/"+get_date()+".csv"
+ filename = files.daily_log(get_date())
if not(os.path.isfile(filename)):
- creat_file = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+get_date()+".csv"
+ creat_file = filename
with open(creat_file, 'w') as fp:
pass
@@ -54,7 +55,7 @@ def log_creation():
data = import_data(filename)
while True:
date = get_date()
- filename = "/home/"+os.getlogin()+"/.cache/Watcher/daily_data/"+date+".csv"
+ filename = files.daily_log(date)
afk = y.is_afk(afkTimeout)
print(data)
@@ -71,18 +72,17 @@ 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/"+get_date()+".csv"):
+ if os.path.isfile(files.daily_log(get_date())):
update_csv(get_date(), data)
- 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"
+ elif not(os.path.isfile(files.daily_log(get_date()))):
+ new_filename = files.daily_log(get_date())
with open(new_filename, 'w') as fp:
pass
data.clear()
-
+
if __name__ == "__main__":
log_creation()
#afk_time = int(round(int(os.popen("xprintidle").read()[:-1])/1000, 0))
#print(afk_time)
-
diff --git a/src/bin/watcher b/src/bin/watcher
index 0dde744..ff91167 100755
--- a/src/bin/watcher
+++ b/src/bin/watcher
@@ -44,7 +44,10 @@ if len(arg) == 2:
help_option()
elif arg[1] == "--start" or arg[1] == "-s":
print("Log creations started... \nif you wanna stop it, use keyboard-shortcut (Ctrl+Shift+C or Ctrl+C)")
- x.log_creation()
+ try:
+ x.log_creation()
+ except KeyboardInterrupt:
+ exit(0)
elif arg[1] == "--version" or arg[1] == "-v":
print("Version: 2.0.0")
else:
--
2.40.0
use git am
to apply the patch
Use pyxdg to get paths