Cactus – 在链接里选取文字
本文最后更新于 118 天前,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Cactus在链接里选取文字

本文作者:Ryan_the_hito
转载地址:https://sspai.com/post/82343

前言

在网上冲浪时,我们常常能看到一个页面里面有许多超链接(Hyperlink),这些链接虽然以文本的形式呈现在界面上,但可以使浏览者在单击后可跳转至另一个页面,它们往往有与其他文本不同的颜色,带有下划线。当鼠标放上去的时候,箭头形态的指针光标将变为手型,此时整个超链接都会被选中。

图片来源:维基百科 Hyperlink

少数派的读者对上述描述应该不算陌生。我们每天都在点击大量的链接,这些链接使写作者不再需要将链接完全嵌在文本中,而是以原文本的面貌呈现出来,让文本的连贯性和统一性得到极大提升。可是,如果阅读者想要从超链接的原文本中选出一部分词语和文段的话,就成为了一个问题。

当光标放在一般文本上时会变成工字型,此时用户能够很轻松地选中文本然后复制,如此获取网页文本。但是当光标置于超链接之上时,手型光标无法选择文本,如果按住鼠标拖动,则会形成一个灰色的链接,说明此时鼠标选中的是作为整体的链接,而非链接中的原文本。

当按住链接拖动时,通常情况下无法选中链接内的文本

在我的日常使用体验中也是如此,我常常在搜索界面上的超链接内看到了想要使用的文本,并不想打开页面后再复制标题,而是直觉般地用鼠标去划选,却屡屡碰壁。因此,我在今年 7 月初写作了 Cactus 这一免费软件,希望能够为这一需求创造便利。大家可以从我的 GitHub 项目 中阅读其指南并下载。

如何从链接里选取文本?

那么,我们该如何从链接里选取文本呢?现在比较普遍的方法是安装浏览器扩展,例如比较经典的 Select Like A Boss,在各类浏览器中都有扩展。当我在写 Cactus 时,Select Like A Boss 还没有发布「2023 Jul 42」版本,那时几乎没有可用的工具。而当该版本在 7 月下旬发布后,一些功能得到修复,可在选中链接并水平移动时选取其中的文本,选中上下拖动则默认为拖动链接。但我发现它依然有一些局限。

Chrome Web Store 中的 Select Like A Boss

我在使用过程中遇到了这样一些问题。例如,它在 Safari 上时而可用,时而不可用;有时它选中了我想要的内容,有时选得不那么精准;有时还没选完,光标指针就变成了箭头形,松手后依然打开了链接;有时则是水平移动和上下移动识别发生错误,本想选中文本,结果又拖着链接动了。或许是因为发布时间太久远,这个插件似乎不能在所有类型的超链接上使用,例如,我发现,谷歌搜索界面上的结果就无法顺利选取。

然而这其中最令人感到有需求的,还是在跨浏览器情景下的使用。我日常需要交替使用 Chrome 和 Safari,但在不同内核的浏览器上,这一插件的表现并不一致。因此在使用时,使用的连贯性和联通感少了许多。

另外,除了插件之外,一些浏览器也支持使用快捷键选中链接中的文本。比如,在 Chrome 中,按住 Alt 键,或者 Option 键(在mac 上),虽然也能选择,但选完了还是会打开链接、弹出新页面。类似地,Safari 也不支持这样的方式。

于是,我开始思考,有没有非浏览器插件的办法,能让用户在浏览页面时更加轻松地选择链接中的文本?

探索浏览器中的右键

既然光标能够一次性触发链接所占的全部文本,那么如果右键点击链接的话,不就是将这一部分全选了吗?

我发现这一特性不仅在 Chrome 中适用,在其他内核的浏览器中也是相同的。只不过有些页面上右键一次会选择更多的文本,超出超链接所占的文本。例如,在 Google 搜索页面上,将光标置于链接上,右键复制,蓝色区域将覆盖链接和上方的网址。若是如此,我计划使这个软件将复制所得的文本呈现出来,让这些文本可以进一步地被用户自由地裁选。

在 Google 搜索界面,右键选择链接将覆盖所选标题和上方的网址

发现这一共性之后,我开始了头脑风暴:或许我们可以设计出一个连续动作,当它被触发时,先右击光标所在位置的链接,将选中部分复制到剪贴板,最后再显示在用户的光标旁,供用户选取其中一部分复制,或者复制全部。如此,便诞生了 Cactus。

