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

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

  •  29-08-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

Не уверен, что вы используете Windows box, но, честно говоря, если вы можете написать хотя бы немного 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.

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

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

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

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 - это именно то, для чего я его тоже использую.

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

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

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

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

Другой способ воспроизвести XML-файл iTunes - это использовать плист модуль.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top