利用 Workflow快速添加 Flashcards 背单词

利用 Workflow快速添加 Flashcards 背单词,第1张

——写在文外:按本文内容 *** 作需要一定动手能力,且准备工作稍复杂,但最终实现效果很便利,可以先看预览效果感受下。

自从去年重拾日语 (我相信读者都是理性的,我们只谈文化不谈政治) ,基本每天都会在微信公众号 NewsWebEasy [^ NEWS WEB EASY]上看一篇日语新闻。文章内容虽然用的都是基础词汇,但仍会经常遇到生词。如何快速记录它们就成为一件棘手的事。更重要的是,记录不代表记住,如何复习也是个问题。

有读者应该已经想到,用 Workflow for iOS 这款效率App。嗯,我也确实这么做的,不过早期对 Workflow 功能浅尝辄止,自建的动作也比较低级,遇到生词复制后运行,跳出输入框,手动输入生词的假名、音调、词性和解释,同步到 Evernote。

至于复习,就是经常去翻看记录的生词。话虽如此,可是然并卵,首先是会忘记去看,其次随着记录的生词越来越多,打开后看见满满的生词也就不想看了ヾ(。 ̄□ ̄)ツ゜゜゜。

复制生词,通知中心运行 Workflow 动作,提取 沪江小D 上该词相关信息,通过 Quizlet [^ Quizlet] API 添加新的 Flashcard[^ Flashcard]。Flashcards App 根据记忆曲线提醒复习,每次只复习若干生词,再也不会被满屏生词 KO了。

首先预览下动作效果,给你看下去的动力。

先附上 Workflow 动作:动作一 Quizlet获取token ;动作二 日语生词添加Qz

Quizlet 官网注册普通帐号,打开 开发者网站 (需先认证注册邮箱) ,按注释填入表格申请 API Key。

申请完页面如下,后续用到 Client ID Redirect URI Secret Key

Token Key 获取的详细流程和参数说明见 官方文档 。主要分为三个步骤:

【1】引导用户到授权服务器的授权入口。该步只需打开下面链接即可。其中 MY_CLIENT_ID 就是前面获得的 Client ID scope 表示授权第三方的权利范围,分别为:read、write_set、write_group,这里需要可读写删除的 write_set 权限; RANDOM_STRING 是任意字符串,用于防止 CSRF 攻击 (我也不懂什么鬼) ,搞个随机数即可。

【2】打开上述链接后询问是否授权访问 Quizlet 账户,允许后会转到 Redirect URI 指定的链接并附上 code 参数。复制该链接并用正则表达式提取 code 。Workflow 动作一运行如下图,授权跳转页面后 拷贝 (原则上来说,还需要校验传回来的 state 参数是否和第一步传给服务器的一致,避免 CSRF 攻击 。)

【3】向服务器请求 Token 。 POST 信息按官方要求填入即可。其中 Authorization 一栏内容为 Basic base64-encoded(Client ID:Secret Key) ,该值可自行转换,也可用官方转换好的,详见 该页面 Step 2 中的表格最后一行。

动作一 会把获取到的 Token 复制到剪贴板,把该值粘帖到第二个 Workflow 对应项即可。

本文是针对日语单词,如果是其他语种词汇,尤其是针对英语,各类词典 API 还是很丰富的。英语词汇可考虑添加生词到扇贝服务器, 详见此文 。

目前沪江小D未开放查询 API,只能曲线救国,提取查询后的网页信息。沪江小D 查询链接为 http://dict.hjenglish.com/jp/jc/ 中国 ,利用 Get Contents of URL 获取网页内容,假名ちゅうごく,音调①、词性和释义都在了。

经过多次测试对比,假名和词性都用“【】”包含,而音调都在罗马字发音 (图中为【chuugoku】)后面,释义最好获取 详细释义 后面的第 1、2 条(因为有些词语【词性】后面没有释义)。

利用 正则表达式 分别提取需要的内容,表达式具体写法见 Workflow 动作,不再赘述。需要说明的是:

