見出し画像

VCTの日程を把握できなすぎてChatGPTにカレンダーを作ってもらったメモ


読み飛ばして問題ない前書き

VALORANT Champions Tour (VCT)は、対戦FPSゲーム「VALORANT」の世界トッププロチーム達が命を懸けて激突する最高に楽しいesportsイベント

でもね

試合日程が、全然わからなくてェ……
いつも始まってみんなが盛り上がってるのみて気づくから、途中からしか観れなくてェ……

ちゃんと探せば公式ウェブサイトとかゲーム情報サイト、公式X(旧ツイッター)に書かれてるんだけど、

「要するに大会期間中の試合配信は何曜日の何時から始まるの!?」

ってのが直感的にわからない、っていうかスマホとかのカレンダーに自動的だったりボタン押すだけで追加する手段がないのよ。ありとあらゆるところに目配せされててお金と手間がかかってる超すごいイベントなのに、なんでなのよ

VALORANT Esports: https://valorantesports.com/news/vct-pacific-2024-etynk/ja-jp

こんな感じに書かれてるぞ!
いやわかるけどさ……もうちょっとこう……

カレンダーURLかiCalendarファイル(ICS)を、誰か配布してよォ……

と2年くらい涙を流し続けでもめんどくさいから自分では何もしてなかったんだけど、ふと思い立ってChatGPTに「VCTのICSくれ」ってお願いしたら、ちょうど今開催されてる「VCT PACIFIC KICKOFF」のICSファイルを一発で作ってくれたんだよね

マジかよ!

マジです

VCT PACIFIC KICKOFF 2024の日程ファイル

iCalendar (ICS)形式。Googleカレンダーで正常動作を確認してるけど原理的にはiPhoneでもOutlookでも問題ないはずだ。うまくいかなかったらスマン

Googleカレンダーに取り込むとこうなるぞ

超シンプルだから

  • 大会中に試合がある日の試合開始時間がわかるだけ

  • グループステージ試合、プレイイン、プレイオフくらいの表記はある

  • 対戦の組み合わせわからない

  • 配信URLすら表記されてない

でもそれでいい。必要十分だ。今日は17時からだ!3月のMasters Madridからは万全の準備できるぜ!!!

※わたしの探し方が異常に下手な可能性があります。いい方法を知ってる人はほくそ笑んでください。気が向いたらこのnoteのコメントとかXとかで教えてくれると、泣いてよろこびます

※大会関連アカウントやキャスト、選手・チームのSNSとかもフォローはしてるけどあんまアプリ開かないから接触しなくて……。あとValorantは観る専でいっさいプレイしないので、遊んでたらわかるやろ!状態だったらゴメン……

プロンプト大公開

偉ぶるような内容では一切ない。むしろこれで本当に一発ででてくると思わなかったよ

VCT Pacific 2024の日程を正確に把握したいです。カレンダーアプリにインポートするためにical形式(ics)のファイルを作成してください
Pythonの実行に1回失敗してるから、もうちょっと工夫するともっといい感じの出してくれそうな気がする

エラーを吐いたコードと成功したコード

誰かの役に立つかもしれないから置いておく

エラーに終わったPythonコード

from ics import Calendar, Event
from datetime import datetime, timedelta
import pytz

# Define the match schedule in KST (GMT+9)
schedule = [
    {"date": "2024-02-17", "time": "15:00", "description": "Group Stage Matches"},
    {"date": "2024-02-18", "time": "17:00", "description": "Group Stage Matches"},
    {"date": "2024-02-19", "time": "15:00", "description": "Group Stage Matches"},
    {"date": "2024-02-20", "time": "17:00", "description": "Group Stage Matches"},
    {"date": "2024-02-21", "time": "15:00", "description": "Group Stage Matches"},
    {"date": "2024-02-22", "time": "15:00", "description": "Play-Ins"},
    {"date": "2024-02-24", "time": "17:00", "description": "Playoffs"},
    {"date": "2024-02-25", "time": "17:00", "description": "Playoffs - Grand Final"},
]

# Create a new calendar
cal = Calendar()

# Timezone for KST
kst = pytz.timezone('Asia/Seoul')

# Add events to the calendar
for match in schedule:
    event = Event()
    event.name = "VCT Pacific Kickoff 2024: " + match["description"]
    start_datetime = datetime.strptime(match["date"] + " " + match["time"], "%Y-%m-%d %H:%M")
    # Convert to KST
    start_datetime = kst.localize(start_datetime)
    event.begin = start_datetime
    # Assuming each match block is approximately 3 hours
    event.end = start_datetime + timedelta(hours=3)
    cal.events.add(event)

# Save the calendar to an .ics file
ics_filepath = "/mnt/data/VCT_Pacific_2024_Schedule.ics"
with open(ics_filepath, 'w') as my_file:
    my_file.writelines(cal)

ics_filepath


成功したPythonコード

from ics import Calendar, Event
from datetime import datetime, timedelta
import pytz

# Define the match schedule in KST (GMT+9)
schedule = [
    {"date": "2024-02-17", "time": "15:00", "description": "Group Stage Matches"},
    {"date": "2024-02-18", "time": "17:00", "description": "Group Stage Matches"},
    {"date": "2024-02-19", "time": "15:00", "description": "Group Stage Matches"},
    {"date": "2024-02-20", "time": "17:00", "description": "Group Stage Matches"},
    {"date": "2024-02-21", "time": "15:00", "description": "Group Stage Matches"},
    {"date": "2024-02-22", "time": "15:00", "description": "Play-Ins"},
    {"date": "2024-02-24", "time": "17:00", "description": "Playoffs"},
    {"date": "2024-02-25", "time": "17:00", "description": "Playoffs - Grand Final"},
]

# Create a new calendar
cal = Calendar()

# Timezone for KST
kst = pytz.timezone('Asia/Seoul')

# Add events to the calendar
for match in schedule:
    event = Event()
    event.name = "VCT Pacific Kickoff 2024: " + match["description"]
    start_datetime = datetime.strptime(match["date"] + " " + match["time"], "%Y-%m-%d %H:%M")
    # Convert to KST
    start_datetime = kst.localize(start_datetime)
    event.begin = start_datetime
    # Assuming each match block is approximately 3 hours
    event.end = start_datetime + timedelta(hours=3)
    cal.events.add(event)

# Save the calendar to an .ics file
ics_filepath = "/mnt/data/VCT_Pacific_2024_Schedule.ics"
with open(ics_filepath, 'w') as my_file:
    my_file.writelines(cal)

ics_filepath

結果的にあってたから気にしてなかったけどJSTじゃなくてKSTになってるね。時差ないから何の問題もないけど


おまけ:ChatGPTによるコード解説

このコードは、`ics`ライブラリと`pytz`ライブラリを使用して、特定のイベントスケジュールを含むICS形式(iCalendar)のファイルを生成するものです。以下、コードの主要な部分について詳しく解説します。

インポート部分

  • `from ics import Calendar, Event`: `ics`パッケージから`Calendar`クラスと`Event`クラスをインポートします。これらはカレンダーとイベントを作成するのに使われます。

  • `from datetime import datetime, timedelta`: `datetime`モジュールから`datetime`クラスと`timedelta`クラスをインポートします。これらは日付と時間の操作に使用されます。

  • `import pytz`: `pytz`ライブラリをインポートします。これはタイムゾーンの操作に使用されます。

スケジュールの定義

  • `schedule`リストにイベントのスケジュールを辞書形式で定義しています。各辞書には`date`(日付)、`time`(時間)、`description`(説明)のキーが含まれます。

カレンダーの作成

  • `cal = Calendar()`で新しいカレンダーインスタンスを作成します。

タイムゾーンの定義

  • `kst = pytz.timezone('Asia/Seoul')`で韓国標準時(KST, GMT+9)のタイムゾーンを定義しています。

イベントの追加

  • `schedule`リストをループして、各スケジュール項目に対して`Event`インスタンスを作成し、カレンダーに追加しています。

  • `event.name`にイベントの名前を設定し、`event.begin`と`event.end`にイベントの開始と終了時間を設定しています。開始時間はスケジュールの日付と時間から作成し、終了時間は開始時間から3時間後と仮定しています。

ICSファイルの保存

  • 最後に、`ics_filepath`にファイルパスを指定し、`with open(ics_filepath, 'w') as my_file:`でファイルを開き、`cal`オブジェクトを文字列に変換してファイルに書き込んでいます。これにより、イベントスケジュールが含まれるICSファイルが生成されます。

このコードを実行することで、指定したスケジュールのイベントを含むICSファイルを生成し、カレンダーアプリケーションでインポートして使用することができます。

カレンダー登録はできないけどもろもろ把握するには liquipedia アプリがくっそ便利

iOS

Android

ウェブサイト


同じノリのnote


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?