はじめに
YouTubeDataAPIのVideos::list
を使って特定のアーカイブの配信開始日時を取得しようとしたところ、想定と違う値(配信開始日時の前日)が取れてしまいました。
これまでにも想定と違う値が取れるケースがたまにあったため、改めて配信開始日時の取得方法を調べました。
前提
APIキーの取得など、APIを使う準備ができていること。
結論
liveStreamingDetails.actualStartTime
を取得する。
調査した内容
間違っていた方法
snippet.publishedAt
を取得する。
"part": "snippet"
"fields": "snippet/publishedAt"
上記の場合、配信枠を取った日時が取得されてしまいます。
時間を空けて再度実行すると日時が配信終了の数時間後になっていることも確認したので、配信終了後にエンコードが完了した場合にも更新されるのかもしれません。
正しい方法
liveStreamingDetails.actualStartTime
を取得する。
"part": "liveStreamingDetails"
"fields": "liveStreamingDetails/actualStartTime"
上記の場合、配信開始日時が取得されます。
liveStreamingDetails
の子要素には他にも便利な情報が格納されています。
プロパティ名 | 概要 |
---|---|
actualStartTime | 配信開始日時 |
actualEndTime | 配信終了日時(配信終了まで取得できない) |
scheduledStartTime | 配信開始予定日時 |
scheduledEndTime | 配信終了予定日時(未設定の場合は取得できない) |
concurrentViewers | 同時接続数(配信中のみ取得できる) |
activeLiveChatId | チャット欄のID(配信中のみ取得できる) |
公式ドキュメントを読めば良いのでは?
今回調べてわかったことですが、公式ドキュメントでも日本語は英語に比べてかなり情報が古いです。
試しにそれぞれのページに記載されているvideos
リソースの表現をWinMergeで比較してみた画像を以下に掲載します。
(左:日本語ページ 右:英語ページ)
正直なところ、誤訳程度ならともかくここまで違いがあるとは思ってもみませんでした。
公式ドキュメントでも油断せず原典をあたるようにしようと改めて思いました。