【问题标题】:Add movie to iTunes using Scripting Bridge使用 Scripting Bridge 将电影添加到 iTunes
【发布时间】:2011-02-18 06:56:17
【问题描述】:

我想使用 Scripting Bridge 将电影添加到 iTunes。最好让我在“音乐视频”和“电影”之间进行选择。我知道 Objective-C 和 AppleScript,所以我认为它不会那么难,但我想不通。我知道我将如何使用 NSAppleScript,但我的目标是 10.5 或更高版本,并阅读了 Scripting Bridge 废弃了 NSAppleScript。对吗?

我得到的只是

iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier: @"com.apple.iTunes"];

如您所见,一点也不多。

【问题讨论】:

    标签: objective-c itunes scripting-bridge


    【解决方案1】:

    您应该使用“脚本定义处理器”(sdp) 程序从 iTunes 的脚本定义 (.sdef) 文件(您可以使用sdef 程序获得)生成头文件:

    sdef /Applications/iTunes.app | sdp -fh --basename "iTunes"
    

    这将为您提供一个名为 iTunes.h 的文件。然后将该标题包含到您的项目中并通读它以查看 iTunes 脚本桥接口提供的内容。

    如果您似乎无法使用脚本桥执行此操作(这是可能的 - 并非所有可以通过应用程序的 AppleScript 界面完成的操作也可以通过脚本桥完成),请继续并编写一个 AppleScript 来代替它,然后在您的程序中使用 NSAppleScript 执行它。

    【讨论】:

    • 我已经做了 sdp 的事情。而且我认为我需要的方法是 add:to: 。但是没有关于它的文档。
    • 如果无法通过脚本桥接完成,您可以尝试appscript 或只是一个普通的旧 AppleScript。
    • 这绝对可以通过 Scripting Bridge 实现:我用 Python 做过很多次类似的事情。
    • 方法 [iTunesApp add:to:] 有效 - 只需使用 NSURL 对象数组作为第一个参数,nil 作为第二个参数。
    【解决方案2】:

    第一步,生成iTunes.h头文件:

    sdef /Applications/iTunes.app | sdp -fh --basename "iTunes"
    

    第 2 步。添加媒体文件的代码如下所示:

    NSString* sourceMediaFile = ...;
    iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
    iTunesTrack * track = [iTunes add:[NSArray arrayWithObject:[NSURL fileURLWithPath:sourceMediaFile]] to:nil];
    NSLog(@"Added %@ to track: %@",sourceMediaFile,track);
    

    【讨论】:

      【解决方案3】:

      对于第二个参数,它需要一个播放列表对象(或前面提到的 nil)。一旦您通过某种方式获取了 iTunesPlaylist* 对象的实例(根据您的需要有几种方式),您可以将其作为第二个参数传递。

      【讨论】:

        猜你喜欢
        • 2012-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-05
        • 2012-10-09
        • 1970-01-01
        • 2012-06-07
        • 1970-01-01
        相关资源
        最近更新 更多