dev 02022051

This commit is contained in:
Julian Freeman
2024-02-02 20:51:21 -04:00
parent a11f35ec7f
commit da7f17b6e6
22 changed files with 2194 additions and 1 deletions

66
util_func.py Normal file
View File

@@ -0,0 +1,66 @@
# coding: utf8
import os
import json
from pathlib import Path
import xml.etree.ElementTree as Et
from global_vars import request_content
def get_isp_name() -> str:
try:
data = json.loads(request_content("https://ipinfo.io/"))
return data.get("org", "[Not found]")
except json.JSONDecodeError:
return "[Decode Error]"
def get_app_icon_path(info_file: Path) -> str:
try:
tree = Et.parse(info_file)
except Et.ParseError:
return ""
root = tree.getroot()
dic = root[0]
keys = []
values = []
for c in dic:
if c.tag == "key":
keys.append(c.text)
else:
values.append(c.text)
res = {k: v for k, v in zip(keys, values)}
if "CFBundleIconFile" not in res:
return ""
name = res["CFBundleIconFile"]
path = str(info_file.parent / "Resources" / name)
if not path.endswith(".icns"):
path = path + ".icns"
return path
def get_mac_installed_software() -> dict[str, str]:
p1 = Path("/Applications")
p2 = Path("/System/Applications")
p3 = Path(os.path.expanduser("~"), "Applications")
all_soft: list[Path] = []
def search(path: Path):
for c in path.glob("*"):
if str(c).endswith(".app"):
if c.is_dir():
all_soft.append(c)
elif c.is_dir():
search(c)
search(p1)
search(p2)
search(p3)
all_soft.sort(key=lambda x: x.name.lower())
return {
app.name: get_app_icon_path(Path(app) / "Contents" / "Info.plist")
for app in all_soft
}