跳转到主要内容

将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-2quadweekly-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

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定要选择哪一个,请了解有关安装包的更多信息。

源分布

yaml2ical-0.13.0.tar.gz (31.4 kB 查看哈希值)

上传时间

构建分布

yaml2ical-0.13.0-py3-none-any.whl (29.7 kB 查看哈希值)

上传时间 Python 3

支持