Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zectrix 墨水屏便利贴 日历同步

自动将邮箱 CalDAV日历同步到 Zectrix 极趣墨水屏电子便利贴。

https://space.bilibili.com/13131424?spm_id_from=333.788.upinfo.detail.click

https://cloud.zectrix.com/

功能

  • 🧹 自动标记过期日程完成: 已超过设定时间的 [日历] 日程自动标记为完成
  • 📅 同步当天日程: 只同步今天剩余时间的日程,保持屏幕整洁
  • 🚫 过滤已取消: 自动跳过标题包含"已取消"、"cancelled"的会议
  • 🔄 完整双向同步: CalDAV 中新建/更新/删除都会自动同步到 Zectrix
  • 🎯 精确匹配: 使用 CalDAV 原生 UID 唯一标识精确识别每个日程
  • 🔁 自动重试: 网络请求失败自动重试(最多3次,指数退避)

工作流程

  1. 第一步 - 调用 Zectrix API 查询所有未完成待办
  2. 第二步 - 标记过期日程完成:
    • Title 以 [日历] 开头
    • 日程时间 dueDate + dueTime 距离现在已经超过 EXPIRE_HOURS
    • 只处理未完成的日程
  3. 第三步 - 通过 CalDAV 从邮箱获取今天剩余时间的日历事件
  4. 第四步 - 同步变更到 Zectrix:
    • 新建: UID 不存在于 Zectrix → 创建新日程
    • 更新: UID 存在但标题/时间已变更 → 更新现有日程
    • 删除: Zectrix 中有 UID,但 CalDAV 中不存在 → 删除该日程(已被取消/删除)

依赖安装

pip install caldav icalendar requests

配置

所有配置通过环境变量注入,支持两种方式:

方式一:临时设置环境变量运行

# Zectrix API 配置
export API_BASE="https://cloud.zectrix.com/open/v1"
export API_KEY="your-api-key"          # 你的 API Key
export DEVICE_ID="your-device-id"      # 你的设备 ID
export EXPIRE_HOURS="1"                # 过期多久后删除,单位小时

# CalDAV 配置
export CALDAV_URL="https://caldav.mxhichina.com/dav/your-email@example.com/"
export CALDAV_USER="your-email@example.com"  # 邮箱用户名
export CALDAV_PASS="your-password"           # 邮箱密码/授权码

python sync_calendar.py

方式二:通过 .env 文件配置(推荐)

创建 .env 文件:

# Zectrix API 配置
API_BASE=https://cloud.zectrix.com/open/v1
API_KEY=your-api-key
DEVICE_ID=your-device-id
EXPIRE_HOURS=1

# CalDAV 配置
CALDAV_URL=https://caldav.mxhichina.com/dav/your-email@example.com/
CALDAV_USER=your-email@example.com
CALDAV_PASS=your-password

然后使用 python-dotenv 加载:

pip install python-dotenv

在运行前加载:

python -c "import dotenv; dotenv.load_dotenv(); import sync_calendar"

或者如果你使用 bash:

export $(grep -v '^#' .env | xargs) && python sync_calendar.py

环境变量说明

环境变量 必填 默认值 说明
API_BASE https://cloud.zectrix.com/open/v1 Zectrix API 地址
API_KEY - 你的 API Key,从 Zectrix 云端获取
DEVICE_ID - 你的设备 ID
EXPIRE_HOURS 1 过期多久(小时)后标记为完成
CALDAV_URL 阿里云邮箱默认地址 CalDAV 服务器地址
CALDAV_USER - CalDAV 用户名(通常是邮箱地址)
CALDAV_PASS - CalDAV 密码/授权码

运行

python sync_calendar.py

定时运行(推荐)

可以用 crontab 定时同步,比如每小时同步一次:

crontab -e

添加一行:

0 * * * * /usr/bin/python3 /path/to/sync_calendar.py >> /var/log/zectrix_sync.log 2>&1

说明

  • 时区自动处理,CalDAV 中的 UTC 时间会正确转换为本地时区
  • 全天事件默认按当天 09:00 处理
  • 只有未取消且在今天剩余时间内的日程才会被同步

License

MIT

About

同步你的日志到zectrix极趣云平台

Resources

Stars

11 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages