今年 6 月,我有幸成为中国 WWDC Scholarship Winner 中的一员,前往圣何塞参加 WWDC2019。在这次的开发者大会中,全新的 Reminder 随着 iOS13 一起亮相,全新设计的 Reminder 在 UI 上满足了我对一款 GTD 应用最基本的要求。

关于 Reminder 更新后的一些特色,可以阅读文刀漢三的回炉重造的提醒事项,能否成为我们的主力任务管理工具?| WWDC 特刊

其中,Reminder 在创建一个任务时,可以添加 URL,没有太留意在此之前是否可以,于是我便想到了是否可以借此打造一个自己的阅读管理。

前不久,出于某些考虑,准备购买 Power+,发现 2.0 已经更新了大概 170 多篇文章,想着把这些文章分配到每一天来看。自己又是一个程序员,于是准备用代码快速地将这些文章添加到待办事项中。

Step 1 获取全部文章

通过 Chrome 的检查可以看到这一段网页的 HTML 源码,我们将我们需要的这一段文章目录的 HTML 源码复制到代码编辑器中(这里强烈推荐 Visual Studio Code),并保存为sspai.html

这里对于我们有用的代码就是不断重复出现的 <a></a>,这就是每一个超链接的表示方法,其中 href 是对应超链接的 URL 连接,即每篇文章的地址,标签之间的文字就是我们每篇文章的标题,这两个是我们需要的。

接下来,我们需要使用超厉害的 python 来提取这两个元素。这里我们用到的关键技术是正则表达式,这在文本查找匹配中是一个非常有用的技能,推荐大家去学习一下。

我们先来看一下如何使用正则表达式从这一个 <a></a> 标签中获取 url 链接和标题。

.* 表示匹配所有字符,用括号括起来可以作为一个整体,在之后的 python 脚本中可以直接通过分组的方式拿到这个值。

知道了正则表达式的表达,我们来看看怎么在 python 代码中表示:

接下来要考虑把所有的这样的标签都找到,原理是一样的。

于是,titles 和 urls 保存了所有的文章标题和文章链接。


Step 2 使用 AppleScript 创建待办事项

通过 AppleScript 可以批量创建任务,首先设置两个 list,分别为我们刚才得到的 `titles` 和 `urls`,需要注意的是,直接复制过来时,需要将中括号改成大括号:

set titleList to {“…”, “…”}
set urlList to {“…”, “…”}

然后就是使用循环进行创建

repeat with i from 1 to length of titleList

set title to item i of titleList

set articleUrl to item i of urlList

tell application "Reminders"

set mylist to list "少数派"

tell mylist

make new reminder at end with properties {name:title, body:articleUrl}

end tell

end tell

end repeat

将所有的文章添加到 “少数派” 这个提醒事项列表中,执行脚本即可

缺陷

可惜的是,似乎 Apple 还没有开放待办事项中添加 URL 的接口,所以目前只能将链接放到备注中,希望苹果早日开放这个接口。

其他场景

还有其他的场景,比如你在使用 iOS 上 Safari 看文章,看到一篇不错的文章,但是现在没有时间,想安排到之后再来阅读,便可一下快速的添加到待办事项中:

如果你在 PC 电脑上看文章,Windows 没有 Reminder 怎么办?没关系,搭配 Chrome 的 The QR Code Extension 插件也是有很便捷的方法的:

其他一些想法

有时候,在阅读一本书的时候,想要将书按章节分配到任务,但是又不想自己一个一个添加,其实也是可以通过这种方式来创建,如果仅仅想添加那种第几章第几节这样的,通过上面这样循环的脚本可以实现,如果想包括章节名称,我的想法是通过 OCR 获取目录,然后处理以后进行批量添加。

一个小广告

我前段时间写了一个小应用,是一个番茄钟应用,通过对 Reminder 的扩展可以选择 Reminder 中的任务,为选中的任务创建番茄钟,记录每个任务专注的时间,更具体的介绍可以查看我的这篇文章,有兴趣的同学可以了解一下。

番茄计开发故事


12
8