(1)当网页中“【】”一组也没有时表示未查找到词语信息,需要一个 If 来判断。

(2)最近更新的 魔法变量(Magic Variable) 虽然能简化流程,但本动作需要提取多个信息,且需多次用到,如果全部用魔法变量反倒不方便不直观。

(3)动作中设置了 Show Notification ,便于确认查到的信息,毕竟不是官方 API 支持,有些不常见的生词无法用正则表达式获取到正确的信息。

利用 Get Contents of URL POST 词汇信息到 Quizlet 服务器。其中, Authorization 一栏填入动作一中复制的 Token term definition 可以理解为抽认卡的正反面。

图中 URL 链接如下,其中 187957966 是要上传的 Flashcards 组 ID (不然服务器不知道你要把新的 Flashcards 添加到哪) 。

如何获取该 ID 呢,打开 API test 页面

直接点击蓝色按钮 Send API Request

d窗中可以找到 ID,其中 title 对应组名,双字节字符会重新编号,不易辨认。

Flashcard 上传成功后会有通知提示,其中 仅供参考 表示沪江小D对该词仅有基本解释,无发音等信息,一般多为专属词。仅供参考词语不会添加到 Flashcards。

需要说明的是,因为非官方 API 支持,所以查询结果有时会有小 BUG,如果出现烦请告知我。

可以看到,【中国】这个词语相关信息已经添加到 Quizlet 了。

可以选择官方的 Quizlet ,好处是添加新的生词后刷新下就可以学习了。但我个人在用 Flashcards Deluxe,可设置的选项和主题比较丰富,缺点是需要手动更新 Flashcards,如图。第三张图片意思是:词语会被新的替代,但学习进度保留。

显示效果下图

获取了Quizlet 账户完整权限,其实可以作一个寄生于 Workflow 的小程序,除了添加、还可以删除、修改,甚至对 Flashcards 批量 *** 作。更多 *** 作请求方法见 官方示例 。

Workflow 是个了不起的应用,不断更新使得 iOS 能力有了更多可能性。

在编写本文 Workflow 动作时,也学到了很多新知识,比如正则表达式, OAuth 授权流程。因为不懂 HTTP 请求,在获取 Token 时走了很多弯路,当经过一番努力后突然明白了解决了,这种成就感和喜悦之情真是难以言表,简直太棒了。我想这就是人类不断探索进取的源动力之一。

本文 Workflow 动作适合在 iPhone 或 iPad 上阅读新闻使用,如何把电脑上浏览时的日语生词,快速 &批量添加到 Quizlet 生成 Flashcards 呢。这个还是看大家对本文的反馈吧,人少就没必要发了。

[^ NEWS WEB EASY]: NEWS WEB EASY やさしい日本语のニュースです,类似 VOA 慢速英语,NWES WEB EASY 发布的新闻都是用简单词汇和基础语法,便于日语初学者和日本小学生阅读。

[^ Quizlet]: 在线 Flashcards 网站,提供 iOS 和 android 客户端。

[^ Flashcard]: Flashcard,即抽认卡 。

具体内容是:

把同样的文字内容一次性发送到 Weibo 或/和 Twitter。

把同样的文字+图片一次性发送到 Weibo 或/和 Twitter。

通过 Share Sheet 分享任意链接并且加上自己想说的话,然后发送到 Weibo 或/和 Twitter。

将以上三步合并为一个 Workflow,执行时选择其中一个然后让 Workflow 自动进行后面的工作。

将文字内容送到Weibo 或/和 Twitter

在这里用到的动作只有三个

Text

Text 是最简单也比较常用的动作,最关键的是我们对它非常熟悉——“就是个输入框嘛,往里打字就可以了呗。”如果你这么想就对了,这软件上手就是这么的傻瓜式——你要做的就是把想发的微博内容输入到 Text 的文本框里。

Ask for Input

