Como renomear programaticamente arquivos de filmes e programas de TV em uma biblioteca do iTunes, para compatibilidade XBMC?

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

  •  29-08-2019
  •  | 
  •  

Pergunta

Eu tenho uma coleção de filmes e programas de TV no iTunes, e eu gostaria de renomeá-los para um XBMC compatível convenção de nomeação sem quebrar as ligações no iTunes.

Todos os metadados necessários (número temporada, mostrar nome, número do episódio, etc) parece estar em um arquivo XML que iTunes administra, eo nome do episódio é o nome do arquivo atual. Então, renomeando programaticamente os arquivos parece bastante simples, mas como faço para manter as iTunes retas biblioteca ao mesmo tempo? É o suficiente para reescrever o arquivo XML para apontar para os novos nomes de arquivo?

Eu prefiro não entrar em applescript se eu puder evitá-lo (a vida é muito curta), no entanto, se é mais fácil fazê-lo dessa maneira que eu possa olhar para ele. Caso contrário eu idealmente gostaria de fazer isso em Ruby.

Foi útil?

Solução

No Windows Apple oferece o iTunes COM for Windows SDK que funciona bastante bem. Ele é criado usando uma interface COM para que ele funciona com quase todas as línguas disponíveis para o Windows. Ele fornece métodos para renomear faixas e playlists. Eu usei isso para fazer todos os tipos de coisas com a minha biblioteca.

Eu não sei o que está disponível em um MAC, mas acredito que AppleScript é a melhor maneira nativa para o acesso que está disponível. Há um projeto chamado "EyeTunes" que fornece um quadro de cacau. Existe um site dedicado a Applescript ( "AppleScripts de Doug para iTunes" ). Aqui está um site mostrando como iTunes acesso de perl .

Se você deseja renomear o arquivo e os iTunes nomear então provavelmente é melhor mudar o nome da faixa, remova o arquivo da biblioteca, renomeie o arquivo, e então re-adicionar a faixa. Você precisaria para preservar informações como jogou pela última vez, playcount, etc.

Outras dicas

Não tenho certeza se você estiver em uma caixa de Windows, mas, honestamente, se você pode escrever até mesmo um pouco Javascript o iTunes cOM API é muito fácil de usar.

Abaixo está uma amostra do que será semelhante. (Isto não é testado, portanto, apenas usá-lo como referência.)

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++;
}

Good Luck.

tarde, mas eu precisava exatamente o mesmo para Plex no OS X.

Minha solução foi a escrever um script Python que as consultas iTunes para seus programas de TV através da ponte AppleScript, obtém o caminho do arquivo do atributo a localização de cada pista e, em seguida, cria um link simbólico para o arquivo original, usando o iTunes metadados para dar o link de um nome adequado para Plex / XBMC etc.

A vantagem é que você pode indolor criar vários conjuntos de ligações com diferentes esquemas de nomeação, por exemplo, My Name Is Earl S01E10.m4v ou Earl 01x10 My Name Is White Lie Christmas.m4v

O núcleo do roteiro é (onde track é a referência fornecida pela ponte 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()

Eu uso identify2 para Mac para mudar o nome de meus shows - funciona muito bem

Confira EpNamer em http://www.epnamer.com/ . Ele requer NET, mas é exatamente o que você está procurando e XBMC é exatamente o que eu usá-lo por muito.

Você também pode olhar em usar Companion mídia desde que você está provavelmente usando a funcionalidade da biblioteca do XBMC, que você pode ler sobre aqui:

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

Ela vai fazer .nfo e .tbn arquivos para cada filme e programa de TV que você tem que XBMC vai raspar antes de sair para a internet para obter informações.

Aproveite!

Outra maneira de jogar com o arquivo iTunes xml é usar a plist módulo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top