osnosn

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

创建自己的_WebCal_日历订阅链接_ICSx5

转载注明来源: 本文链接 来自osnosn的博客,写于 2022-04-25.

参考

创建方法

  • 用 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-8text/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/ .


posted on 2022-05-04 21:22  osnosn  阅读(1413)  评论(0编辑  收藏  举报