如何让这一切连起来?

我使用了一组 Apple Script 来实现这个目标。如 UI 图示,Cactus 的显示窗口上有三个按钮,左数第一个是复制全部文本,第二个是复制部分文字,最后是关闭按钮。Cactus 可以复制一个链接中的全部文本,但更关键的是,用户可以自由地选取这个链接中间的部分文字。当看到一个超链接文本的中部有我们需要的文字,但苦于无法获取它的时候,用户可在文本框内选中这部分文字,然后点击「Copy selected」按钮即可。

Cactus 的应用界面

Cactus 还能在文本框中对这部分文字加以修改。有时,我们对刚刚获取到的文字需要进行快速简单的加工,例如增添一些语气词,或者将其填补完整、成为一句完整的话,这时,Cactus 就相当于一个实时的剪贴板编辑器,用户可以随心所欲地增删文字,然后点击「Copy all」按钮,刚刚修改过的文本就全部复制到剪贴板了。

在触发 Cactus 的方式上,我区分了两种情况。

第一种情况是,用户可以设定延迟时间,用户开始计时后,将光标移动到对应的链接上,等计时结束,Cactus 自动触发,右击鼠标位置的链接、复制,并在光标所在位置弹出窗口,显示链接中包含的文本。

第二种情况则相反,用户可以将计时定为 0,先把光标移动到链接上,然后通过使用 Alfred 或者 BetterTouchTool 等工具来触发 Cactus。

如果用户电脑已有 Alfred,即可安装此指令使用(Cactus Keyword to Script.alfredworkflow),通过 Alfred 间接设置全局快捷键。用户还可使用此通用的 Applescript 脚本(Show Cactus.applescript),在其支持 Apple Script 的启动器中设置惯用的触发方式。

此外,用户还可以用 MTMR、BetterTouchTool 等客制化 Touch Bar 软件自定义 Touch Bar 按键,一键触发。以下是适用于 MTMR 的配置。用户将其复制粘贴在配置文件中,Touch Bar 上就形成一个静态按钮,用户用手按一下就能触发 Cactus 了。

{
    "type": "staticButton",
    "align": "right",
    "title": “Button",
    "bordered": true,
    "width": 44,
    "action": "appleScript",
    "actionAppleScript": {
      "filePath": “[YOUR PATH TO Show Cactus.applescript]",
    },
}

红色方框内就是据上面代码编译得出的按钮,按一下即可触发

最后

Cactus 的图标是一颗手型的仙人掌,手型呼应光标的形状,选择仙人掌则是因为仙人掌小巧可爱,却浑身是刺,叫人可欲不可及。

Cactus 的图标设计

Cactus 的原理真的是非常简单,简单到可谓是“笨办法”,没有难以理解的代码,也没有上手难度。如果正在阅读的你有兴趣的话,欢迎访问我的 GitHub 项目 地址,阅读更详细的指南。若 Cactus 帮助了你的日常工作的话,希望您不吝赐一颗星星。如果你想看到更多记录与想法,也欢迎订阅我的微信公众号「夜行人的笔记」。


Github 项目介绍

Cactus 是一个 macOS 上的小软件,用来获取链接中的文字。
项目地址:https://github.com/Ryan-the-hito/Cactus

解决问题

复制链接里面的文字实在是太麻烦了,很多方法已经失效:

  1. 使用一些浏览器扩展,但是有些都失效了,少数几个还能用……更别提许多浏览器扩展只对应特定框架的浏览器;
  2. 按住 Alt 键,或者 Option 键(mac 上),虽然能选择,但选完了还是会打开链接、弹出新页面,而且 Safari 不支持此操作。
    所以我想,既然超链接的文本都有右键全选的功能,那么可不可以做一款跨越浏览器的、简单轻量的文本选取器?于是 Cactus 就诞生了。

功能亮点

选取链接中的部分文本:

Cactus 当然可以复制一个链接中的全部文本,但更关键的是,它可以获取这个链接中间的某些文字。当我们看到一个超链接文本的中部有我们需要的文字,但苦于无法获取它的时候——例如在搜索引擎的结果界面上——Cactus 就能快速地满足需求:用户可用光标在弹出的文本框内选中一部分文字,然后点击“Copy selected”按钮即可。

