惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Hackread – Cybersecurity News, Data Breaches, AI and More
U
Unit 42
Vercel News
Vercel News
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG
爱范儿
爱范儿
MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
C
Check Point Blog
N
Netflix TechBlog - Medium
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
博客园_首页
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
Last Week in AI
Last Week in AI
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
V
Visual Studio Blog
小众软件
小众软件

HANG ♥ WRITING

ChatGPT 问世两年,我在 AI 的辅助下成为了一名 iOS 业余开发者 如何使用 Netcat 构建简单的安全聊天系统 QuakeSense 震感,一款简洁原生的 iOS 地震通知 App App Store 中国大陆 ICP 备案最佳实践 几款有意思的 Google Chrome 侧边栏扩展应用 GetVM 让编程学习更快一步 WildCard (野卡) - 国内用户零门槛订阅 ChatGPT、Claude、App Store 万里汇开发者收款使用全指南 | 注册、开户与账户绑定教程 中国大陆居民开通华侨银行(OCBC)海外账户完全指南 实用的 macOS 内置命令,省下买第三方应用的钱 《认知觉醒》之触动学习法 不是程序员也可以搞开发,一小时入门 Retool 低代码 疫情来袭,手把手教你在家制作美味炒鸡 企业微信机器人 Webhook 推送语雀更新消息 基于 Cloudflare Workers 部署的 JSON Database 数据库 印象时间:印象笔记出品的时间管理应用 Pixelmator Photo 2.0: 桌面级功能并适配 iPhone Shortery:Mac 快捷指令自动化 Pixelmator Pro 2.3:AI 背景去除 Quit All:一键退出应用程序 Raycast:推出官方扩展商店和开发者平台 简悦 API 2.0:收藏助手和快照功能 HomePod mini 使用体验 Prizmo 5.5:扫描效果增强并新增批注功能 Notion:近期值得关注的新特性 Google Analytics 替代品,零成本和零门槛搭建 umami.is Infuse 7:一款近乎完美的视频播放器 Gyroscope 4.14:新的产品名称和多项改进 V day:在手机上创作短视频 Things 3.14:备注支持 Markdown,同步速度加快
手把手教你制作一个「有爱」的 workflow 动作
huhuhang · 2017-03-25 · via HANG ♥ WRITING

如果你是以为「异地恋」患者,每天问候一下你的远程伴侣就变成了一件例行公事。比如说我(匿名作者),每天早上喜欢习惯性发一条短信给她。可能是一条很无聊的短信,提醒一下今天的天气和空气情况,送去一份小小的「温暖」。

当然,现在的 app 做的都很棒,你往往只需要通过自带的分享插件就可以将这些信息转发出去。但是,自己动手 DIY 的感觉还是很棒的嘛,所有我决定做一个 workflow,每天早上只需要点一下就可以搞定这件事情。

初步构思

想做一个一键发送问候短信的 workflow,首先得有两个模块,那就是「文本」和「短信发送」。其实,我也从来没有完整地将 workflow 里的每一个动作都浏览一遍。但通过猜想,「文本」动作可能包含 text 关键词,搜索之后果然有。同理搜索 message,也就找到了短信发送的动作。

找到这两个动作之后,首先在文本框填入你想发送的内容。其中,有些内容是固定不变的,有些是可变的。比如我这篇文章中要发送的天气和空气信息,每天都不一样。固定内容可以先直接输入,而变化的内容需要用 workflow 的 Variables 变量来控制。

从本例的实际情况来看,由于我习惯早上发短信,所以直接填入早上好。当然,你也可以通过 workflow 来实现根据当前时间自动填入「早上好」、「中午好」、「晚上好」等内容。我相信看完本文之后,自己就可以实现了。本文的三个变量 Nickname 称谓,比如:今天叫「小可爱」,明天得换一个,每天都一样会被发现的。weather 是天气信息,air 是空气信息。这些都是 workflow 里的Variables 变量。

获取天气信息