上面介绍的是 Text 文本框,我们看到它非常熟悉,但是它的一大缺点是会保留上一个 *** 作留下的内容。也就是说,你每一次通过 Workflow 发微博,都需要把上一次发的内容先删了才行。所以我实际上建议在这个 Workflow 里实用Ask for Input 这个动作。

Ask for Input 这个动作也是 Workflow 里最常用的动作,我在上一篇文章也提到过它。

1-1

你把 Prompt 里填上“微博内容”,这样每次打开这个 Workflow,直接点击运行。它就会d出个对话框让你输入微博内容。

Tweet

Tweet 的动作框里,前半部分写着“Show Compose Sheet”意思是“显示内容编辑框”,后面是一个开关:

内容编辑框

如果你把开关打开,那么就是选择显示内容编辑框,这么做的优势在于:

可以看到文本(图片)内容、字数。

如果你是多账户的话,临时可以选择账户。

可以临时修改内容。

可取消该步骤

但想必你会马上意识到“妈的我刚写好的东西有什么可修改的?”所以其实显示内容编辑框的优势并不明显。而关闭那个开关,也就是不显示内容编辑框的话,界面就会变成这样:

关闭开关

它的好处是:直接后台发送内容,省掉你点击编辑框的时间,以及等待发送成功再进行下一步的时间。

但是如果你确实有选择账户的需求,又不想看到内容编辑框浪费时间呢?Workflow 同样可以做到:按下 Tweet 动作框里选择账户的部分,你就能看到一个d出菜单,里面会有Ask When Run、Clipboard、Input三个选项,你选择Ask When Run,就能在动作进行到这一步的时候自动出现一个对话框来问你选择哪个账户发送。

选择账户

注意,在内容编辑框里,我们需要先按一下选择账户那个位置——也就是说我们要先看一下那个位置在哪——然后再选择账户。而在 Ask When Run 这种方式下,我们是直接选择账户。

另外,记住,在 Workflow 这款软件里,凡白皆可点,每个动作框里只要有白色的区域就是可以点的,只要有菜单出现就至少能看到 Ask When Run、Clipboard、Input 这三个选项,活用 Ask When Run 能让你做到一些你认为你做不到的事。

Share

分享按钮

Share 这个动作就是大家最熟悉的分享按钮了,之所以要用到它是因为 Workflow 在当前版本(1.0.1)还没有支持微博的分享功能,等到支持了应该就能和 Tweet 这个动作一样,可以在后台发送。也就是说,你只要编辑好内容,点一下发送,剩下的 Workflow 帮你做好。

将文字+图片发送到Weibo 或/和 Twitter

在这一步我们将谈到变量,你会发现它果然也很容易。

会发文字微博了,图文微博怎么办。在文字微博那个 Workflow 上再加几步就能做到。

选择照片

在动作列表里找到 Select Photots 这个动作,用它来选择照片。拖到你的 Workflow 里以后你会发现有个 Select Multiple 的开关,打开就能多选图片,但是 iOS 本身不能上传多图到社交网站——你可以自己试试在相册里选择多图的话,Twitter 和微博这两个选项都会不见的——所以 Workflow 以及任何通过 iOS 内置的功能去分享照片的办法只能分享一张照片。所以这个开关在这个 Workflow 关上就行了。

另外,如果你经常分享最后一张照片(或者是手机截图)的话,你可以在 Workflow 的动作列表里找到 Get Latest Photos 和 Get Latest Screenshots这些选项,拖到 Workflow 里试试看会有什么效果~

设定变量

终于看见“变量”这俩字了,是时候克服你从初中数学开始就对这两个字产生的恐惧了。

为了节省时间,我们要使用 Workflow 把两种不同的内容(文字和图片)作为一个整体发送出去。这一点的困难就是你得告诉 Workflow 他们俩(文字和图片)是一起的。在 Workflow 里的做法,就是:把文字放到一个变量里,把图片放到一个变量里,然后把这俩变量合成一个变量,交给 Workflow。

