# 2017.04.07 更新:由于未知原因,之前上传的 Workflow 动作都正确却无法正常运行。请重新下载修复的版本:全局视频下载器
越来越多的视频下载Workflow?
经过一段时间的等待,少数派终于在2017年3月29日率先推出了中文网上的 Workflow Gallery。其中视频专栏被置顶,Workflow 的下载数量也是最多,由此可见视频下载功能是 Workflow 应用的重中之重。
尽管 Workflow 中强大的动作能够让我们拼装出各种网站的视频下载器,但是当你的视频下载Workflow 数量多到一定程度的时候,未免就显得有些恼人了。比如当你要下载 Twitter 上的视频时,却发现点开 Run Workflow 菜单,你还需要从多个视频下载、以及其它杂七杂八的 Workflow 中挑出Twitter的下载器。这种不必要的麻烦对我、以及许多偏执狂来说是无法忍受的。而可以预见的是,Workflow Gallery 中视频这一专栏在未来还会多出一批Workflow。
虽然听起来有点讽刺,但是我觉得一个以Workflow治Workflow的契机来临了。
我是第一个付诸实践的人吗?
If
语句引导。If
条件语句,我实在是一点好感都欠奉,因为这种解决问题的方式太过暴力,而且麻烦重重:- 视频网站改版变动后不利于更新维护;
- 层层嵌套的
If
语句不易读,且难以删改; - 。。。
以 Workflow 治 Workflow 的希望?
一个更简洁的 Universal Downloader
先来一些概念性的铺垫
字典 Dictionary
Dictionary
这个动作在许多 Workflow 用户眼里没有什么存在感,但是稍微接触过编程的人都清楚这种数据结构的重要性和实用性。往小了来说,许多少数派读者分享的利用 API 的 Workflow 处处可见 Get Dictionary Value
动作的身影,只不过很少有人会特意使用 Dictionary
动作来自己创建一个 Dictionary 罢了。隐藏 Workflow
对于一个 "Action Extension" Workflow——即会出现在 Run Workflow 菜单中供你调用的 Workflow,如果在保留了 Workflow Input
这个魔法变量后,将其重新设置为 "Normal" Workflow,那么它会从 Run Workflow 菜单中消失,但是依然能通过 URL Scheme 或者 Run Workflow
动作来调用它处理数据。
显而易见,这一特性能够帮助我们清理 Run Workflow 菜单中许多不必要的视频下载Workflow,同时保留它们的功能。
全局视频下载器
开头的 Dictionary
在这里充当一个规则列表的作用。在该字典中,键 (key) 为用于匹配视频网站链接的关键词,键值 (key value) 为处理该视频网站链接的 Workflow 名称。这种方案的优势在于可以通过只修改 Dictionary
来迅速增加、删除相关Workflow的引导,以及直观表现各匹配关键词和相关Workflow之间的一对一关系。
在安装完这个 Workflow 后,不要忘记对那几个视频下载 Workflow 做隐藏处理:在开头插入 Workflow Input 变量,再将其设为 ”Normal" Workflow。
如此,通过寥寥的几个动作,就可以方便地管理所有的、以及未来可能添加的视频下载 Workflow 了。Run Workflow 菜单中也只会出现这一个全局 Workflow ,变得更整洁。未来如果新添加了别的视频 Workflow,都可以通过这个 Dictionary 快速添加。
深化拓展
全局视频下载器 这个 Workflow 是我在另一个复杂点的 Workflow 上精简而成的。
之所以复杂,是因为我把下载视频这一流程拆成了三大部分,并在这三部分上各自进一步深化:
1. Workflow 引导
2. 视频直链获取
指的是各种视频下载 Workflow 所做的工作,或使用 API 获取,或直接从网页源码中抓取视频的直链。
和 Workflow Gallery 中那些 Workflow 的不同的是,我删除了这些 Workflow 中最后的 Get Content from URL
动作,转而使用 Dictionary
动作代替:
由此这些 Workflow 最后都生成一个 Dictionary,其中包含该视频的直链和名称信息。