【问题标题】:How to programmatically rename movie and TV show files in an iTunes library, for XBMC compatibility?如何以编程方式重命名 iTunes 库中的电影和电视节目文件,以实现 XBMC 兼容性?
【发布时间】:2010-09-28 16:53:15
【问题描述】:

我在 iTunes 中有一系列电影和电视节目,我想在不破坏 iTunes 中的链接的情况下将它们重命名为 XBMC compatible naming convention

所有必要的元数据(季号、节目名称、剧集号等)似乎都在 iTunes 管理的 XML 文件中,而剧集名称是当前文件名。因此,以编程方式重命名文件似乎相当简单,但我如何同时保持 iTunes 资料库正常呢?重写 XML 文件以指向新的文件名就足够了吗?

如果可以避免的话,我宁愿不使用 applescript(生命太短暂),但是如果这样做更容易,我可能会考虑它。否则,我最好在 ruby​​ 中执行此操作。

【问题讨论】:

    标签: ruby applescript itunes xbmc


    【解决方案1】:

    不确定您是否使用 Windows 机器,但老实说,如果您可以编写一点 Javascript,iTunes COM API 非常易于使用。

    下面是它的外观示例。 (这未经测试,因此仅用作参考。)

    var    ITTrackKindFile  = 1;
    var iTunesApp = WScript.CreateObject("iTunes.Application");
    var deletedTracks = 0;
    var mainLibrary = iTunesApp.LibraryPlaylist;
    var tracks = mainLibrary.Tracks;
    var numTracks = tracks.Count;
    var i;
    var    RenameTarget;
    
    while (i > 0)
    {
        var currTrack = tracks.Item(numTracks);
    
        // is this a file track?
        if (currTrack.Kind == ITTrackKindFile)
        {
                RenameTarget = "Stuff from other properties"
            currTrack.Name = RenameTarget; //
        }
        numTracks++;
    }
    

    祝你好运。

    【讨论】:

    • 谢谢 - 我的图书馆在 Mac 上,所以我不能使用这个方法
    【解决方案2】:

    在 Windows 上,Apple 提供了运行良好的iTunes COM for Windows SDK。它是使用 COM 接口创建的,因此它适用于几乎所有适用于 Windows 的语言。它提供了重命名曲目和播放列表的方法。我用它来做我的图书馆的各种事情。

    我不知道 MAC 上有什么可用的,但我相信 AppleScript 是访问可用内容的最佳本地方式。有一个名为"EyeTunes" 的项目提供了一个Cocoa 框架。有一个专门用于 Applescript 的网站 ("Doug's AppleScripts for iTunes")。这是一个展示如何access iTunes from perl的网站。

    如果您想同时重命名文件和 iTunes 名称,那么最好更改曲目名称,从库中删除文件,重命名文件,然后重新添加曲目。您需要保留上次播放、播放次数等信息。

    【讨论】:

      【解决方案3】:

      http://www.epnamer.com/ 上查看 EpNamer。它需要 .NET,但正是您正在寻找的,而 XBMC 也正是我使用它的目的。

      您也可以考虑使用 Media Companion,因为您最有可能使用 XBMC 的库功能,您可以在此处阅读:

      http://xbmc.org/forum/showthread.php?p=217769

      它会为您获得的每个电影和电视节目制作 .nfo 和 .tbn 文件,XBMC 会在上网获取信息之前对其进行抓取。

      享受吧!

      【讨论】:

        【解决方案4】:

        使用 iTunes xml 文件的另一种方法是使用 plist 模块。

        【讨论】:

          【解决方案5】:

          晚了,但我在 OS X 上需要完全相同的 Plex。

          我的解决方案是编写一个 Python 脚本,通过 AppleScript 桥向 iTunes 查询其电视节目,从每个轨道的位置属性获取文件路径,然后创建指向原始文件的符号链接,使用 iTunes 元数据为链接提供适用于 Plex/XBMC 等的名称。

          优点是您可以轻松地创建具有不同命名方案的多组链接,例如My Name Is Earl S01E10.m4vMy Name Is Earl 01x10 White Lie Christmas.m4v

          脚本的核心是(其中track是appscript桥提供的引用):

          def trackInfo(track):
          """returns tuple (filename, filepath, show)
          
          track is iTunes playlist track from appscript bridge,
          
          filename is of format "Showname 01x02 Episode Name.avi" where 
          01 is the season number, 02 the episode number and the extension
          will match that of filepath.
          
          filepath is the UNIX path to the original file.
          """
          try:
              path = track.location().path
          except CommandError:
              return None, None, None
          ext = os.path.splitext(path)[1]
          name = "%s %02dx%02d %s%s" % (track.show(), track.season_number(), 
                                          track.episode_number(), track.name(), ext)
          return name, path, track.show()
          

          【讨论】:

          • 不错的解决方案 - 符号链接的想法很棒。我可以看到使用它来为其他媒体播放器创建一个单独的目录结构,而无需复制所有内容。尽管 iTunes 有重命名文件的习惯,但将原始文件保存在其他地方并让 iTunes 文件成为该文件的符号链接可能更安全——但不确定 iTunes 是否会按预期处理这样的符号链接。
          • 只要您使用正确的符号链接而不是 OS X 别名,大多数应用程序的链接都没有问题。也就是说,我认为将符号链接提供给只读取文件的程序要安全得多。少会出错。 iTunes 重命名文件不是问题。我只是在后台定期运行脚本(或根据需要)。它首先修剪任何死链接,然后重建链接树。 iTunes 无论如何都会提供文件路径,所以如果它重命名了某些内容,它会告诉脚本。
          【解决方案6】:

          我使用 identify2 for mac 来重命名我的节目 - 效果很好!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-06-04
            • 1970-01-01
            • 2017-02-10
            • 2012-04-06
            • 1970-01-01
            • 2015-07-13
            • 1970-01-01
            • 2011-11-02
            相关资源
            最近更新 更多