如何从ruby设置iTunes曲目位置

时间:2013-03-22 09:31:51

标签: ruby itunes

我想从ruby更新itunes中的曲目路径,但无法使其正常工作。出于某种原因,我对track.setLocation()的调用什么也没做。这是我正在使用的脚本:

require 'osx/cocoa'
include OSX
OSX.require_framework 'ScriptingBridge'

def getSourceLibrary(iTunes)
    iTunes.sources.each do |source|
        if (source.kind == 1800169826) # TV Kind
            return source
        end
    end
    return nil
end

iTunes = SBApplication.applicationWithBundleIdentifier:'com.apple.iTunes'
library=getSourceLibrary(iTunes)
libraryPlaylists=library.libraryPlaylists

libraryPlaylists[0].fileTracks.each do | track |
    if (track.videoKind==1800823892)
        loc = track.location.to_s
        puts "Before: #{loc}"
        loc = loc.gsub(/\/mounts\/TVShows/,'/mounts/TV')
        loc = loc.gsub(/\/mounts\/incoming/,'/mounts/TV')
        track.setLocation(loc)
        puts "After: #{track.location.to_s}"
    end
end

脚本迭代iTunes库并尝试更改路径。然而之前和之后是一样的!即使正则表达式搜索&替换工作。对此有任何帮助将非常感激。

1 个答案:

答案 0 :(得分:0)

我想出了一个问题的解决方案。为了设置位置,您必须传递NSURL类型的对象。因此,如果我使用以下内容修改问题中的代码,则一切正常:

track.setLocation(NSURL::URLWithString(loc))