98 lines
2.5 KiB
Python
98 lines
2.5 KiB
Python
import sys
|
|
|
|
def human_readable_time(timestamp):
|
|
import datetime
|
|
|
|
now = datetime.datetime.now()
|
|
dt_object = datetime.datetime.fromtimestamp(timestamp)
|
|
diff = now - dt_object
|
|
if diff.days > 0:
|
|
return f"{diff.days} days ago"
|
|
elif diff.seconds < 60:
|
|
return f"{diff.seconds} seconds ago"
|
|
elif diff.seconds < 3600:
|
|
return f"{diff.seconds // 60} minutes ago"
|
|
else:
|
|
return f"{diff.seconds // 3600} hours ago"
|
|
|
|
|
|
def timestamp_to_human_readable(timestamp):
|
|
import datetime
|
|
|
|
try:
|
|
dt_object = datetime.datetime.fromtimestamp(timestamp)
|
|
return dt_object.strftime("%Y-%m-%d %H:%M:%S")
|
|
except:
|
|
return ""
|
|
|
|
|
|
def get_active_app_name_osx():
|
|
from AppKit import NSWorkspace
|
|
|
|
active_app = NSWorkspace.sharedWorkspace().activeApplication()
|
|
return active_app["NSApplicationName"]
|
|
|
|
|
|
def get_active_window_title_osx():
|
|
from Quartz import (
|
|
CGWindowListCopyWindowInfo,
|
|
kCGNullWindowID,
|
|
kCGWindowListOptionOnScreenOnly,
|
|
)
|
|
|
|
app_name = get_active_app_name_osx()
|
|
windows = CGWindowListCopyWindowInfo(
|
|
kCGWindowListOptionOnScreenOnly, kCGNullWindowID
|
|
)
|
|
for window in windows:
|
|
if window["kCGWindowOwnerName"] == app_name:
|
|
return window.get("kCGWindowName", "Unknown")
|
|
return None
|
|
|
|
|
|
def get_active_app_name_windows():
|
|
import psutil
|
|
import win32gui
|
|
import win32process
|
|
|
|
hwnd = win32gui.GetForegroundWindow()
|
|
_, pid = win32process.GetWindowThreadProcessId(hwnd)
|
|
exe = psutil.Process(pid).name()
|
|
return exe
|
|
|
|
|
|
def get_active_window_title_windows():
|
|
import win32gui
|
|
|
|
hwnd = win32gui.GetForegroundWindow()
|
|
return win32gui.GetWindowText(hwnd)
|
|
|
|
|
|
def get_active_app_name_linux():
|
|
return ''
|
|
|
|
|
|
def get_active_window_title_linux():
|
|
return ''
|
|
|
|
def get_active_app_name():
|
|
if sys.platform == "win32":
|
|
return get_active_app_name_windows()
|
|
elif sys.platform == "darwin":
|
|
return get_active_app_name_osx()
|
|
elif sys.platform.startswith("linux"):
|
|
return get_active_app_name_linux()
|
|
else:
|
|
raise NotImplementedError("This platform is not supported")
|
|
|
|
|
|
def get_active_window_title():
|
|
if sys.platform == "win32":
|
|
return get_active_window_title_windows()
|
|
elif sys.platform == "darwin":
|
|
return get_active_window_title_osx()
|
|
elif sys.platform.startswith("linux"):
|
|
return get_active_window_title_linux()
|
|
else:
|
|
raise NotImplementedError("This platform is not supported")
|