具体的 *** 作是,在动作列表里找到 Set Variable 也就是“设定变量”这个动作,然后拖到 Select Photos 这一步的下面,你会发现这两个动作中间连起了一条线,这就说明 Workflow 明白了你要把你选的那张照片设为一个变量。然后你可以在 Set Variable 后面的空白处输入你想输入的东西,我在这里输入了“图片”,你可以输入“img”,它就像给这张图片起了个临时的名字,什么名字都可以,中文英文符号只要你明白就都可以。

给图片设置变量

所以你可以这样看 Workflow 里的变量——给前面那一步的结果起个名字。

添加变量

前面说到,我们在这里用变量的原因是要用 Workflow 把两种不同的内容(文字和图片)作为一个整体发送出去。所以要给图片起个名字(设个变量)、给文字也起个名字(也设个变量),然后把它俩放在一起成为一个组合,再给组合起个名字(设个新变量)。

在 Workflow 里,这个步骤要分开来做。也就是说,图片起了名字以后,直接就可以成立组合,等一会儿给文字起名字以后把他加到这个组合里就行了。这在 Workflow 里的具体做法是:

将一个变量添加到另一个变量

在动作列表里找到 Add to Variable 也就是“添加到变量”这个动作,拖到你的 Workflow 里,Set Variable 这一步下面,那条连接的线就又会出现,你应该已经懂得它代表什么了。同样,这个组合的名字你可以随便给,我给的是“图文”。

对文字的处理

我们现在已经把文字和组合的变量设妥了,现在要处理文字了。我们要给文字设个变量,再把文字这个变量加入到组合的变量里。具体做法是:

把 Set Variable 拖到 Ask for Input 下面,给它起个名字;再把 Add to Variable 拖到 Set Variable 下面,注意,这里现在要填的是组合的名字,你不能再胡给名字了。

9

删除照片

Workflow 可以在处理完照片以后删除这张我们再也不会用的照片,在这个 Workflow 里,只要你把 Delete Photos 这一步放到 Share 这一步的下面就可以了:

10

Workflow 里有修改图片的功能叫做 Edit Photo,这个在分享照片的时候很实用,一般你给人看图片就会有希望让他看的那个“点”,通过 Edit Photo你就可以把你想让对方看的地方标记出来。那么你能不能在这个环节介绍的 Workflow 里加上 Edit Photo 这个动作,让你的 Workflow 更实用?

有时候人们分享图片是只想分享图片,不加字儿,但是新浪微博要求必须加字才能发微博。所以它官方客户端在只分享图片的时候的做法是自动添四个字“分享图片”。通过 Workflow 能不能做到?

通过 Share Sheet 分享任意链接发送到Weibo 或/和 Twitter

有时候你看到了一篇网站或者在你的 RSS/Read Later 客户端里读到了一篇你想分享的文章,你在 App Store 看到了一个好的 App 或者游戏,你想把它同时分享到 Twitter 和微博,通过 Workflow 也可以轻松做到。

Workflow Type

在这个环节我们要接触 Workflow Type,它只有两种,所以没什么难的。

查看 Workflow Type 的方法是在每个具体的 Workflow 的右上角寻找齿轮图标,里面是一个菜单,其中有一项是让我们选择 Workflow Type:

Workflow Type

Normal 类型的 Workflow 不会出现在 iOS 的分享菜单里面,只能通过 Workflow 这个程序本身运行。前面的内容都是在 Narmal 这个类型里完成的。

Action Extension 类型的则可在 Workflow 程序内运行也可在分享菜单中运行(Workflow 的相应位置有图解)。我们在这里要用到它,比较强力的 Workflow 一般都要用到它。

我们选择 Action Extension 能看到 Accepts 这个选项,打开后里面有一个列表,这个列表里显示的是 Workflow 分享菜单里接受的数据类型。

选择 URLs

我们在这里是要分享链接到微博和 Twitter,所以可以把其它的都删掉只要留下 URLs 就可以。

