如何以编程方式重命名 iTunes 库中的电影和电视节目文件,以实现 XBMC 兼容性?

StackOverflow https://stackoverflow.com/questions/397723

  •  29-08-2019
  •  | 
  •  

我在 iTunes 中有一系列电影和电视节目,我想将它们重命名为 XBMC 兼容命名约定 无需破坏 iTunes 中的链接。

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

如果我可以避免的话,我宁愿不使用applescript(生命太短),但是如果这样做更容易,我可能会考虑它。否则我最好用红宝石来做这件事。

有帮助吗?

解决方案

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

我不知道 MAC 上有什么可用的,但我相信 AppleScript 是访问可用内容的最佳本机方式。有一个项目叫 《眼曲》 它提供了一个 Cocoa 框架。有一个专门介绍 Applescript 的网站(“Doug 的 iTunes AppleScripts”)。这是一个网站,展示了如何 从 perl 访问 iTunes.

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

其他提示

不知道如果你在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++;
}

好运。

晚,但我需要完全相同的对Plex的在OS X

我的解决办法是写一个查询的iTunes的电视通过AppleScript的桥表示,从各轨道的位置属性获取文件路径,然后创建一个符号链接到原始文件,使用iTunes的元数据给链接一个Python脚本命名适于Plex的/ XBMC等

的优点是可以无痛创建多组链路具有不同的命名方案,例如愚人善事S01E10.m4v 的或愚人善事01x10白色谎言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()

我用identify2为Mac重命名我的节目 - 伟大工程

查核EpNamer在 http://www.epnamer.com/ 。它需要.NET,但正是你要寻找和XBMC正是我使用它了。

您也可以考虑使用媒体伴侣,因为你最有可能使用的XBMC的库功能,你可以读到这里:

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

这会让的.nfo和.tbn文件每部电影和电视节目,你有这将XBMC外出前互联网信息刮掉。

享受!

与所述的iTunes xml文件播放另一种方法是使用的plist 模块。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top