114 lines
3.8 KiB
Python
114 lines
3.8 KiB
Python
# Umi-OCR
|
||
# OCR software, free and offline. 开源、免费的离线OCR软件。
|
||
# Website - https://github.com/hiroi-sora/Umi-OCR
|
||
# Author - hiroi-sora
|
||
#
|
||
# You are free to use, modify, and distribute Umi-OCR, but it must include
|
||
# the original author's copyright statement and the following license statement.
|
||
# 您可以免费地使用、修改和分发 Umi-OCR ,但必须包含原始作者的版权声明和下列许可声明。
|
||
"""
|
||
Copyright (c) 2023 hiroi-sora
|
||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
of this software and associated documentation files (the "Software"), to deal
|
||
in the Software without restriction, including without limitation the rights
|
||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
copies of the Software, and to permit persons to whom the Software is
|
||
furnished to do so, subject to the following conditions:
|
||
|
||
The above copyright notice and this permission notice shall be included in all
|
||
copies or substantial portions of the Software.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||
SOFTWARE.
|
||
"""
|
||
|
||
|
||
"""
|
||
=========================================================
|
||
=============== 为全局提供 Umi-OCR 关于信息 ===============
|
||
=========================================================
|
||
|
||
在任意python文件中访问:
|
||
from umi_about import UmiAbout
|
||
UmiAbout["fullname"]
|
||
|
||
在任意qml文件中访问:
|
||
UmiAbout.fullname
|
||
"""
|
||
|
||
import os
|
||
import sys
|
||
import psutil
|
||
import platform
|
||
from json import load
|
||
|
||
from umi_log import logger
|
||
|
||
UmiAbout = None
|
||
|
||
|
||
# 初始化时调用一次
|
||
def init(app_path=""):
|
||
"""
|
||
`app_path`: 程序入口文件 路径\n
|
||
"""
|
||
global UmiAbout
|
||
# 读取配置
|
||
try:
|
||
with open("about.json", "r", encoding="utf-8") as file:
|
||
u = load(file)
|
||
except Exception as e:
|
||
os.MessageBox(f"[Error] 无法读取配置 about.json 。\n{e}")
|
||
return False
|
||
# 完整版本号
|
||
v = f'{u["version"]["major"]}.{u["version"]["minor"]}.{u["version"]["patch"]}'
|
||
if u["version"]["prerelease"]:
|
||
v += f'-{u["version"]["prerelease"]}.{u["version"]["prereleaseNumber"]}'
|
||
u["version"]["string"] = v
|
||
# 全名
|
||
u["fullname"] = f'{u["name"]} v{v}'
|
||
# 程序运行信息
|
||
if app_path:
|
||
app_path = os.path.abspath(app_path)
|
||
app_home = os.path.dirname(app_path)
|
||
app_dir = os.path.dirname(app_path)
|
||
else:
|
||
app_path = ""
|
||
app_home = ""
|
||
app_dir = ""
|
||
logger.warning("未能获取程序入口路径。")
|
||
# 简短的平台代号
|
||
_plat = sys.platform
|
||
if _plat.startswith("win32"):
|
||
_system = "win32"
|
||
elif _plat.startswith("linux"):
|
||
_system = "linux"
|
||
elif _plat.startswith("darwin"):
|
||
_system = "darwin"
|
||
elif _plat and isinstance(_plat, str):
|
||
_system = _plat
|
||
else:
|
||
_system = "unknow"
|
||
u["app"] = {
|
||
# 程序入口
|
||
"path": app_path,
|
||
"home": app_home,
|
||
"dir": app_dir,
|
||
# 运行平台
|
||
"system": _system, # 简略系统版本,如 'win32'
|
||
"platform": platform.platform(), # 详细系统版本,如 'Windows-10-10.0.22631-SP0'
|
||
"python": platform.python_version(),
|
||
# 硬件信息,用于debug
|
||
"cpu": f"{platform.processor()} | {psutil.cpu_count(logical=False)}C{psutil.cpu_count(logical=True)}T",
|
||
"ram": f"{(psutil.virtual_memory().total / 1073741824):.1f} GB",
|
||
}
|
||
|
||
UmiAbout = u
|
||
return True
|