如何获得一门学科 and/or 年级的所有可汗学院主题

How can one get all khan academy topics for one subject and/or grade only

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

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

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

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

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

从那里您可以使用 "children" 和 "child_data" 条目遍历 sub-nodes。 "children" 有详细信息,"child_data" 基本上只是它们出现的顺序。

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

"kind" 可以有以下值:

  • "Topic"
  • "Video"
  • "Exercise"
  • "Article"
  • "Scratchpad"
  • "Separator"

"render_type" 可以有以下值:

  • "Root"
  • "Domain"
  • "Subject"
  • "Topic"
  • "Tutorial"
  • "UncuratedTutorial"

因此,您从 "root" 遍历子节点以查找具有 "render_type" = "Domain" 的节点。这将为您提供 "math"、"science" 等内容。现在您可以使用 "math" 节点遍历其下的主题,寻找 "render_type" = "Subject".其中包括 7 年级等

注意: 域和主题节点都有 "kind" = "Topic",所以你应该确保检查这些然后使用 "render_type" 查找域或主题区分。

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

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