iCalendar形式ファイルのイベントを「予定なし」にする

JRAが重賞日程と開催日程をGoogleカレンダー等に取り込めるようにiCalendar形式でカレンダーを提供してくれています。

他のカレンダーと連携する:レーシングカレンダー JRA

ありがたく使わせていただこうとしていたのですが、実際にGoogleカレンダーに取り込んでみると「予定あり」として取り込まれてしまいます。
これは各イベントで「TRANSP:OPAQUE」という指定がされているため。
ここを「TRANSP:TRANSPARENT」に書き換えてあげると「予定なし」として取り込むことができます。

ということで、この書き換えをするプログラムを作ってみました。
icalendarというライブラリを使っていますが、これはpipでインストール可能。

import argparse
from icalendar import Calendar
import sys


def update_transp(cal, transp):
    for ev in cal.walk():
        if ev.name == 'VEVENT':
            ev['TRANSP'] = transp


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('input', nargs='?',
                        type=argparse.FileType(mode='r'), default=sys.stdin)
    parser.add_argument('-o', '--output', nargs='?',
                        type=argparse.FileType(mode='w'), default=sys.stdout)
    args = parser.parse_args()

    cal = Calendar.from_ical(args.input.read())
    update_transp(cal, 'TRANSPARENT')

    args.output.write(cal.to_ical().decode('utf-8'))


if __name__ == '__main__':
    main()

このソースはgithubの方にも置いてあるので、よかったら使ってみてくださいませ。

スポンサーリンク

フォローする

スポンサーリンク