95 lines
2.4 KiB
Python
95 lines
2.4 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
飞书云盘自动上传脚本
|
||
功能:将本地备份自动上传到飞书云盘指定文件夹
|
||
"""
|
||
|
||
import os
|
||
import sys
|
||
import json
|
||
import subprocess
|
||
from datetime import datetime
|
||
from pathlib import Path
|
||
|
||
# 添加项目路径
|
||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||
|
||
# 飞书配置
|
||
FOLDER_TOKEN = "C9jPf8MVwlvWgldZ7VHcHrLTnCf" # openclaw 文件夹
|
||
VECTOR_FOLDER_NAME = "向量记忆系统"
|
||
|
||
# 导入备份模块
|
||
from vector_memory import VectorMemorySystem
|
||
from memory_backup import MemoryBackup
|
||
|
||
|
||
def upload_file_to_feishu(file_path: str, folder_token: str) -> dict:
|
||
"""上传文件到飞书云盘"""
|
||
import requests
|
||
|
||
# 这个需要飞书开放平台的应用有云空间权限
|
||
# 使用用户身份调用 API(需要用户授权)
|
||
print(f"📤 准备上传: {file_path}")
|
||
|
||
# 方案:返回手动上传指引
|
||
return {
|
||
"success": False,
|
||
"message": "需要飞书应用权限",
|
||
"file_path": str(file_path)
|
||
}
|
||
|
||
|
||
def do_backup_and_upload():
|
||
"""执行备份并尝试上传"""
|
||
print("=" * 60)
|
||
print("🧠 向量记忆系统 - 定时备份")
|
||
print("=" * 60)
|
||
print(f"⏰ 执行时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||
|
||
# 1. 获取 API Key
|
||
api_key = os.getenv("SILICONFLOW_API_KEY")
|
||
if not api_key:
|
||
print("❌ 未设置 SILICONFLOW_API_KEY")
|
||
return False
|
||
|
||
# 2. 执行本地备份
|
||
try:
|
||
vm = VectorMemorySystem(api_key=api_key)
|
||
backup = MemoryBackup(backup_dir="./backups")
|
||
result = backup.backup_all(vm)
|
||
|
||
print(f"\n✅ 本地备份完成!")
|
||
print(f" - JSON: {result['json']}")
|
||
print(f" - Markdown: {result['markdown']}")
|
||
|
||
except Exception as e:
|
||
print(f"❌ 备份失败: {e}")
|
||
return False
|
||
|
||
# 3. 尝试上传到飞书(需要权限)
|
||
print(f"\n📤 飞书云盘上传...")
|
||
# 这里可以后续添加自动上传逻辑
|
||
|
||
print(f"\n" + "=" * 60)
|
||
print("✅ 定时备份完成!")
|
||
print("=" * 60)
|
||
|
||
return True
|
||
|
||
|
||
def main():
|
||
"""主函数"""
|
||
# 直接执行备份
|
||
success = do_backup_and_upload()
|
||
|
||
if success:
|
||
print("\n🎉 备份成功完成!")
|
||
else:
|
||
print("\n❌ 备份失败,请检查日志")
|
||
sys.exit(1)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|