APIで放送局を取得したい

こんにちは、素晴らしいサービスをありがとうございます :)

GraphQLやREST APIを用いてworkを取得しているのですが、放送予定を取得するのは可能でしょうか?
ドキュメントを拝見した限りデータとして保存していないのかなと思いつつ、チャンネル登録をする画面などもあるので保持されているのかなとも推測しています。

@whywaita
whywaita
2020-03-29 18:40

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)
@shimbaco
Shimba, Koji管理者
2020-03-30 23:50

APIのご利用ありがとうございます!
そうですね、放送予定はprogramという名前で参照することができます。

@whywaita
whywaita
2020-04-01 12:15

そして、statusをNO_STATEにしているとProgramがnullになってしまうんですね。理解しました!

@shimbaco
Shimba, Koji管理者
2020-04-02 20:34

いえ、このクエリではユーザが設定したstatus情報は見ていないですね。null になっているのはそのProgramが特定のエピソードに紐付いていないからになります。
裏側の話になるのですが、Programは以下のように事前に1クール分くらい作成しています。

image

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