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

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"

7w4.net小蔥技能站收錄全網優質技能,值得收藏。


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