通过GitHub托管日历订阅

intro

日历订阅

GitHub 托管

进阶

导入

intro

最近面临秋招季，大量企业进入校园宣讲，但并不是所有宣讲的企业都是自己想去的，每次查看哪些企业想去都要重新打开学校官网，有一点麻烦，因此我想了一个办法，在 GitHub 上托管一个日历订阅，每次查看官网把想去的招聘会的信息添加至 GitHub，就可以实现在日历软件上自动更新，还可以分享给一同求职的朋友，避免重复打开重复查看。

日历订阅

URL 订阅功能是大多数日历软件都支持的，华为日历等少数软件不支持，但也可以通过下载第三方日历软件实现，当链接里面的内容发生了修改，日历软件也会自动更新，因此我只需要时不时去宣讲官网看看有哪些心仪的企业要来学校宣讲，然后上传至 GitHub 托管，所有使用了这个分享链接的朋友都可以看到新的企业的信息

GitHub 托管

下面是实操教学

新建仓库，在 GitHub 上新建一个仓库，在Repository name *中填入自己喜欢的名字，最好是英文名，Description可自行填入描述，也可以不填，再点击下方的Create Repository即可

自述文件可以自行写，我这里就不创建了，直接演示写日历文件

4. 在下面的Edit框中输入如下格式的文件，在Name your file中输入文件名，需要以ics格式结尾，例如my_calendar.ics

Copy
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp//iCalendar 2.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:My Calendar

BEGIN:VEVENT
UID:12345
DTSTAMP:20230901T120000Z
DTSTART:20230910T100000Z
DTEND:20230910T120000Z
SUMMARY:会议1
DESCRIPTION:讨论项目进展
LOCATION:会议室A
END:VEVENT

END:VCALENDAR

解释一下代码

BEGIN:VCALENDAR 和 END:VCALENDAR 标签表示整个 iCalendar 文件的起始和结束。

VERSION 指定了 iCalendar 规范的版本。

PRODID 标识了生成 iCalendar 文件的应用程序。

CALSCALE 指定了日期的规模，通常是 GREGORIAN。

METHOD 指定了处理日历数据的方法，通常是 PUBLISH。

X-WR-CALNAME 是日历的名称。

在这里面只需要修改日历名即可

在 BEGIN:VEVENT 和 END:VEVENT 之间是一个事件的定义。事件包括以下属性：

UID 是事件的唯一标识符。

DTSTAMP 是事件创建或最后修改的时间戳。

DTSTART 是事件的开始时间。

DTEND 是事件的结束时间。

SUMMARY 是事件的名称或标题。

DESCRIPTION 是事件的描述。

LOCATION 是事件的地点。

这个示例只包含一个事件，但您可以根据需要添加更多事件，只需重复 BEGIN:VEVENT 到 END:VEVENT 之间的块，并为每个事件设置相应的属性。其中UID也需要修改，每个事件只有一个UID

进阶

上面的文件已经能够正常使用了，但是还存在两个问题需要优化

时区，上面的代码UTC默认为协调世界时，与我们所在的东八区有 8 个小时的差距，因此需要把时间改为东八区，修改如下

Copy
DTSTART;TZID=Asia/Singapore:20230910T180000 # 使用Asia/Singapore时区
DTEND;TZID=Asia/Singapore:20230910T200000 # 使用Asia/Singapore时区

插入链接和图片，部分日历软件允许插入链接和封面，我们可以利用此功能插入该企业的官网或网申通道和公司的宣传图，修改如下

Copy
DESCRIPTION: 讨论项目进展 \n请查看更多信息：链接到更多信息

其中src后面的链接表示图片的链接，href后面的链接表示想要插入的链接

导入

文件编辑完毕以后点击Commit changes即可，最后打开仓库的源码，复制顶部的链接，把blob改为raw即可导入到日历软件，以后想增加内容时点击右侧的编辑按钮即可编辑。

想要导入日历，我以谷歌日历为例，其他日历软件同理，打开日历，设置，选择添加日历，通过 URL 订阅，最后输入链接即可