从富文本剪贴板内容或 Mac 上的文本选择中提取超链接

Extract Hyperlinks From Rich Text Clipboard Contents Or Text Selection On The Mac

我希望能够获得我在 Mac 上 select 的任何格式文本中的所有超链接 URL 的列表(格式文本,例如网页或文字处理器文件).

我最好使用 Applescript 或 Automator 从文本中提取超链接列表(这样我就可以使用 Applescript 对这些 URL 执行进一步处理)。

请注意,我说的是从格式化文本中提取的超链接,而不仅仅是从包含纯文本 URL 的文本中提取 URL。

从格式化文本中提取超链接似乎应该是一项简单的编程任务,但我一直在努力寻找一种在 Applescript 或 Automator 中执行此操作的方法。

Automator 可以设置为接受来自文本 selection 的富文本输入,或者可以从剪贴板输入富文本,但我找不到任何方法在 Automator 中以字符串形式访问此富文本或Applescript,这样我就可以从富文本数据的字符串中提取超链接的 URL。

一旦我以字符串形式访问富文本数据,提取 URL 就没有问题了。

非常感谢收到有关我如何解决此问题的任何建议。

Applescript 本身不会解压缩嵌入的文本,因此您必须以某种方式使用帮助应用程序。您可以使用 do shell script 'textutil' 来取消嵌入链接:

perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' | 
textutil -stdin -stdout -convert html -format rtf

然后,您必须提取网址。我建议使用 Automator 操作 'Extract Data' 来执行此操作。如果将整个过程设置为 Automator Workflow,则可以从 Applescript 调用它。或者,如果将其另存为服务,则可以 运行 服务中的所有内容。 这是该方法的屏幕截图,应该显示您需要的内容:

如果您有任何问题,请告诉我。您可以看到此技术的变体 here.

更新: 如果您想将其创建到服务中,则很难将 Automator 的内置输入强制转换为 RTF。一种有效的方法是忽略输入并执行

keystroke "c" using command down

将所选文本复制到剪贴板,然后使用那里的工作流。参见示例: