2009-12-26 14 views
6

Hice una aplicación que analiza la biblioteca de iTunes para recuperar su contenido. Funciona bien en la mayoría de los casos, pero si un usuario movió su biblioteca a otro lugar que no sea la carpeta predeterminada de iTunes (ver: http://lifehacker.com/238296/ultranewb--how-to-move-your-itunes-library-to-an-external-drive), entonces necesito una forma de encontrar esta ruta.¿Cómo encuentro la carpeta de la biblioteca de iTunes en Mac y Windows?

En Mac, estaba buscando en ~/Library/Preferences/com.apple.iTunes.plist. Hay una configuración llamada "alis: 1: Ubicación de la biblioteca de iTunes" pero contiene varios parámetros, todos concatenados y convertidos a hexadecimales.

En Windows, encontré este archivo "C: \ Documents and Settings \\ Application Data \ Apple Computer \ iTunes \ iTunesPrefs.xml" que contiene una configuración "iTunes Library XML Location: 1" pero esta está codificada.

Cualquier ayuda sería muy apreciada. Gracias!

+0

Relacionados (específicos de Mac): http://stackoverflow.com/questions/3243951/how-i-locate-itunes-media-folder-location-using-com-itunes-plist – finnw

Respuesta

10

En Windows, la entrada en iTunes Library XML Location:1iTunesPrefs.xml es una cadena Unicode Base 64 encoded, por lo que necesita para descodificarlo antes de poder utilizarlo. En mi PC, se decodifica al C:\Documents and Settings\Emerick\My Documents\My Music\iTunes\iTunes Music Library.xml.

Debe ser relativamente fácil descifrar este valor utilizando el idioma de su elección; su plataforma incluso puede proporcionar bibliotecas de utilidad que hacen que esto sea trivial. En C#, por ejemplo, la función de decodificación sería algo como esto:

static public string DecodeBase64(string encodedData) 
{ 
    byte[] encodedBytes = System.Convert.FromBase64String(encodedData); 
    return System.Text.UnicodeEncoding.Unicode.GetString(encodedBytes); 
} 
+0

¡Gracias, lo intentaré! Vi el archivo .pref pero no estaba seguro de cómo estaba codificado. – Boris

3

No puedo ayudarte con las cosas de Windows, pero en la Mac lo que estás viendo en ese archivo de preferencias son los datos de manejo de alias de la vieja escuela. Eche un vistazo o simplemente use la clase BDAlias ​​de Chris Hanson para convertirla en una ruta.

http://github.com/rentzsch/bdalias

+0

Muchas gracias. Voy a darle una oportunidad. – Boris

0

Como los otros señalan "alis: 1: Lugar de la Biblioteca de iTunes" son datos de alias. Así es como encuentro la ruta desde los datos en OS X usando Python.

#!/usr/bin/env python 

import commands, plistlib 
from Carbon import File 
from os.path import expanduser 

PLIST_PATH = '~/Library/Preferences/com.apple.iTunes.plist' 
PLIST_KEY = 'alis:1:iTunes Library Location' 

def resolve_path_from_alias_data(alis): 

    fs_ref = File.Alias(rawdata=alis).FSResolveAlias(None)[0] 
    file_path = fs_ref.as_pathname() 
    return file_path 

plist_str = commands.getoutput('/usr/bin/plutil -convert xml1 -o - "' + expanduser(PLIST_PATH) + '"') 

plist_data = plistlib.readPlistFromString(plist_str) 

alis_data = plist_data[ PLIST_KEY ].data 

file_path = resolve_path_from_alias_data(alis_data) 

print repr(file_path) 

Desafortunadamente, iTunes ya no se utiliza "alis: 1: Lugar de la Biblioteca de iTunes" por lo que este ya no funciona. Ahora iTunes 11 usa una entrada llamada "RDoc: 132: Documentos" que parece ser completamente diferente. He publicado a similar question with the appropriate iTunes 11 details.

En realidad, mi respuesta funciona perfectamente a partir de OS X 10.9.1. No estoy seguro de si se detuvo debido a algún error que hice, o si Apple revertió algo en silencio. De cualquier manera, está trabajando nuevamente en mi Mac.

Cuestiones relacionadas