知识点:

  1. 操作:播放声音(Play Audio)
  2. 操作:从列表中获取项目(Get Items from List)
  3. 操作:一个「菜单」的特殊使用范例

这周第二个关于 API 的例子是利用扇贝单词的 API 进行原声发音。在这个例子里我们就不像《23 将图片上传到 sm.ms 图床》这篇一样讲解每一步的含义了,如果不明白某一步的话,可以先重温一下上一篇。

效果演示(需要打开声音)

制作扇贝发音的捷径

扇贝的 API 对于新手来说并不算简单,不过查询单词这部分的 API 非常易于阅读:

扇贝 API 中关于单词的部分文档

我们不必看返回示例,只需要看返回示例上的这 3 个信息:

  1. URL:https://api.shanbay.com/bdc/search/?word={word}
  2. 请求方式:GET
  3. 必填参数:{word},这是要查询的单词

和 sm.ms 图床的 URL 不同的是,扇贝这里的 URL 是一个变化的 URL,它的尾部的那个 {word} 是我们要查的单词,比如我们想查 Shortcut,我们的链接就应该写成:https://api.shanbay.com/bdc/search/?word=shortcut

想要每次手动输入想要查的单词,可以把链接最后 {word} 这个部分改成魔法变量「运行时询问」。这时候「URL」这个操作里应该是这样的:

本捷径中「URL」操作里的内容

随后,我们在下面接上「获取 URL 内容」:

在「URL」之下接上「获取 URL 内容」

这个操作默认就是使用 GET 这种请求方式,所以我们就不必打开「高级」再进行调整。

现在我们可以尝试着获取 JSON:

调整过格式的 JSON

转化个时候我们发现,在「data」这一级之下的「audio_addresses」中,有两组音频链接,一个属于「us」、一个属于「uk」。这一看就是美音和英音的区别,那么我们只要根据自己的需求,来选择想要哪个音频文件即可。想要临时选择美音还是英音也完全可以,我们就以临时选择作为例子来继续制作捷径。

首先我们使用「获取词典值」,一步一步到达选择发音的之前的这一步「audio_addresses」:

通过「获取词典值」获取「audio_addresses」的值

随后在下面接上菜单,菜单分别设为美音和英音。再在其中分别加上「获取词典值」:「美音」的选项下,「获取词典值」的内容就填 us;「英音」的选项下,「获取词典值」的内容就填写 uk

通过「菜单」选择不同的发音

这样一来,我们就能做到临时选择发音是用英音还是用美音了。接下来,我们注意到在这个部分 JSON 对每个发音提供的都是 2 条 URL:

每种发音都是 2 条 URL

但实际上这两条 URL 没有本质区别,我们选择后一项即可。这在捷径中的操作方式是使用「从列表中获取项目」:

利用「从列表中获取项目」获取多项结果中的一个

我们把「从列表中获取项目」设为「获取最后一项」,就能做到获取多项结果中的最后一个,在这里就是我们想获得的音频链接。

接下来,我们只要使用「获取 URL 内容」把音频链接下载下来,再用「播放声音」把发音播放出来即可:

获取原声文件并发音

捷径下载:扇贝单词真人发音

小结

这个捷径的一大特色是它经过一点小修改之后就可以通过「小组件」直接使用而不用跳转捷径,这个小修改就是想办法能让这个捷径可以直接查询剪贴板中的单词。

其实,如果不想每次都输入单词,而是想选词查询、获取剪贴板里的单词查询等等,也都可以通过我们在之前讲过的内容里实现(提示:使用文本输入判断)。结合过去的知识和新知识,就可以把一个比较基础的捷径的适用范围给扩展得更大。

这个捷径其实只是取了扇贝的查词 API 中最有特色的一个——原声发音。但其实它能够做到的功能还有很多,包括中文解释、英文解释、音标等,你可以在搞明白原声发音的基础上尝试着增加一些功能。

另外,扇贝的词库也不是万能的,有时候会查到其中没有的单词,比如你随便输了个单词或是输错了。这时候你可以尝试设计一个捷径,来处理这种没有查到单词的情况,比如弹出一个提示,提醒使用者「对不起,您要查的单词扇贝还未收录。要不您再看看拼对没?」

通过 API 来实现的捷径,都经常会遇到这种结果不理想——也就是请求 JSON 但是失败——的情况,而当这时候都会返回一些特定的信息。根据这些信息,在捷径里利用「如果」来处理失败的结果,给使用者一些提示,可以让捷径的体验更好。

总之,一个简单的捷径基础可以根据使用者的需求进行多种优化,希望大家不要仅仅满足于了解到了基础,而是能够多构思一下对自己有实用意义的场景,然后通过捷径来满足它。

最后,很多人用捷径最怕的就是一点——自己没有所谓的编程基础。但是这周看了和 API 相关的捷径(这是和真正编程最接近的捷径类型),是不是感觉难度也不是那么大?自己是不是还有点摸到套路了?如果这么想的话,这种自信是很好的,可以继续保持。但也要知道,事情肯定不会这么简单,和 API 相关的捷径的道道儿我们只是了解到了主要的结构,但有一些棘手的细节,我们要留到下周再处理。