这其实已经是“分享链接到微博和 Twitter”这个 Workflow 的第一步——获取链接,下一步我们要做的,就是要给链接设一个变量——我在这里设置的是“链接”——好把这个链接和我们一会想发的微博放在一起。

直接把获取的 URL 设为变量直接把获取的 URL 设为变量

然后下一步,我们要开始输入微博正文了,我们还是和以前一样要用到 Ask for Input ,然后给它的结果也设置一个变量,我在这里设置的是“正文”。

14

最后通过 Text 框把两个变量放到一起。这一步有点小技巧:当你点进 Text 框,你会发现d出的键盘上有 Ask When Run、Variable...、Clipboard 这三个按钮,选择 Variable...,你就可以看出一个d出的菜单,里面有你在前面设置好的所有变量。比如说我前面设定了选择其中的变量,就会在 Text 框里出现一个套着蓝色框的变量——这就是 Workflow 的自定义变量的表现方式:

Workflow 里变量的表现方式Workflow 里变量的表现方式

到了这一步的逻辑是,你给链接设了个变量(link),然后输入微博,给这个微博内容也设个变量(正文),最后在 Text 框里面给这两个变量排一下顺序,决定让微博内容在先还是链接在先,最后将 Text 框里的整体作为微博发送出来。所以最后不要忘记加上 Tweet 跟 Share 这两个动作。

既然是分享链接(一般是文章)到社交网站,比较方便的办法其实是直接引用文中一段话作为对这个链接的介绍。所以你可以想想,能不能这个环节介绍的 Workflow 稍作改动,做一个“Clipboard + link 的 Workflow”?

如果你不只想分享链接,还想分享 Safari 里看到的文章的标题,要怎么做?试试看 Get Name这 个动作。

将以上三步合并为一个 Workflow

我们用效率软件是因为我们“懒”,所以既然懒了,就要有懒到底的精神。

现在你已经分别掌握了发送文字内容/图文内容/链接内容到微博和 Twitter 的方法。如果你三种使用情境都有的话,这就意味着你要做3个 Workflow 了。做三个 Workflow 没什么不好,唯一的缺点是“不够懒”。既然都是把东西发送到微博和 Twitter,我们能不能把它们做到同一个 Workflow?让我们做到在分享内容的时候只用这一个 Workflow,然后d出一个菜单里面有“文字微博”、“图文微博”、“分享链接”,然后我们需要哪种分享方式就选哪种分享凡事,剩下的交给 Workflow 来处理。

答案自然是可以。在这里我们要介绍 Workflow 这款软件里复杂动作的核心内容——List、If 和 Choose from Menu。

List——列表

我们要做的是要d出一个菜单,里面有“文字微博”、“图文微博”、“分享链接”给我们选,所以这第一步,可以是一个列表。从 Workflow 里找到 List 拖到你的 Workflow 里,在里面分别写上“文字微博”、“图文微博”、“分享链接”,行不够了可以按添加按钮来添加行。

16

然后我们要从这个列表里选一样,所以要用到 Choose from List 这个动作。同样,找到它然后拖到你的 Workflow 里。因为我们选的是其中“一项”,所以可以把“Select Multiple”这个开关关闭。

然后下一步,就是选完其中一项以后,让 Workflow 知道你选的是什么,然后执行之后的 *** 作。那么其实这里面的逻辑是:

“如果”我选择的是文字微博,“那么”就让 Workflow 执行关于文字微博的 *** 作;

“或者”我选择的是图文微博,“那么”就让 Workflow 执行关于图文微博的 *** 作;

“又或者”我选择的是分享链接,“那么”就让 Workflow 执行关于分享链接的 *** 作。

If——条件

这个“如果……那么……”在 Workflow 里就是 “If 语句”,上述的逻辑在 Workflow 里的 *** 作是:

把 If 拖进 Workflow,你会发现它和其它动作不太一样。If 会带下来 otherwise 和 End If 两个配套的动作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11427652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存