0

使用可汗学院 API,我想检索某个年级的所有数学主题和子主题的列表(以及相关的视频 ID),类似于您在此处看到的内容 - https://www.khanacademy.org/数学/cc-七年级数学

理想情况下,我想在 API 调用中将成绩(第 7 名)和科目(数学)作为参数传递来执行此操作?这可能吗?

查看完整的主题树,'domain-slug' 似乎是我使用这个词的方式最接近 'subject' 的东西,但它的设置似乎不一致。我也没有看到一个专门的成绩字段。

您将如何实现这一目标?任何建议将不胜感激。谢谢。

4

1 回答 1

0

我不使用主题树 API 调用 - 它返回大约 50 MB 的数据。我宁愿使用 API 调用“ http://www.khanacademy.org/api/v1/topic/%s ”单独遍历树的节点,其中 %s 是“node_slug”字段,以“node_slug”开头“根”。

从那里您使用“children”和“child_data”条目来遍历子节点。“children”具有详细信息,“child_data”基本上只是它们出现的顺序。

对于每个节点,有两个重要的字段需要查看,“kind”和“render_type”。

“种类”可以具有以下值:

  • “话题”
  • “视频”
  • “锻炼”
  • “文章”
  • “便笺”
  • “分隔器”

“render_type”可以具有以下值:

  • “根”
  • “领域”
  • “学科”
  • “话题”
  • “教程”
  • “未经策划的教程”

因此,从“root”开始,您遍历子节点以查找具有“render_type”=“Domain”的节点。这将为您提供“数学”、“科学”等内容。现在您可以使用“数学”节点遍历其下的主题,寻找“render_type”=“主题”。其中你会发现 7 年级等。

注意:域和主题节点都有“kind”=“Topic”,因此您应该确保检查这些节点,然后使用“render_type”来查找域或主题的区别。

我还要做的是缓存 JSON 响应,这样应用程序就不必从网站重新加载它们。我可以选择在需要时从网站上刷新它们。

然后,您可以使用主题节点进一步遍历其子节点以获取视频、练习、文章等。

于 2017-01-23T12:39:17.277 回答