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

Hip*_*p89 5 macos applescript rtf automator hyperlink

我希望能够获得我在Mac上选择的任何带格式文本(如网页或文字处理器文档等带格式文本)中所有超链接URL的列表。

最好是我想使用Applescript或Automator从文本中提取此超链接列表(以便随后可以使用Applescript对这些URL进行进一步处理)。

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

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

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

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

我们将很高兴收到关于如何解决此问题的任何建议。

jwe*_*aks 5

Applescript本身不会解包嵌入的文本,因此您必须以一种或另一种方式使用帮助程序。您可以使用do shell脚本'textutil'取消链​​接的嵌入:

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

然后,您必须提取URL。我建议使用Automator操作“提取数据”来执行此操作。如果将整个事情设置为Automator Workflow,则可以从Applescript调用它。或者,如果将其另存为服务,则可以从服务中运行整个过程。这是该方法的屏幕截图,应显示您的需求: 工作流程示例

如果您有任何问题,请告诉我。您可以在此处看到此技术的各种变化。

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

keystroke "c" using command down
Run Code Online (Sandbox Code Playgroud)

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