Workflow 更新到现在已经 1.7.1 版本了,而上一个版本 1.7 中最大的更新莫过于魔法变量——Magic Variable。其目的在于减少 Get Details of ... 的操作和多于的设置并调用变量。可以说它很好地完成了它的使命,许多 Workflow 都可以因为这个功能从好几步变为一步。

Workflow 更新日志中的演示图片,左 1.6 右 1.7

实际上在我写完 Workflow 查快递 那几篇文章之后,有很多我的朋友都来找我寻求购买意见,毕竟这个 App 的价格也不算是便宜的。我告诉他们的就是如果你做简单的小工具,很适合,如果你真的要 coding,Workflow 的拖拽,Blocky 堆叠实在是太麻烦了。早前 Workflow 还不支持 Repeat, If 函数这样子单独成块的一个部分整体拖拽,意味着假设你在 If 里已经放了 10 多个 Block,然后你突然意识到整个 If 放的位置都错了,你需要把 If 连同这 10 个 Block 一个一个的分开拖拽到正确的位置。其间你还很有可能会混淆,忘记哪些是哪些不是,那么问题就更多了。

像我的 Workflow 查快递,现在大概有 200 多 Block,这是非常吓人的。我刚开始做的时候应该是 Workflow 1.4.3,它的大起大落,各种 bug 我几乎都经历过了。说实话,在 4 寸(或者现在我的 iPhone 是 4.7 寸)上去操作真的是非常令人头疼。尤其是很多步骤,几乎都是重复的,如果我是在写代码完全就可以自定函数体来统一执行,而 Workflow?不可以。我跟朋友举例,假设你在一条地铁上,当你要从起点站到终点站的时候,写代码大概就是一直坐到底,Workflow 就是坐一站下车,再上车,再下车……最后到达终点。

所以这篇文章将会在 Magic Variable 最常用的地方,搜索 iTunes Store,App Store 信息来教你如何把 Magic Variable 进行简单应用。下载这条 Workflow 作为参考,你也可以在 _RYAN_ 的 Telegram Bot - Workflow Finder 中找到这条 Workflow。

先来看一个效果图吧。

Import Question

当你成功加上这条 Workflow 后会遇到 Import Question,这一步虽然跟今天的主题没有关系,不过对于运行这条 Workflow 却十分重要。直接按照提示来更改,如果你的 iDevice 语言是英语,将下面的数字改为 2,中文(简体)保持 1 即可,其他语言的话你可能需要阅读后面的文章,根据你自己的需要来修改这条 Workflow 了。

开始使用 Magic Variable

在这条 Workflow 的最最开始,我们就已经用到了魔法变量。第一步 Get Current Song,成功 Get 之后,Workflow 就将结果自动保存为了一个变量。通过 Current Song | Artist 和 Current Song | Title,我就可以直接获取到当前音乐的表演者和歌名。

一开始我只想让它支持 Apple Music 或者 iTunes Store,后来发现它十分好用,索性加了个手动填写,也就是说你在其他地方听到的歌曲输入歌名就也可以在这里使用。

选择 iTunes Store 区域

接下来你就要选择搜索歌曲的 iTunes Store 区域了。如果你是 Apple Music 或者 iTunes Store 购买的音乐直接选择对应的商店即可,如果你是在网易云等其他平台找的歌,可以根据语言来选择,这一步将影响最后分享出来的结果引用的 iTunes Store 链接,也就是说如果你的朋友看到微博的时候都是中国的 Apple Music 用户,你分享的是一首日本区才有中国没有的歌曲,那么他们点击链接就会收到提示需要更换店面。

简单使用 Magic Variable 判断表演者是否一致

接下来就是搜索了,搜索 10 个结果,并逐个循环,获取搜索到的项目的表演者,如果和当前音乐的表演者相同,则保留一个数字表明它是这 10 个中的那一个,方便日后的分享。在这里 If 的等于部分直接使用了 Magic Variable,如果不使用,则需要首先获取 Current Song [1],Get Details of Current Song [2],Set Variable [3] 来完成相同的动作,3 步还不算什么了不起的。

重复使用 Magic Variable

如果在前 10 条中没有搜索到对应歌手的歌曲,就可能出现了你的歌曲名字太普遍(如只有一个英语单词)从而结果太多的情况,这里就可以再次使用 Search iTunes Store 重新搜索更多数量的结果。

在以往的 Workflow 版本中,Search 那步中的 Numbers of Items 我可以用 Workflow 自带的 {Input} 的变量(即上一步的输出结果),而你可以发现同一个数据我在 Choose from List 中又使用了一次,而这个时候如果你再使用 {Input} 就是指 Search 这一步的结果了,你不得不去 Input 那里设置一个真正的变量,而 Magic Variable 就可以直接从老远的地方直接抓取任何已经存储过的变量,不会存在这样的问题。

专辑封面

分享之前,需要一个专辑封面来让微博更美观。这个地方又可以体现 Magic Variable 的一个特点,它可以识别变量的类型。如图中的 iitmsans,是一个 iTunes Store 产品,它自动识别出了变量的类型,并提示我要选择对应的参数,比如 URL,专辑封面,歌手,歌名。如果它是一个图片,它就可能给你提供另外的参数。

魔法变量的类型判断

as iTunes Product 就是它判断出来的结果,当然你也可以点击手动更改类型。这也意味着并非只有 Get Current Song,Search iTunes Store Product 这样很明显是 iTunes Product 类型的变量可以用 Magic Variable 的参数,即便是手动调整的变量,也可以使用这个方便的功能。

iOS Share Sheet

最后你就可以以你喜欢的方式分享了,如果你的系统语言是英语,这段话将也会默认使用英语。

这篇文章对 Magic Variable 的应用非常基础,操作起来也很方便实用。即便你的 Workflow 长而复杂,它也可以帮到你。对于简单的程序,它更可以让你的 Workflow 看起来比以往还要精巧。

这条简单的 Workflow 也许可以帮到你不少,如果你使用 Apple Music 自带的分享,内容少,也没有专辑封面。如果你使用第三方音乐平台,有些会要求你授权微博账号,即使不授权的,发送内容也很冗杂。而现在你所做的就是在 Apple Music 播放歌曲,或者手动填写歌曲名字,就可以生成一条美观的微博分享给你的朋友。