经过一番混乱之后,我设法使它在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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)