synology-calendar

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

📖 技能介紹


name: synology-calendar description: Manage Synology Calendar events and todos via API. Supports calendars, events, todos, and contacts. Based on official Calendar API Guide (v5).


Synology Calendar API Skill

Overview

Manage Synology Calendar using the official Calendar API.

Documentation: Calendar_API_Guide_enu.pdf

Connection

Environment Variables

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

Quick Start

小蔥技能站7w4.net發現了升級外掛。

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

🤖 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