2010-05-09 7 views
3

iTunes에서 트랙의 파일 시스템 경로를 프로그래밍 방식으로 수정하여 파일 시스템의 다른 위치에 저장되는 일부 트랙 위치에 문자열 변환을 적용 할 수 있습니다.iTunes 트랙 위치를 프로그래밍 방식으로 업데이트

나는 관련 트랙의 위치 속성을 업데이트하는 애플 스크립트를 사용하여 시도했다 그러나 나는 다른 여러 본 적이

"에 ... mytrack의 위치를 ​​설정"호출 할 때 나는 파일 끝 오류 전체 트랙 DB를 내보내고 XML로 수정 한 다음 다시 가져 오는 작업과 관련된 온라인 해킹이 있지만 너무 많은 메타 데이터 (예 : 재생 목록)가 손실되는 것 같습니다.

답변

3

코드를 더 많이 볼 수 있습니다. 특히 흥미로운 것은 사용하는 가치와 그것이 파생되는 방식입니다. 정확한 오류 메시지를 보는 것도 유용 할 것입니다 (AppleScript 오류 대화 상자 시트에서 텍스트를 복사 할 수 있어야합니다. 스크립트   편집기/& # xfeff; AppleScript   편집기).

file track 클래스의 사전 항목은 해당 location 속성이 쓰기 가능 alias 값임을 나타냅니다. 당신이 아마도 실행중인 문제는 값에 대한 별칭을 사용하고 있지 않다는 것입니다.

다음 코드는 하나 choose file에서 대화 형 프롬프트를 사용하여 트랙의 위치를 ​​변경하는 방법을 보여줍니다 (반환 alias) :

set m to path to music folder 
tell application "iTunes" 
    set trk to first item of selection 
    set l to location of trk 
    if class of l is alias then 
     set m to l 
    end if 
    set {d, a, n} to {database ID, artist, name} of trk 
    choose file with prompt "Choose the file to use for " & d & ": " & a & "—" & n default location m 
    set location of trk to result 
end tell 

choose file 방법은 당신이 어떤 일을하고 있기 때문에 당신이 비록 원하는 것이 아니다 자동화 된 문자열 기반 경로 이름 번역.

AppleScript에서 경로 이름을 사용하는 경우 사용할 수있는 POSIX와 HFS의 두 가지 종류가 있습니다. POSIX 경로 이름은 구분 된 구성 요소를 슬래시 (모든 구성 요소의 콜론 허용)합니다. HFS 경로 이름에는 콜론으로 구분 된 구성 요소가 있고 (모든 구성 요소 내부에는 슬래시가 허용됨) 일반적으로 볼륨 이름 구성 요소로 시작합니다.

사용, 다음의 식 AppleScript로 alias에 변수 str에 저장되어있는 POSIX의 경로 이름을 변환하려면 :

POSIX file str as alias 

는 AppleScript로 alias에 변수 str에 저장된 HFS 경로 이름을 변환하기를, 다음 식을 사용 :

tell application "iTunes" 
    set trk to first item of selection 
    set l to location of trk 
    set newPath to my computeNewPath(POSIX path of l) 
    set location of trk to POSIX file newPath as alias 
end tell 

to computeNewPath(pp) 
    -- presumably something interesting happens here 
    return pp 
end computeNewPath 
: 예를 들어

alias str 

그대로 아이튠즈 라이브러리 데이터베이스 (iTunes Library.itl)을 유지하면서 다른 위치로 미디어 파일 (iTunes에서 "조직"되지 않은)를 이동하는 방법

+0

내 코드에서 별칭 유형에 캐스트가 누락되었습니다. 감사! –

2

:

  1. 이동 파일을 새 위치 (예를 들어,아직 실행하지 않은 경우, mv ~/MyMusic /Volumes/Huge/)
  2. 이동 된 모든 트랙을 선택) (새 위치
    (ln -s /Volumes/Huge/MyMusic ~/MyMusic)
  3. 시작 아이튠즈를 가리키는 이전 위치에 심볼릭 링크를 만듭니다.
  4. 실행이 애플 스크립트는 :

    -- Mark missing tracks (and update database with real path of existing 
    -- tracks) in iTunes 
    -- Instructions: 
    -- * symlink new file location to old location (old location points to 
    -- new location, file exists) 
    -- * select tracks to scan/update 
    -- * run the script 
    -- * missing tracks are marked with (!) and all other track paths have 
    -- been updated to the real path (symlinks eliminated) in iTunes 
    tell application "iTunes" 
        set fx to fixed indexing 
        set fixed indexing to true 
        set Sel to the selection 
    
        repeat with i from 1 to number of items in Sel 
         set trk to item i of Sel 
         set loc to (get location of trk as text) 
        end repeat 
    
        set fixed indexing to fx 
    end tell 
    
  5. 모든 트랙이 이제 올바른 위치를 가리켜 야하고, 심볼릭 링크 (들)을 제거 할 수 있습니다. 이것은 이동 된 트랙에서 정보 입수를 선택하고 경로가 새 위치를 가리키는 지 확인함으로써 확인할 수 있습니다.

심볼릭 링크가 올바르지 않으면 iTunes에서 각 누락 된 트랙 옆에 (!)가 표시됩니다. 문제를 해결하려면 이전 위치에서 새 위치를 가리키는 심볼릭 링크를 만들고 스크립트를 다시 실행하기 만하면됩니다. 힌트 : 정보 입수 대화 상자를 사용하여 누락 된 트랙의 이전 위치를 확인할 수 있습니다.

이것은 iTunes 11.0.5에서 작동했습니다.

+0

필자는''loc에 trk의 위치 설정 '줄을 추가해야했지만 괜찮 았습니다. – Debilski

관련 문제