2009-12-26 3 views
6

iTunes 라이브러리를 구문 분석하여 해당 컨텐츠를 검색하는 응용 프로그램을 만들었습니다. 대부분의 경우 잘 작동하지만 사용자가 기본 iTunes 폴더 (http://lifehacker.com/238296/ultranewb--how-to-move-your-itunes-library-to-an-external-drive 참조)가 아닌 다른 곳으로 라이브러리를 옮긴 경우이 경로를 찾는 방법이 필요합니다.Mac 및 Windows에서 iTunes 보관함 폴더를 찾으려면 어떻게합니까?

Mac에서는 ~/Library/Preferences/com.apple.iTunes.plist를 찾고있었습니다. "alis : 1 : iTunes Library Location"이라는 설정이 있지만 여러 매개 변수가 모두 연결되어 있고 16 진수로 변환되어 있습니다.

Windows에서 "iTunes Library XML Location : 1"설정이 포함되어 있지만 "C : \ Documents and Settings \ Application Data \ Apple Computer \ iTunes \ iTunesPrefs.xml"파일이 발견되었습니다.

도움을 주시면 감사하겠습니다. 감사합니다.

+0

관련 (Mac 특정) : http://stackoverflow.com/questions/3243951/how-i-locate-itunes-media-folder-location-using-com-itunes-plist – finnw

답변

10

iTunesPrefs.xmliTunes Library XML Location:1 항목은 Base 64 encoded 유니 코드 문자열입니다. 내 PC에서는 C:\Documents and Settings\Emerick\My Documents\My Music\iTunes\iTunes Music Library.xml으로 디코딩됩니다.

선택한 언어를 사용하여이 값을 디코딩하는 것이 상대적으로 쉽습니다. 여러분의 플랫폼은 이런 일을 쉽게 만들어주는 유틸리티 라이브러리를 제공 할 수도 있습니다. 다른 사람은 지적으로

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

감사합니다. 시도해 보겠습니다. .pref 파일을 보았지만 인코딩 방법이 확실하지 않았습니다. – Boris

3

Windows의 경우에는 도움이되지 않지만, Mac에서는 이전 설정 파일에서 볼 수있는 것이 구식 별칭 처리 데이터입니다. 크리스 핸슨 (Chris Hanson)의 BDAlias ​​클래스를 사용하여 경로로 변환하십시오. 당신은 당신이 그것을 사용하기 전에 그것을 해독해야하므로

Windows에서

http://github.com/rentzsch/bdalias

+0

고맙습니다. 나는 그것을 시도 할 것이다. – Boris

0

: C#에서, 예를 들어, 디코딩 기능은 다음과 같이 보일 것 "ALIS : 1 : iTunes 보관함 위치"별칭 데이터입니다. 다음은 OS X에서 파이썬을 사용하여 데이터의 경로를 찾는 방법입니다. "ALIS : 1 : iTunes 보관함 위치"

#!/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) 

불행하게도, iTunes는 더 이상 사용하지 지금이 더 이상 작동합니다. 이제 iTunes 11은 인 것처럼 보이는 RDoc : 132 : Documents라는 항목을 사용합니다. 완전히입니다. a similar question with the appropriate iTunes 11 details을 게시했습니다.

실제로 내 대답은 OS X 10.9.1에서 제대로 작동합니다. 내가 만든 오류로 애플이 멈췄는지, 아니면 애플이 조용히 뭔가를 되돌려 놓았는지 확실치 않다. 어쨌든, 그것은 내 Mac에서 다시 작동합니다.

관련 문제