如何只为一个学科和/或年级获得所有可汗学院的主题

时间:2017-01-20 19:10:33

标签: khan-academy

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

理想情况下,我想在API调用中将等级(第7个)和主题(数学)作为参数传递来执行此操作?这可能吗?

查看完整的主题树,'domain-slug'似乎与我使用该单词的方式最接近'subject',但似乎并未设置一致。我也没有看到专门的成绩领域。

你将如何实现这一目标?任何建议都将非常感激。感谢。

1 个答案:

答案 0 :(得分:0)

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

从那里你使用"孩子"和" child_data"用于遍历子节点的条目。 "的子"有详细信息和" child_data"基本上只是它们出现的顺序。

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

"种类"可以有值:

  • "主题"
  • "视频"
  • "运动"
  • "物品"
  • "便签"
  • "隔板"

" render_type"可以有值:

  • "根"
  • "域"
  • "主体"
  • "主题"
  • "教程"
  • " UncuratedTutorial"

所以,来自" root"你遍历子节点寻找节点" render_type" ="域"。那会给你像"数学","科学"等等。现在你可以使用"数学"节点迭代它下面的主题,寻找" render_type" ="主题"。在那些你会找到7年级等

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

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

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