将YAML会议描述转换为iCalendar文件
项目描述
该工具将一系列YAML格式的会议描述转换为适合日历使用的单个或多个.ics文件。它会在特定位置检查排程冲突。
理由
yaml2ical旨在提供一种更简单的管理在线团队会议的方式。
此项目允许使用定义良好的YAML文件定义每次会议,这些文件可以经过代码审查,然后持续集成到.ics文件中,以便广泛使用。
入门
从命令行本地运行
要本地测试此项目,您必须安装以下要求
Python 3.3+
iCalendar python库
PyYaml python库
在运行此工具之前,首先编辑会议目录中的某些会议YAML文件。要创建新的会议YAML文件,请阅读下面的《YAML会议文件》部分。
$ pip install yaml2ical $ yaml2ical usage: yaml2ical [-h] -y YAML_DIR (-i ICAL_DIR | -o ICALFILE) [-t INDEX_TEMPLATE] [-w INDEX_OUTPUT] [-n CALNAME] [-d CALDESCRIPTION] [-f] A tool that automates the process for testing, integrating, and publishing changes to online meeting schedules. optional arguments: -h, --help show this help message and exit -y YAML_DIR, --yamldir YAML_DIR directory containing YAML to process -i ICAL_DIR, --icaldir ICAL_DIR output directory (one file per meeting) -o ICALFILE, --output ICALFILE output file (one file for all meetings) -t INDEX_TEMPLATE, --indextemplate INDEX_TEMPLATE generate an index from selected meetings -w INDEX_OUTPUT, --indexoutput INDEX_OUTPUT output index file -n CALNAME, --name CALNAME name of calendar to set within the ical -d CALDESCRIPTION, --description CALDESCRIPTION description of calendar to set within the ical -f, --force remove/overwrite previous output files
以下是一些场景
从现有的yaml会议文件本地生成.ics文件
$ yaml2ical -y meetings/ -i icals/
生成的.ics文件不会在这个Git仓库中跟踪,但它们可以在本地导入到您的日历中。注意,要删除过时的.ics文件,请使用--force参数。
$ ls icals/ Barbican Meeting-b58d78a4.ics Ceilometer Team Meeting-9ed7b5b4.ics Chef Cookbook Meeting-2418b331.ics
每个.ics文件看起来类似如下:
$ cat icals/Barbican\ Meeting-b58d78a4.ics BEGIN:VCALENDAR VERSION:2.0 PRODID:-//yaml2ical agendas//EN BEGIN:VEVENT SUMMARY:Barbican Meeting (openstack-meeting-alt) DTSTART;VALUE=DATE-TIME:20141006T200000Z DURATION:PT1H DESCRIPTION:Project: Barbican Meeting\nChair: jraim\nIRC: openstack-meet ing-alt\nAgenda:'* malini - update on Security Guide documentation\n\n * alee_/atiwari - Crypto plugin changes\n\n * arunkant - Target support in barbican policy enforcement\n\n * jaraim - Support for debug mode start i n barbican\, can be merged?\n\n '\n\nDescription: The Barbican project t eam holds a weekly team meeting in\n#openstack-meeting-alt:\n* Weekly on M ondays at 2000 UTC\n* The blueprints that are used as a basis for the Barb ican project can be\n found at https://blueprints.launchpad.net/barbican\ n* Notes for previous meetings can be found here.\n* Chair (to contact for more information): jraim (#openstack-barbican @\n Freenode)\n RRULE:FREQ=WEEKLY END:VEVENT END:VCALENDAR
YAML会议文件
每次会议包括:
project:项目的名称[必填]
schedule:一系列的时间表,每个时间表包括:
time:UTC时间字符串[必填]
duration:会议的持续时间(分钟);默认为60
- start_date:首次会议的日期或之后。
格式为YYYYMMDD,所有值必须为零填充。
day:会议发生的星期几[必填]
irc:会议举行的irc房间[必填]
frequency:会议的频繁发生[必填]
skip_dates:会议不会发生的日期集合
skip_date:跳过指定日期的会议。格式与start_date相同
reason:会议被跳过的原因注释
chair:会议主席的姓名[必填]
description:关于会议的段落描述[必填]
agenda_url:会议议程页面的链接
project_url:会议项目主页的链接
文件名应该是会议名称的小写、连字符版本,以.yaml结尾。例如,Keystone团队会议应保存为keystone-team-meeting.yaml。
YAML文件中列出的任何其他值也都可以在模板中使用,这使得构建会议议程页面或过去会议记录的链接变得容易。在模板文件中,使用meeting.extras.name来访问值。
频率
yaml2ical支持多种可能的频率选项
事件每周发生一次
weekly:事件每周发生。
事件交替并从下一天开始
biweekly-even:在偶数周发生(ISOweek % 2 == 0)
biweekly-odd:在奇数周发生(ISOweek % 2 == 1)
事件每4周发生一次,并从下一天开始
quadweekly:当ISOweek % 4 == 0时发生
quadweekly-week-1:当ISOweek % 4 == 1时发生
quadweekly-week-2、quadweekly-alternate:当ISOweek % 4 == 2时发生
quadweekly-week-3:当ISOweek % 4 == 3时发生
事件在一个月的特定周发生
first-monday:在一个月的第一周一。
second-tuesday:在一个月的第二周二。
third-wednesday:在一个月的第三周三。
fourth-thursday:在一个月的第四周四。
等等
事件不会在预定的日程上发生,但用作HTML生成的占位符
临时
示例1
这是一个Nova团队会议yaml会议的示例。整个文件将被导入Python作为字典。
项目名称如下。
project: Nova Team Meeting
日程是一系列字典,每个字典包含UTC时间的时间、星期的天、irc会议室和会议的频率。有关频率的说明请参见上文。
临时可用于列出日程中的可能性,但实际上不会生成任何日历事件。这可以用作占位符,在生成日历时将作为无操作执行。
schedule: - time: '1400' day: Thursday irc: openstack-meeting-alt frequency: biweekly-even - time: '2100' day: Thursday irc: openstack-meeting frequency: biweekly-odd
主席只是一个单行。
chair: Russell Bryant
项目描述如下。使用>表示折叠新行的段落,或使用|表示保留新行的段落。
description: > This meeting is a weekly gathering of developers working on OpenStack. Compute (Nova). We cover topics such as release planning and status, bugs, reviews, and other current topics worthy of real-time discussion.
包含会议议程的额外属性存储在agenda_url中,可以在模板文件中以meeting.extras.agenda_url的形式访问。
agenda_url: https://wiki.openstack.org/wiki/Meetings/Nova
包含项目URL的额外属性存储在project_url中,可以在模板文件中以meeting.extras.project_url的形式访问。
project_url: https://wiki.openstack.org/wiki/Nova
包含项目MeetBot #startmeeting ID的额外属性存储在meeting_id中,可以在模板文件中以meeting.extras.meeting_id的形式访问。
meeting_id: nova
示例2
以下显示了“example project”的IRC会议的完整YAML文件。项目从10月1日开始举行每周会议,项目团队在10月26日举行“面对面”会议,因此irc会议应从ical日程中省略。
以下YAML
project: Example Project Meeting project_url: https://wiki.openstack.org/wiki/Example agenda_url: https://wiki.openstack.org/wiki/Meetings/Example meeting_id: example chair: A. Random Developer description: > This meeting is a weekly gathering of developers working on Example project. schedule: - time: '2100' day: Monday irc: openstack-meeting start_date: 20151001 frequency: weekly skip_dates: - skip_date: 20151026 reason: Face 2 Face meeting at some location
被转换为以下iCal
BEGIN:VCALENDAR VERSION:2.0 PRODID:-//yaml2ical agendas//EN BEGIN:VEVENT SUMMARY:CANCELLED: Example Project Meeting (20151026T210000Z) DTSTART;VALUE=DATE-TIME:20151026T210000Z DURATION:PT1H DESCRIPTION:Face 2 Face meeting at some location LOCATION:#openstack-meeting END:VEVENT BEGIN:VEVENT SUMMARY:Example Project Meeting DTSTART;VALUE=DATE-TIME:20151005T210000Z DURATION:PT1H EXDATE:20151026T210000Z DESCRIPTION:Project: Example Project Meeting\nChair: A. Random Developer \nDescription: This meeting is a weekly gathering of developers working o n Example project.\n\nAgenda URL: https://wiki.openstack.org/wiki/Meeting s/Example\nProject URL: https://wiki.openstack.org/wiki/Example LOCATION:#openstack-meeting RRULE:FREQ=WEEKLY END:VEVENT END:VCALENDAR
项目详情
下载文件
下载适用于您平台文件的文件。如果您不确定要选择哪一个,请了解有关安装包的更多信息。