LoginSignup
1
0

More than 3 years have passed since last update.

ウマ娘の誕生日をカレンダー表示できるようにした

Last updated at Posted at 2021-03-19

ウマ娘のゲーム、面白いですね。

ホームに設定しているウマ娘の誕生日当日にログインすると誕生日ボイスが聴けるというので、聞き逃さないようにカレンダー化しました。

以下はGoogleCalendarで購読した例。

image.png

ソースコード

以下に公開しています。
https://github.com/ushibutatory/umamusume-birthdays

処理概要

Dockerfile内でNode.jsアプリケーションを実行し、text/calendar形式でデータを配信しています。

実行環境はHerokuを選択しました。いつもお世話になっております。

iCalendar形式データは人間が直接メンテナンスするのが難しいので、YAMLで元データを作成し、iCalendar形式に変換する処理を挟んでいます。

overview.png

データ構造

人間がメンテナンスするためのデータ構造は以下のように定義しました。

(2021/04/29追記: 今はちょっと構造変わってます。最新は上記GitHubにあります)

birthdays.yaml
birthdays:
  - date: "03/05"
    names: ["ライスシャワー"]
  - date: "03/06"
    names: ["ゴールドシップ"]
  - date: "03/13"
    names: ["テイエムオペラオー", "シンボリルドルフ"]
...

変換すると以下のようになります。

birthdays.ics
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コンテナを動かす方式にしました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0