OSX:定义一个直接指向Python脚本的新URL处理程序

OSX:定义一个直接指向Python脚本的新URL处理程序,第1张

OSX:定义一个直接指向Python脚本的新URL处理程序

经过一番混乱之后,我设法使它在OSX下工作。

这就是我的做法:

在Applescript脚本编辑器中,编写以下脚本:

on open location this_URL    do shell script "/scripts/runLocalCommand.py '" & this_URL & "'"end open location

如果要确保从特定的外壳程序运行Python(就我而言,我通常使用tcsh,并且有一个.tcshrc文件定义了一些我想访问的环境变量),那么行可能想要成为:

do shell script "tcsh -c "/scripts/localCommand.py '" & this_URL & "'""

我想在python脚本中进行所有实际处理-
但是由于URL处理程序在OSX中的工作方式,他们必须调用应用程序捆绑包而不是脚本,因此在Applescript中执行此 *** 作似乎是最简单的方法做吧。

在脚本编辑器中,另存为“应用程序捆绑包”

查找已保存的应用程序捆绑包,然后打开目录。找到Info.plist文件,然后将其打开。添加以下内容:

<key>CFBundleIdentifier</key><string>com.mycompany.Applescript.LocalCommand</string><key>CFBundleURLTypes</key><array>  <dict>    <key>CFBundleURLName</key>    <string>LocalCommand</string>    <key>CFBundleURLSchemes</key>    <array>      <string>local</string>    </array>  </dict></array>

在最后两行之前,应该是:

</dict></plist>

其中可能需要更改三个字符串:

com.mycompany.Applescript.LocalCommandLocalCommandlocal

其中的第三个是处理程序ID,因此URL为local:// something

因此,然后将其传递给Python脚本。

这就是我为此得到的:

#!/usr/bin/env pythonimport sysimport urllibarg = sys.argv[1]handler, fullPath = arg.split(":", 1)path, fullArgs = fullPath.split("?", 1)action = path.strip("/")args = fullArgs.split("&")params = {}for arg in args:    key, value = map(urllib.unquote, arg.split("=", 1))    params[key] = value


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5666991.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存