2008-12-29 9 views
1

J'ai une collection de films et d'émissions de télévision dans iTunes, et je voudrais les renommer en XBMC compatible naming convention sans casser les liens dans iTunes. Toutes les métadonnées nécessaires (numéro de saison, nom de l'émission, numéro de l'épisode, etc.) semblent être dans un fichier XML géré par iTunes, et le nom de l'épisode est le nom du fichier actuel. Donc renommer les fichiers par programme semble assez simple, mais comment conserver la bibliothèque iTunes directement en même temps? Est-il suffisant de réécrire le fichier XML pour pointer vers les nouveaux noms de fichiers? Je préférerais ne pas entrer dans l'applescript si je peux l'éviter (la vie est trop courte), mais s'il est plus facile de le faire de cette façon, je peux le regarder. Sinon, j'aimerais idéalement faire ça en rubis.Comment renommer par programme les fichiers de films et d'émissions télévisées dans une bibliothèque iTunes, pour une compatibilité XBMC?

Répondre

2

Sous Windows Apple fournit le iTunes COM for Windows SDK qui fonctionne plutôt bien. Il est créé à l'aide d'une interface COM de sorte qu'il fonctionne avec presque toutes les langues disponibles pour Windows. Il fournit des méthodes pour renommer les pistes et les listes de lecture. J'ai utilisé ceci pour faire toutes sortes de choses avec ma bibliothèque.

Je ne sais pas ce qui est disponible sur un MAC, mais je crois que AppleScript est le meilleur moyen d'accéder à ce qui est disponible. Il existe un projet appelé "EyeTunes" qui fournit un framework Cocoa. Il y a un site consacré à Applescript ("Doug's AppleScripts for iTunes"). Voici un site montrant comment access iTunes from perl.

Si vous souhaitez renommer le fichier et le nom iTunes, il est probablement préférable de changer le nom de la piste, de supprimer le fichier de la bibliothèque, de renommer le fichier, puis d'ajouter à nouveau la piste. Vous devez conserver des informations telles que la dernière lecture, le compte de jeu, etc.

+0

merci, je vais jeter un oeil à ces liens – frankodwyer

2

Vous ne savez pas si vous êtes sur un boîtier Windows mais honnêtement, si vous pouvez écrire même un peu de Javascript, le iTunes COM API est très facile à utiliser.

Voici un exemple de ce à quoi cela va ressembler. (Ceci n'est PAS testé, donc utilisez-le comme référence.)

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

Bonne chance.

+0

merci - ma bibliothèque est sur un mac si donc je ne peux pas utiliser cette méthode – frankodwyer

0

Consultez EpNamer au http://www.epnamer.com/. Il nécessite .NET mais est exactement ce que vous cherchez et XBMC est exactement ce que je l'utilise aussi.

Vous pouvez également regarder dans Companion des médias puisque vous êtes le plus susceptible d'utiliser la fonctionnalité de bibliothèque de XBMC, que vous pouvez lire ici:

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

Il va faire .nfo et .tbn fichiers pour chaque film et émission de télévision que vous avez XBMC va racler avant de sortir sur Internet pour plus d'informations.

Profitez-en!

0

Une autre façon de jouer avec le fichier iTunes xml est d'utiliser le module plist.

2

fin mais je avais besoin exactement la même chose pour Plex sur OS X.

Ma solution a été d'écrire un script Python qui interroge iTunes pour sa TV montre via le pont AppleScript, obtient le chemin du fichier de l'attribut de l'emplacement de chaque piste puis crée un lien symbolique vers le fichier d'origine, en utilisant les métadonnées iTunes pour donner au lien un nom approprié pour Plex/XBMC, etc.

L'avantage est que vous pouvez créer sans difficulté plusieurs ensembles de liens avec différents schémas de dénomination, par ex. My Name Is Earl S01E10.m4v ou My Name Is Earl 01x10 White Lie Christmas.m4v

Le noyau du script est (où track est la référence fournie par le pont 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() 
+0

belle solution - l'idée symlink est grande. Je pourrais voir en utilisant cela pour créer une structure de répertoires séparée aux côtés d'iTunes pour les autres lecteurs multimédias, sans avoir à tout dupliquer. Bien qu'inunes ait l'habitude de renommer les fichiers, il peut être plus sûr de conserver l'original ailleurs et d'avoir un lien symbolique vers le fichier itunes - pas sûr que iTunes gère les liens symboliques comme ça. – frankodwyer

+0

Tant que vous utilisez des liens symboliques appropriés et non des alias OS X, la plupart des applications n'ont aucun problème avec les liens. Cela dit, je pense qu'il est beaucoup plus sûr de nourrir les liens symboliques vers le programme qui ne lit que les fichiers. Moins peut aller mal. iTunes renommer les fichiers n'est pas un problème. Je cours juste le script régulièrement en arrière-plan (ou au besoin). Il élague d'abord les liens morts, puis reconstruit l'arborescence des liens. iTunes fournit quand même le chemin du fichier, donc s'il a renommé quelque chose, il dira le script. – wbg

1

J'utilise identify2 pour mac pour renommer mes shows - ça marche super!

Questions connexes