ウマ娘のゲーム、面白いですね。
ホームに設定しているウマ娘の誕生日当日にログインすると誕生日ボイスが聴けるというので、聞き逃さないようにカレンダー化しました。
以下はGoogleCalendarで購読した例。
ソースコード
以下に公開しています。
https://github.com/ushibutatory/umamusume-birthdays
処理概要
Dockerfile内でNode.jsアプリケーションを実行し、text/calendar
形式でデータを配信しています。
実行環境はHerokuを選択しました。いつもお世話になっております。
iCalendar形式データは人間が直接メンテナンスするのが難しいので、YAMLで元データを作成し、iCalendar形式に変換する処理を挟んでいます。
データ構造
人間がメンテナンスするためのデータ構造は以下のように定義しました。
(2021/04/29追記: 今はちょっと構造変わってます。最新は上記GitHubにあります)
birthdays:
- date: "03/05"
names: ["ライスシャワー"]
- date: "03/06"
names: ["ゴールドシップ"]
- date: "03/13"
names: ["テイエムオペラオー", "シンボリルドルフ"]
...
変換すると以下のようになります。
BEGIN:VCALENDAR
PRODID:...
VERSION:2.0
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:Asia/Tokyo
BEGIN:STANDARD
DTSTART:19390101T000000
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
TZNAME:JST
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CLASS:PUBLIC
UID:20210305-ライスシャワー
DTSTAMP:20210318T155519+00:00
SUMMARY:ライスシャワーの誕生日
DESCRIPTION:ライスシャワーの誕生日です。
DTSTART;VALUE=DATE:20210305
DTEND;VALUE=DATE:20210305
END:VEVENT
BEGIN:VEVENT
CLASS:PUBLIC
UID:20210306-ゴールドシップ
DTSTAMP:20210318T155519+00:00
SUMMARY:ゴールドシップの誕生日
DESCRIPTION:ゴールドシップの誕生日です。
DTSTART;VALUE=DATE:20210306
DTEND;VALUE=DATE:20210306
END:VEVENT
BEGIN:VEVENT
CLASS:PUBLIC
UID:20210313-テイエムオペラオー
DTSTAMP:20210318T155519+00:00
SUMMARY:テイエムオペラオーの誕生日
DESCRIPTION:テイエムオペラオーの誕生日です。
DTSTART;VALUE=DATE:20210313
DTEND;VALUE=DATE:20210313
END:VEVENT
BEGIN:VEVENT
...
上記ファイルを、Node.js * Express で簡単なAPIを作成して配信しています。
不備やおかしなところ、権利関係、その他問題などあればご指摘ください。
余談
iCalendar形式データをgistで管理してそのURLを購読すればいいのではと思いましたが、gistはContent-Typeが text/plain
で固定されているため、カレンダー側の仕様によっては正常に購読できない可能性があり、今回のようにHeroku上でDockerコンテナを動かす方式にしました。