こんにちは、素晴らしいサービスをありがとうございます :)
GraphQLやREST APIを用いてworkを取得しているのですが、放送予定を取得するのは可能でしょうか?
ドキュメントを拝見した限りデータとして保存していないのかなと思いつつ、チャンネル登録をする画面などもあるので保持されているのかなとも推測しています。
GraphQLを使って自己解決できました! :)
サンプルを貼っておきます↓
query {
searchWorks(seasons: ["2020-spring"]){
edges {
node {
title
officialSiteUrl
programs {
nodes {
startedAt
channel {
name
}
episode {
number
}
}
}
}
}
}
}
Responce
{
"data": {
"searchWorks": {
"edges": [
{
"node": {
"title": "乙女ゲームの破滅フラグしかない悪役令嬢に転生してしまった…",
"officialSiteUrl": "https://hamehura-anime.com/",
"programs": {
"nodes": [
{
"startedAt": "2020-04-04T15:00:00Z",
"channel": {
"name": "Netflix"
},
"episode": {
"number": 1
}
},
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
{
"startedAt": "2020-04-04T15:00:00Z",
"channel": {
"name": "dアニメストア"
},
"episode": {
"number": 1
}
},
(snip)
APIのご利用ありがとうございます!
そうですね、放送予定はprogramという名前で参照することができます。
そして、statusをNO_STATEにしているとProgramがnullになってしまうんですね。理解しました!
いえ、このクエリではユーザが設定したstatus情報は見ていないですね。null
になっているのはそのProgramが特定のエピソードに紐付いていないからになります。
裏側の話になるのですが、Programは以下のように事前に1クール分くらい作成しています。
4月3日現在、2週目以降のProgramにエピソードが紐付いていないので、Programが null
として返ってきています。その作品が何話までやるかわかっていないので、エピソードは放送日が近づいたときに作るようにしています。
なので現在でも以下のように episode
フィールドにアクセスしなければProgramのデータが取得できます。
query {
searchWorks(seasons: ["2020-spring"], first: 3) {
nodes {
title
officialSiteUrl
programs {
nodes {
id
startedAt
channel {
name
}
}
}
}
}
}
ただProgramのデータを取得するときエピソードが紐付いていないと良い感じに取得できないのも変な気がしたので、エピソードが紐付いていなくてもProgramが取得できるようにしたいと思います。(episode
だけ null
になってProgramが取得できるイメージ) m(__)m
こちらで対応します: https://github.com/annict/annict-issues/issues/103