对部分文本进行实时修改:

既然 Cactus 能够复制全部文本,那么在文本框中对这部分文字加以修改如何呢?Cactus 也能胜任。有些时候,我们对我们刚刚获取到的文字需要进行快速简单的加工,例如增添一些语气词,或者将其填补完整、成为一句完整的话,这时,Cactus 就相当于是一个实时的剪贴板编辑器,用户可以随心所欲地编辑出想要的文字,然后点击“Copy all”按钮,那么刚刚修改过的文本就全部复制到剪贴板了。

界面一览

DEMO

https://github.com/Ryan-the-hito/Cactus/assets/95213517/a26ae65e-90ec-41d5-b352-e2bcf1d38156

环境要求

  • MacOS 11 及以上(测试环境为 MacOS 12.6.5)
  • M1、M2 芯片

下载安装

从 Release 里面下载压缩包,之后将解压好的 app 文件拖入程序文件夹中。

Cactus 将需要辅助权限以完整运行:

在弹出上述权限需求后,用户可打开设置界面,在辅助权限一项中选择 Cactus。

上述设置之后,用户可以点击 Cactus 在任务栏中的图标,点击“Settings”,设置延迟时间。延迟时间表示的是从用户点击“? Get text from links!”之后,直到将光标停留在待选链接上的时间。由于用户需要将光标从任务栏移动到浏览器内的指定位置,这还需要一段距离,因此设置了此延迟时间。该值默认为 0,单位为秒,可以根据需要设置,只可为整数。

使用说明

方法一:手动点击触发

用户先点击 Cactus 在任务栏中的图标,在下拉选单中点击“? Get text from links!”,然后在延迟时间之内将光标移动到链接上,此时光标将从箭头形状变为手套形状,这表示已在链接可选区域之上。

在延迟时间达至之后,Cactus 将运行程序,弹出窗口,显示该链接内的文本,用户可以选择部分,或是修改后选择全部。

方法二:启动器快捷键触发

用户可以使用 Alfred 或者 BetterTouchTool 等脚本工具来使上述过程自动化。上述可被归纳为两个动作,一是触发命令,二是移动鼠标。触发命令可由脚本自动完成,用户只需将鼠标先移动到链接之上,然后再触发脚本,即可更快速地获取链接文本。Release 中自带“Cactus Keyword to Script.alfredworkflow”和“Show Cactus.applescript”两个文件,其中前者是 Alfred 的指令文件,若用户电脑已有 Alfred 软件,即可安装此指令使用(可在 Alfred 内设置全局快捷键);后者是通用的 Applescript 脚本,用户需要在其习惯的启动器中设置此脚本的触发模式。

方法三:第三方 Touch Bar

在使用 MTMR、BetterTouchTool 等客制化 Touch Bar 软件时,用户可以自定义 Touch Bar 按键,以一键触发。以下是适用于 MTMR 的配置。

{
    "type": "staticButton",
    "align": "right",
    "title": “Button",
    "bordered": true,
    "width": 44,
    "action": "appleScript",
    "actionAppleScript": {
      "filePath": “[YOUR PATH TO Show Cactus.applescript]",
    },
}

注意事项

  1. Cactus 只能在多个浏览器和网页页面中使用,可能并不适用于其他软件,如聊天软件等;
  2. 如果不是超链接形态的文字,那么使用 Cactus 并不会十分见效,比如一些限制复制的文本,使用 Cactus 也无法见效;
  3. 最好配合 Alfred、BetterTouchTool 等启动器软件一并使用,通过快捷键或者 Applescript 脚本触发软件执行。除此之外,还可以使用 Touch Bar 来触发,可在 MTMR、BetterTouchTool 中设置。如果没有上述软件工具,可在设置的第一项中设置等待时间,以确定在触发后多久读取鼠标位置的文本信息。
  4. 如果遇见右键菜单弹出速度慢,以至于无法快速获取剪贴板内容,请适当调整设置中的参数,以达至较好的效果;
  5. 更新后需要重新在设置中为软件授予辅助权限。

【END】

版权归属: E家之长
本文链接: https://www.5iehome.cc/archives/cactus-a-macos-app-to-extract-texts-from-links.html
许可协议: 本文使用《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》协议授权
暂无评论

发送评论 编辑评论


上一篇
下一篇