问题标签 [scripting-bridge]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cocoa - 使用 Scripting Bridge 和 NSPredicate 的一些标准挂钩 CPU
我正在尝试通过 Scripting Bridge 从 iTunes 中获取曲目列表。我正在使用NSPredicate
,因为这是推荐的方式。这在某些情况下效果很好,而在其他情况下却非常缓慢。例如,这将很快执行:
(libraryPlaylist
是在别处创建的 iTunesLibraryPlaylist 对象。)
但如果我添加其中一个kind
或videoKind
混合,iTunes 会在一分钟或更长时间内达到 100% CPU。
但这最终会奏效。真正的失败是albumArtist
。如果我尝试
iTunes 将达到 100% CPU 并坐在那里不知道多久。(我在 3 或 4 分钟后放弃了。)我是否遗漏了什么或者这是 iTunes 中的错误?
附加信息
我的代码采用生成的曲目并调用另一种方法将它们添加到播放列表(也使用脚本桥)。我注意到,当尝试按种类过滤时,曲目会慢慢地一一出现在列表中,而 iTunes 会敲击 CPU。这只能意味着它filteredArrayUsingPredicate
已经返回了它的结果,那么iTunes如此努力的工作是什么?
python - 使用 ScriptingBridge 和 Python,我可以从当前播放的曲目中获得哪些属性?
我以这个例子为基础,很想检索有关当前曲目的更多信息。例如,轨道的当前时间是多少(“播放头”在哪里)以及总轨道长度是多少。
macruby - 是否可以减少使用 ScriptingBridge 的 MacRuby 脚本的启动时间?
我想使用 MacRuby 和 ScriptingBridge 而不是 AppleScript 来控制支持 AppleScript 的 Mac 应用程序。我曾经使用 appscript 来做到这一点,它实际上已被弃用,因此移动了 MacRuby 和脚本桥。
我唯一的问题是 ScriptingBridge 框架需要大约一秒钟的时间来加载,即使在具有快速 SSD 的快速机器上也是如此。例如,这个简单的脚本运行大约需要 0.9 秒,几乎所有时间都用于加载 ScriptingBridge 框架:
等效的 osascript 运行大约需要 70 毫秒,而 py-appscript 用于给出相似的时间:
是否有任何直接的方法可以将 MacRuby/ScriptingBridge 脚本捆绑/编译/收缩成启动更快的东西?
我尝试使用 macrubyc 将脚本捆绑到一个独立的可执行文件中,但生成的可执行文件在正常运行时运行速度并不比脚本快得多,仍然需要大约一秒钟的时间才能运行。
(我的预感是否定的,因为像 macrubyc 这样的编译步骤无法轻易看出脚本将访问框架的哪些部分,因此很难优化。)
python - 带有 ScriptingBridge 的 wxPython 在退出时导致 Seg Fault
这是一个非常奇怪的情况,我似乎无法弄清楚。我正在 OSX Lion(wxpython 版本 2、9、3、1)上使用 wxPython 编写应用程序。
每当我从 ScriptingBridge 导入并执行一些简单的操作(例如创建一个框架然后关闭它)时,它不会完全关闭并在关闭时出现段错误。试试这个代码:
运行此代码后,只需将其关闭即可。它应该段错误。现在,只需注释掉 ScriptingBridge 导入并再次运行并关闭它。没有 Seg 故障。
更奇怪的是,如果您只是创建一个导入 ScriptingBridge 的脚本,但不导入 wxPython,那么一旦脚本退出,它就不会出现段错误……看来这是两者的结合。
有没有人看到这个并且他们找到了解决方法?如果可能的话,我希望我的应用程序干净地退出。
objective-c - 无法从草稿发送附件 (Mail.app)
我正在尝试发送使用 Mail.app 创建的草稿。
由于草稿没有发送方法,我必须从草稿中获取所有内容,并用它创建一个新的电子邮件。那应该没问题,但是...附件没有通过。
我正在使用这个:
传出是我正在创建的消息,而消息是我正在阅读的草稿。
我尝试循环浏览邮件的附件并手动添加它们,但我总是得到这个:
这就是我循环它们的方式:
值得注意的是,无论如何,文件路径 NSLog 始终显示为 (null)。
将不胜感激这里的任何帮助。
macruby - MacRuby ScriptingBridge 加载速度
有没有更快的方法从 MacRuby 加载脚本桥应用程序?
当我为 Adobe InDesign 制作 SBApplication 对象时,加载时间超过 10 秒。这是我一直在使用的代码:
当然,生成的头文件对于 InDesign 来说是巨大的……有没有办法强制使用支持文件?
ruby - 将 MacTypes::FileURL 从 appscript-ruby 重写为 MacRuby ScriptingBridge
我有一个脚本,可以自动将给定的 PDF 附加到BibDesk中的出版物。使用 appscript-rb,以下代码片段完美运行:
尝试为 MacRuby 重写它,我想出了以下内容:
但是,这会使 MacRuby 崩溃(我假设也是因为它是错误的)。我只是得到:
如何将 appscript-ruby 重写为正确的 MacRuby ScriptingBridge 格式?
objective-c - 使用 Applescript 在桌面上获取选定/单击的项目
我需要获取桌面上当前选定的项目或右键单击的桌面项目。根据此项目的路径,我将不得不执行一些操作。这可以使用applescript来完成吗???
我目前正在使用这里给出的逻辑(使用脚本桥)
但这似乎从任何查找器窗口中获取选择,而不仅仅是桌面视图。任何人都可以请提供任何替代方案吗?
objective-c - 通过 ScriptingBridge 在 iTunes 中播放特定标题
我正在尝试编写一个通过 ScriptingBridge 与 iTunes 交互的应用程序。到目前为止我工作得很好,但这种方法的选择似乎非常有限。
我想播放给定名称的歌曲,但看起来没有办法做到这一点。我在 iTunes.h 中没有找到类似的东西……</p>
在 AppleScript 中只有三行代码:
然后 iTunes 开始播放经典的披头士歌曲。有没有我可以用 ScriptingBridge 做到这一点,还是我必须从我的应用程序运行这个 AppleScript?
macos - 如何在 MacRuby 中将 NSPopUpButton 与 iTunesPlaylist 对象绑定?
我正在尝试使用一组 iTunesPlaylist 对象填充 NSPopUpButton。我将 NSArrayController 绑定到 NSPopUpButton
所有播放列表都将出现在 NSPopUpButton 中,但它们的名称都带有
我想要做的是将 ITunesPlaylist.name 绑定到 NSPopUpButton 的内容值,但我似乎无法让它工作。
似乎也很少有关于 Scripting Bridge API 调用返回的对象的类定义的文档(例如 ITunesPlaylist、ITunesTrack)。
有人可以给我一些指示吗?最终,我想制作一个下拉菜单,以分层形式显示用户的 iTunes 播放列表。