Как программно переименовать файлы фильмов и телешоу в библиотеке iTunes для совместимости с XBMC? - PullRequest
1 голос
/ 29 декабря 2008

У меня есть коллекция фильмов и телепередач в iTunes, и я хотел бы переименовать их в XBMC-совместимое соглашение об именах без разрыва ссылок в iTunes.

Кажется, что все необходимые метаданные (номер сезона, название шоу, номер эпизода и т. Д.) Находятся в XML-файле, которым управляет iTunes, а имя эпизода является текущим именем файла. Таким образом, программное переименование файлов кажется довольно простым, но как мне сохранить библиотеку iTunes одновременно? Достаточно ли переписать файл XML, чтобы он указывал на новые имена файлов?

Я бы предпочел не связываться с яблочным сценарием, если бы мог избежать этого (жизнь слишком коротка), однако, если мне проще это сделать, я могу посмотреть на это. В противном случае я бы хотел сделать это в ruby.

Ответы [ 6 ]

2 голосов
/ 25 июля 2009

Поздно, но мне нужно было то же самое для Plex на OS X.

Мое решение состояло в том, чтобы написать скрипт Python, который запрашивает iTunes о его телешоу через мост AppleScript, получает путь к файлу из атрибута местоположения каждой дорожки, а затем создает символическую ссылку на исходный файл, используя метаданные iTunes, чтобы дать ссылку название подходит для Plex / XBMC и т. д.

Преимущество заключается в том, что вы можете безболезненно создавать несколько наборов ссылок с разными схемами именования, например, Меня зовут Эрл S01E10.m4v или Меня зовут Эрл 01x10 White Lie Christmas.m4v

Ядро сценария (где track - ссылка, предоставленная мостом приложения):

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()
2 голосов
/ 29 декабря 2008

В Windows Apple предоставляет iTunes COM для Windows SDK , который работает довольно хорошо. Он создан с использованием интерфейса COM, поэтому он работает практически со всеми языками, доступными для Windows. Он предоставляет методы для переименования треков и списков воспроизведения. Я использовал это, чтобы делать разные вещи с моей библиотекой.

Я не знаю, что доступно на MAC, но я считаю, что AppleScript - лучший нативный способ доступа к тому, что доступно. Существует проект под названием "EyeTunes" , который предоставляет инфраструктуру Какао. Есть сайт, посвященный Applescript ( «AppleScripts Дуга для iTunes» ). Вот сайт, показывающий, как получить доступ к iTunes из perl .

Если вы хотите переименовать как файл, так и имя iTunes, то, вероятно, лучше изменить имя дорожки, удалить файл из библиотеки, переименовать файл и затем повторно добавить дорожку. Вам необходимо сохранить информацию, такую ​​как последний сыгранный, количество игр и т. Д.

2 голосов
/ 29 декабря 2008

Не уверен, что у вас 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++;
}

Удачи.

1 голос
/ 06 апреля 2011

Я использую identif2 для Mac, чтобы переименовать мои шоу - прекрасно работает!

0 голосов
/ 09 февраля 2009

Еще один способ поиграть с XML-файлом iTunes - использовать модуль plist .

0 голосов
/ 09 февраля 2009

Проверьте EpNamer на http://www.epnamer.com/. Требуется .NET, но это именно то, что вы ищете, и XBMC - именно то, для чего я тоже его использую.

Вы также можете изучить использование Media Companion, поскольку вы, скорее всего, используете библиотечные функции XBMC, о которых вы можете прочитать здесь:

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

Он создаст файлы .nfo и .tbn для каждого фильма и телепередачи, которые у вас есть, которые XBMC будет очищать перед выходом в Интернет для получения информации.

Наслаждайтесь!

...