创建自己的_WebCal_日历订阅链接_ICSx5
转载注明来源: 本文链接 来自osnosn的博客,写于 2022-04-25.
参考
- 【搭建私人的云笔记_使用webdav服务】
- 【搭建私人CardDAV/CalDAV服务_通讯录/日历同步服务_debian11_radicale3_nginx_DAVx5】
- 【ICSx5 GitHub】【ICSx5 官网】
- 【rfc5545 (ICS)】
- 【日历标准格式研究】
创建方法
- 用 php 或者 python 按以下格式生成 ics 文件格式的内容。
BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:2.0
X-WR-CALNAME:订阅的名称 测试订阅
BEGIN:VEVENT
UID:my_ics-000128
SUMMARY:任务时间
DESCRIPTION:任务时间,\n2022-04-29_18:10:36_+0800\n\nMyTaskList\nFrom: 04-15 To 05-10
DTSTART;VALUE=DATE-TIME:20220429T101036Z
DTEND;VALUE=DATE-TIME:20220429T101136Z
END:VEVENT
BEGIN:VEVENT
UID:my_ics-000129
SUMMARY:刷新任务
DESCRIPTION:刷新任务,\n2022-04-29_18:42:11_+0800 这是一个测
试描述,测试描述
DTSTART;VALUE=DATE-TIME:20220429T104211Z
DTEND;VALUE=DATE-TIME:20220429T104311Z
END:VEVENT
END:VCALENDAR
- 输出的编码为 UTF-8。
如果是网页输出,应该设置Content-Type: text/calendar; charset=UTF-8
。
如果设置Content-Type: text/html; charset=UTF-8
或text/plain
似乎也不影响使用。 - UID, 只要每一个都不一样就可以了。可以包含 数字, 英文,
-_@
这些字符。 - SUMMARY, 日历事件的标题。
- DESCRIPTION, 日历事件的备注。内容中,如果要换行用 '\n'。
- 任何一行,如果是以一个英文(半角)空格作为起始,则表示 当前行 是上一行的继续。
比如:DESCRIPTION:line one\n line two\n line tree
- DTSTART, DTEND, '年月日'+'T'+'时分秒',结尾是 Z 表示 UTC 时间。结尾没有 Z 表示当地时间。
如下:UTC
如下:北京时间DTSTART;VALUE=DATE-TIME:20220429T104211Z
DTSTART;TZID=Asia/Shanghai;VALUE=DATE-TIME:20220429T104211
- 如果手机的日历支持添加URL的webcal,就直接添加。否则,可以去 F-Droid 下载 ICSx5, 目前最新 2.0.2 版, 8.6MB。(2022-04)
- 以 URL 的形式, 发布程序链接。ICSx5 支持 http, https, 支持 basic 认证, 支持自定义端口。
- 比如
https://xxxx.mydomain.com:8888/myics/my_webcal.php?abcdef23456
- 比如
- 测试发现,红米手机的系统日历,日历订阅不支持 basic 认证,也不支持 "http://user:pwd@host/xxx" 带账号的链接。(2023-05测)
- ipad的日历订阅,支持账号认证。(2023-05测)
与 radicale 配合
- 可以考虑写个php程序,扫描某个特定的 radicale 的日历集合目录中的 ics文件。输出一个订阅链接。
这样,就可以用手机登陆 radicale 账号。手工维护一个 日历集合。
通过订阅链接,分享这个日历集合的内容,给其他人使用 (只读)。 - 关于php读取radicale目录的权限。可以通过
usermode www-data -G radicale; service php74-fpm restart;
解决。
----end----
转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/16222492.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .