我想从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库并尝试更改路径。然而之前和之后是一样的!即使正则表达式搜索&替换工作。对此有任何帮助将非常感激。
答案 0 :(得分:0)
我想出了一个问题的解决方案。为了设置位置,您必须传递NSURL类型的对象。因此,如果我使用以下内容修改问题中的代码,则一切正常:
track.setLocation(NSURL::URLWithString(loc))