synology-calendar

👤 fpengziyang 📦 v1.0.1 ⭐ 4.3 ⬇️ 858 下载
🤖 AI-Agent 免费 🔑 需 API Key

📖 技能介绍

Synology Calendar API Skill

Overview

Manage Synology Calendar using the official Calendar API.

Documentation: Calendar_API_Guide_enu.pdf

来源于7w4.net。

Connection

Environment Variables

export SYNOLOGY_URL="http://{nas_ip}:5000"  # 内网地址
export SYNOLOGY_USER="{username}"
export SYNOLOGY_PASSWORD="your-password"

Quick Start

from client import SynologyCalendar

cal = SynologyCalendar()
cal.login()

# List calendars
calendars = cal.get_calendars()
for c in calendars:
    print(f"{c['cal_id']}: {c['cal_displayname']}")

cal.logout()

API Reference

Calendar Operations (SYNO.Cal.Cal)

Method Description Status
get_calendars() List all calendars ✅ Working
get_calendar(cal_id) Get calendar details ✅ Working
create_calendar(...) Create calendar ✅ Working
delete_calendar(cal_id) Delete calendar ✅ Working

Event Operations (SYNO.Cal.Event)

Method Description Status
list_events(cal_id_list) List events ✅ Working
get_event(evt_id) Get event details ✅ Working
create_event(...) Create event ✅ Working
delete_event(evt_id) Delete event ✅ Working

Event Creation Notes:

✅ Working:

  • All event types now work correctly with v1 API

⚠️ Critical: SID must be in URL parameter, not JSON body

The Synology Calendar v1 API requires the _sid parameter in the URL query string, not in the JSON body.

create_event Parameters:

Parameter Type Required Example
cal_id string /admin/home/
summary string Event title
dtstart int 1770440000
dtend int 1770443600
is_all_day bool false
is_repeat_evt bool false
color string #D9AE00
description string Description
notify_setting array []
participant array []
timezone string (if not all-day) Asia/Shanghai

Example:

# Non-all-day event (working)
cal.create_event(
    cal_id='/{username}/home/',
    summary='Meeting',
    dtstart=now,
    dtend=now + 3600,
    is_all_day=False,
    is_repeat_evt=False,
    description='Team meeting',
    color='#D9AE00',
    timezone='Asia/Shanghai'
)

Todo Operations (SYNO.Cal.Todo)

Method Description Status
create_todo(...) Create task ✅ Working
list_todos(...) List tasks ✅ Working
get_todo(evt_id) Get task details ✅ Working
delete_todo(evt_id) Delete task ✅ Working
complete_todo(evt_id) Mark complete ✅ Working

Contact Operations (SYNO.Cal.Contact)

Method Description Status
list_contacts() List participants ✅ Working

CLI Usage

# Login
python client.py login

# List calendars
python client.py list-calendars

# List todos
python client.py list-todos --cal-id "/{username}/home_todo/"

# Create todo
python client.py create-todo \
  --cal-id "/{username}/home_todo/" \
  --title "Task name"

# Complete todo
python client.py complete-todo --evt-id "1012"

Known Issues

Event Creation (Fixed with v1 API)

Previous Issue: Event creation returned error 9009 due to:

  1. Using v5 API instead of v1 API
  2. Missing original_cal_id parameter
  3. SID passed in wrong location (JSON body vs URL parameter)

Solution: Use v1 API with:

  • cal_id from get_calendars() response
  • original_cal_id = cal_id (for non-shared calendars)
  • SID in URL parameter: ?_sid=xxx

Calendars

ID Name Type
/{username}/home/ My Calendar event
/{username}/home_todo/ Inbox todo

Links

🤖 AI 评测

这个 Skill 质量中等偏上,基本能用,但存在一些问题。它能帮你管理 Synology 日历上的事件和任务,功能覆盖面还行,文档也比较详细。不过文档里的参数说明和实际代码有时候对不上,任务完成等部分功能的代码实现不完整,可能导致某些操作无法正常工作。如果你是 Synology NAS 用户且需要用代码管理日历,可以用,但需要仔细核对参数用法。

📊 多维度评分

适应性4.2
规范性4.5
有效性4.2
可靠性3.8
可信度5

📁 包含文件 (3 个)

📄 SKILL.md 4.2 KB
📄 _meta.json 136 B
📄 client.py 13.4 KB