是否有任何 GraphQL 查询从轨道开始站?

Is there any GraphQL Query to start a station from track?

有什么方法可以直接使用“trackID”启动“Station”吗?现在我必须使用“搜索”查询来搜索 Station Factory。使用搜索查询的第一个结果,我将返回的结果设置为“源”。这就是我能够将曲目作为电台播放的方式。谢谢。

如你所说,你可以搜索轨道,这样就可以得到站厂。例如,此查询:

query {
  search(query:"Let Me by Zayn", types:[SF], pagination: {limit: 1}) {
    items {
      ... on StationFactory {
        name
        id
      }
    }
  }
}

Returns 这个结果:

{
  "data": {
    "search": {
      "items": [
        {
          "name": "Let Me",
          "id": "SF:21586:35686886"
        }
      ]
    }
  }
}

通过在 search 参数中包含 types:[SF],结果仅限于“站点工厂”。车站工厂(参见 docs) can be used to start station playback (see info on setSource here 中的“车站和车站工厂”)。

一个类似但略有不同的路径是搜索曲目(请注意,我们现在指定 types:[TR] 而不是 types:[SF]):

query {
  search(query:"Let Me by Zayn", types:[TR], pagination: {limit: 1}) {
    items {
      ... on Track {
        name
        artist {
          name
        }
        stationFactory {
          id
        }
      }
    }
  }
}

哪个returns:

{
  "data": {
    "search": {
      "items": [
        {
          "name": "Let Me",
          "artist": {
            "name": "ZAYN"
          },
          "stationFactory": {
            "id": "SF:21586:35686886"
          }
        }
      ]
    }
  }
}

使用 types:[TR] 时需要考虑一种 caveat/edge 情况。具体来说,一些 轨道将没有 stationFactory ID。绝大多数曲目都会有 stationFactory ID,所以这不应该是一个主要的限制因素,但在这里进行空检查很重要。

最后,如果您已经知道轨道 ID,则可以使用 handy-dandy entity 查询查找该轨道的所有关联元数据。这里我们拉出站厂ID:

query {
  entity(id: "TR:35686886") {
    ... on Track {
      stationFactory {
        id
      }
    }
  }
}

哪个returns:

{
  "data": {
    "entity": {
      "stationFactory": {
        "id": "SF:21586:35686886"
      }
    }
  }
}