iTunes 용 복잡한 AppleScript로 작업하십시오. 한 가지 작업은 주어진 트랙이 포함 된 모든 재생 목록의 목록을 누적하는 것입니다. 나는이 트랙 객체를 다른 곳에서 가지고있다. 이것은 작동하지만 비용 (반환 한)는 루프에서 재생 목록 당 하나의 애플 이벤트가 필요하며 중간 결과를 멀리 던져iTunes AppleScript : 특정 트랙이 포함 된 모든 재생 목록을 쿼리하십시오.
on containingPlaylists(theTrack)
tell application "iTunes"
set librarySource to the source named "Library"
set candidateLists to every user playlist in librarySource
set candidateId to (get id of theTrack)
set matchLists to {}
repeat with candidateList in candidateLists
set matchTracks to (file tracks in candidateList whose id = candidateId)
if (count of matchTracks) > 0 then
copy candidateList to end of matchLists
end if
end repeat
return matchLists
end tell
end containingPlaylists
:
현재,이 같은 조각 뭔가있어. 내가 오히려 할 줄 것은 모두 하나 개의 쿼리에 뭔가 :
set matchLists to every playlist in librarySource whose file tracks contain theTrack
그러나 물론이 작동하지 않습니다 (". 핸들러는 하나의 개체를 처리하는"특정 오류는하지만 그 통찰력입니다 있는지 확실하지 않습니다). 언어/응용 프로그램이 이와 같은 쿼리를 지원하는지 잘 모르겠습니다.
아무도 통찰력을 확인/거부 할 수 있습니까? 감사!
한 줄 쿼리의 논리가 잘못되었습니다 : 두 개의 트랙 참조 데이터가 동일한 지 확인하려면'데이터베이스 ID는
@foo : 감사합니다. 그러한 쿼리를 작성하도록 도와 줄 수 있습니까? (단순히 "데이터베이스 ID of theTrack"을 대체하면이 경우 동일한 문제가 있습니다.) 트랙을 포함하는 재생 목록의 목록으로 결과를 찾고 있습니다 (트랙 참조가 필요 없으며 목록 참조 만 필요) . AE 오버 헤드가 큰 일이 될 거대한 배치 작업을 구축하고 있습니다. 가능하면이 작업을 피하는 것이 기쁠 것입니다. 다시 한 번 감사드립니다! –
나는 시도했다, 그러나 iTunes는 매번 밖으로 배변한다; 내가 말했듯이 다중 항목 지정자를 해결할 수있는 능력이 떨어집니다. AE로드를 최소화하기 위해 모든 트랙의 데이터 ID와이를 포함하는 재생 목록의 ID를 제공하는'tell app "iTunes를 사용하여"모든 트랙의 컨테이너 ID "를 얻을 수 있습니다. NS [Counted] Set 마법을 사용하여 중복 된 데이터베이스 ID를 효율적으로 압축하고 NSDictionary를 사용하여 재생 목록 ID에 매핑 한 다음 중복 NSID를 제거하고 마지막으로 새로운 '재생 목록 ID'참조를 작성합니다. 남은 것. –
foo