office_helper.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import functools
  2. import json
  3. import os.path
  4. import sys
  5. import threading
  6. from core.api_app import start_flask
  7. from core.monitor_file import start_watchdog
  8. from config import base_path, dl_code
  9. from tools.serve_client import ServerClient
  10. from tools.logger_handle import logger
  11. # 初始化 Flask 应用
  12. # 初始化桌面通知工具
  13. # 存储文档内容和推荐内容
  14. current_text = ""
  15. recommendation = "这是默认推荐内容"
  16. def ApplicationInstance(func):
  17. @functools.wraps(func)
  18. def fun(*args, **kwargs):
  19. import socket
  20. try:
  21. global s
  22. s = socket.socket()
  23. host = socket.gethostname()
  24. s.bind((host, 60123))
  25. except:
  26. logger.error('不能重复打开已存在的程序')
  27. return None
  28. return func(*args, **kwargs)
  29. return fun
  30. # 启动所有后台服务
  31. @ApplicationInstance
  32. def start_all_services(serve_client, work_path):
  33. # 启动 Flask 服务
  34. threading.Thread(target=start_flask, args=[serve_client, work_path], daemon=True).start()
  35. # 启动文件监控
  36. threading.Thread(target=start_watchdog, args=[serve_client, work_path], daemon=True).start()
  37. # 启动文档内容检查
  38. # threading.Thread(target=check_for_changes, daemon=True).start()
  39. logger.info('server running')
  40. while True:
  41. a = 0
  42. if __name__ == "__main__":
  43. def set_working_directory():
  44. if getattr(sys, 'frozen', False):
  45. # 打包后的 exe
  46. os.chdir(os.path.dirname(sys.executable))
  47. else:
  48. # 普通 Python 脚本
  49. os.chdir(os.path.dirname(os.path.abspath(__file__)))
  50. with open(f'{dl_code}:\\ProgramData\\OfficeAssistant\\config.json', 'r', encoding='utf-8') as f:
  51. args = json.load(f)
  52. client = ServerClient(args['server'], args['username'], args['password'])
  53. if not os.path.exists(os.path.join(args['worker_path'], args['username'])):
  54. os.makedirs(os.path.join(args['worker_path'], args['username']))
  55. start_all_services(client, os.path.join(args['worker_path'], args['username']))