接下来是先获取天气信息,当然获取这些信息的操作是要放在上面动作之前的。天气信息从哪里获取呢?最好,最准确的方式是通过一些天气 API。听到 API 就头疼,不用担心,很简单。常见的天气应用都是通过购买 API 来保证服务的稳定性,由于个人的请求量不大,所以上网搜索一些公开的 API 就可以了。比如,我找到了一个 http://i.tianqi.com 提供的 API,它的请求链接是这样的。

http://i.tianqi.com/index.php?c=code&id=8&icon=1&py=city&num=1

你可以把这个链接粘贴到浏览器里看看返回了什么?是北京市当前的天气信息。仔细观察链接你就能看出想要返回自己城市的天气信息该怎么办了,答案是替换 city 的值。把 city 换成你所在的城市试一试,主要要用拼音。例如:

http://i.tianqi.com/index.php?c=code&id=8&icon=1&py=chengdu&num=1

上面的链接就返回了成都市的天气情况。city 支持中国所有的市/区/县,你可以输入所在区的拼音名称,获得更精准的天气。

接下来就是将 API 返回的信息变成你想要的内容。其实,大多数 API 会返回一种叫 JSON 的数据文件,它就是字符,可以直接插入到短信文本中。但是,很遗憾这里并不是。所以我们需要曲线救国。

思路:将返回的页面转换成 HTML 源代码,然后从中匹配关键字,替换为自己想要的文本内容。

这里使用到常用的 Get Contents of URL 获取网页内容,再通过 Make Rich Text from HTML 将源码转换为文本。如果你觉得思路有一些跳,可以单独放一个插件试一试会返回什么内容。

测试一下,通过这个 workflow 返回了如下图所示,我想要的天气文本内容。

这个时候,你可以直接将这段文本内容 Set Variable 插入到短信中。但是,你有没有感觉这段天气信息特别生硬,和 app 分享的内容没有什么区别。

这里我们通过文本替换,将内容变成自己的话叙述出来。用 If 条件来判别,包含「雨」字时,说明要下雨,你可以加一个 emoji 让内容活泼起来。

正常情况下,天气信息包含晴、阴、雨、雪等内容。你可以到网上查到这些信息,然后根据所在地实际情况设置条件即可。例如,海南几乎不存在下雪的可能,所以就无须设置匹配「雪」的条件。这就是文本替换的作用,它很灵活。设置完这一串条件,将最终输出使用 Set Variable 存为一个叫 weather 的变量即可。

获取空气信息

接下来就是获取空气信息。其实和天气信息一样,我们需要先找到一个可用的 API。有很多可用免费申请的服务,例如:aqicn.org 以及 pm25.in。你可以查看相应的说明,填写资料申请一个私有 AppKey。这两个服务都直接能返回 JSON 格式的数据,使用起来非常方便,参考天气信息获取方法就好了。

由于我需要的成都市空气信息在美国领事馆网站上也有提供,所以我准备直接采用了美领馆的数据。目前,美领馆只提供了北京/上海/沈阳/广州/成都五个城市的数据。本来我想通过和获取天气数据同样的方法,但是意外发现美领馆的数据竟然提供了 RSS 链接(成都市数据 示例)。于是,就换一种思路吧。

这里,我们使用到了 Get Items from RSS Feed 这个动作,填入 url 地址,只获取最新的一条数据。

然后查看到美国的空气质量分级表。

接下来,使用上面相似的 If 判断语句完成文本替换。仿照上文设置完这一串条件,将最终输出使用 Set Variable 存为一个叫 air 的变量。

需要的两个变量信息都已经有了,最后测试一下这个 workflow 试试看,大功告成。

小结

最近,随着苹果收购 workflow,让更多的人知道了这个强大而有趣的应用。本文主要是写给一些刚刚用上 workflow 的朋友,提供一个引导示例。当然,少数派已经有 JailbreakHum 写的一系列出色的 教程文章,以及许多 Matrix 作者的 个人分享。俨然已经成为了最大最全的中文 workflow 教程集中地。你现在要做的就是大开脑洞,亲自动手实现自己想要的 workflow 吧。这将会是一个非常有意思的过程。[^1]

[^1]: 本文所使用的 workflow 不提供公开下载,如果你仍然有不明白的地方,可以私信索取。