193 lines
4.7 KiB
Python
193 lines
4.7 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
"""
|
|||
|
|
Screen2Feishu 安装和设置脚本
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import os
|
|||
|
|
import sys
|
|||
|
|
import subprocess
|
|||
|
|
import shutil
|
|||
|
|
from pathlib import Path
|
|||
|
|
|
|||
|
|
|
|||
|
|
def print_header(text):
|
|||
|
|
"""打印标题"""
|
|||
|
|
print("\n" + "=" * 60)
|
|||
|
|
print(f" {text}")
|
|||
|
|
print("=" * 60)
|
|||
|
|
|
|||
|
|
|
|||
|
|
def print_step(text):
|
|||
|
|
"""打印步骤"""
|
|||
|
|
print(f"\n▶ {text}")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def check_python_version():
|
|||
|
|
"""检查Python版本"""
|
|||
|
|
print_step("检查Python版本...")
|
|||
|
|
|
|||
|
|
version = sys.version_info
|
|||
|
|
if version.major < 3 or (version.major == 3 and version.minor < 8):
|
|||
|
|
print(f" Python版本过低: {sys.version}")
|
|||
|
|
print("请使用 Python 3.8 或更高版本")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
print(f" Python版本: {sys.version}")
|
|||
|
|
return True
|
|||
|
|
|
|||
|
|
|
|||
|
|
def install_dependencies():
|
|||
|
|
"""安装依赖"""
|
|||
|
|
print_step("安装依赖...")
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
# 检查是否已安装pip
|
|||
|
|
subprocess.run([sys.executable, "-m", "pip", "--version"],
|
|||
|
|
check=True, capture_output=True)
|
|||
|
|
|
|||
|
|
# 安装依赖
|
|||
|
|
print("正在安装核心依赖...")
|
|||
|
|
subprocess.run([
|
|||
|
|
sys.executable, "-m", "pip", "install",
|
|||
|
|
"-r", "requirements.txt"
|
|||
|
|
], check=True)
|
|||
|
|
|
|||
|
|
print(" 依赖安装完成")
|
|||
|
|
return True
|
|||
|
|
|
|||
|
|
except subprocess.CalledProcessError as e:
|
|||
|
|
print(f" 依赖安装失败: {e}")
|
|||
|
|
return False
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f" 发生错误: {e}")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
|
|||
|
|
def create_directories():
|
|||
|
|
"""创建必要的目录"""
|
|||
|
|
print_step("创建目录...")
|
|||
|
|
|
|||
|
|
directories = [
|
|||
|
|
"monitor_images",
|
|||
|
|
"processed_images",
|
|||
|
|
"logs"
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
for directory in directories:
|
|||
|
|
path = Path(directory)
|
|||
|
|
if not path.exists():
|
|||
|
|
path.mkdir(exist_ok=True)
|
|||
|
|
print(f" 创建目录: {directory}")
|
|||
|
|
else:
|
|||
|
|
print(f"ℹ️ 目录已存在: {directory}")
|
|||
|
|
|
|||
|
|
return True
|
|||
|
|
|
|||
|
|
|
|||
|
|
def create_config():
|
|||
|
|
"""创建配置文件"""
|
|||
|
|
print_step("创建配置文件...")
|
|||
|
|
|
|||
|
|
config_path = Path("config.yaml")
|
|||
|
|
example_path = Path("config.example.yaml")
|
|||
|
|
|
|||
|
|
if config_path.exists():
|
|||
|
|
print("ℹ️ 配置文件已存在,跳过创建")
|
|||
|
|
return True
|
|||
|
|
|
|||
|
|
if not example_path.exists():
|
|||
|
|
print(" 示例配置文件不存在")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
# 复制示例配置文件
|
|||
|
|
shutil.copy(example_path, config_path)
|
|||
|
|
print(" 已创建 config.yaml,请根据需要编辑配置")
|
|||
|
|
|
|||
|
|
# 显示配置说明
|
|||
|
|
print("\n📝 配置说明:")
|
|||
|
|
print("1. 编辑 config.yaml 文件")
|
|||
|
|
print("2. 填入你的 AI API Key")
|
|||
|
|
print("3. 填入你的飞书应用信息:")
|
|||
|
|
print(" - app_id")
|
|||
|
|
print(" - app_secret")
|
|||
|
|
print(" - app_token")
|
|||
|
|
print(" - table_id")
|
|||
|
|
print("4. 根据需要调整其他配置")
|
|||
|
|
|
|||
|
|
return True
|
|||
|
|
|
|||
|
|
|
|||
|
|
def show_usage():
|
|||
|
|
"""显示使用说明"""
|
|||
|
|
print_step("使用说明:")
|
|||
|
|
|
|||
|
|
print("""
|
|||
|
|
1. 配置文件:
|
|||
|
|
- 编辑 config.yaml,填入你的 API Key 和飞书信息
|
|||
|
|
|
|||
|
|
2. 启动程序:
|
|||
|
|
python main.py
|
|||
|
|
|
|||
|
|
3. 测试模式:
|
|||
|
|
python main.py --test
|
|||
|
|
|
|||
|
|
4. 查看帮助:
|
|||
|
|
python main.py --help
|
|||
|
|
|
|||
|
|
5. 运行测试:
|
|||
|
|
python -m unittest discover tests
|
|||
|
|
|
|||
|
|
6. 查看文档:
|
|||
|
|
- README.md - 项目说明
|
|||
|
|
- docs/OPTIMIZED_R&D.md - 开发文档
|
|||
|
|
- docs/PROJECT_IMPROVEMENT_PLAN.md - 改进计划
|
|||
|
|
""")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def main():
|
|||
|
|
"""主函数"""
|
|||
|
|
print_header("Screen2Feishu 安装向导")
|
|||
|
|
|
|||
|
|
print("欢迎使用 Screen2Feishu 安装向导!")
|
|||
|
|
print("本脚本将帮助你完成以下步骤:")
|
|||
|
|
print("1. 检查Python版本")
|
|||
|
|
print("2. 安装依赖")
|
|||
|
|
print("3. 创建必要的目录")
|
|||
|
|
print("4. 创建配置文件")
|
|||
|
|
|
|||
|
|
# 询问用户是否继续
|
|||
|
|
response = input("\n是否继续? (y/n): ").strip().lower()
|
|||
|
|
if response not in ['y', 'yes']:
|
|||
|
|
print("安装已取消")
|
|||
|
|
return
|
|||
|
|
|
|||
|
|
# 执行安装步骤
|
|||
|
|
steps = [
|
|||
|
|
("检查Python版本", check_python_version),
|
|||
|
|
("安装依赖", install_dependencies),
|
|||
|
|
("创建目录", create_directories),
|
|||
|
|
("创建配置文件", create_config),
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
all_success = True
|
|||
|
|
for step_name, step_func in steps:
|
|||
|
|
print_header(step_name)
|
|||
|
|
if not step_func():
|
|||
|
|
print(f" {step_name} 失败")
|
|||
|
|
all_success = False
|
|||
|
|
break
|
|||
|
|
|
|||
|
|
if all_success:
|
|||
|
|
print_header("安装完成!")
|
|||
|
|
print(" 所有步骤完成!")
|
|||
|
|
show_usage()
|
|||
|
|
print("\n🎉 Screen2Feishu 安装成功!")
|
|||
|
|
print("请编辑 config.yaml 文件,然后运行: python main.py")
|
|||
|
|
else:
|
|||
|
|
print_header("安装失败")
|
|||
|
|
print(" 安装过程中出现问题,请检查错误信息并重试")
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
main()
|