2010-07-07 3 views
0

iTunes로 다음과 같은 성가심을 해결하고 싶습니다. 검색 필드로 이동하기 위해 cmd + opt + f를 눌러 트랙을 검색 한 후 노래 목록에서 첫 번째 트랙을 재생할 수 있기를 원합니다. 이상적으로 나는 cmd + enter를 사용하여 노래 목록의 첫 번째 트랙을 시작하고 노래 목록으로 포커스를 옮기고 싶습니다. 예를 들어 검색 상자에 'Highway 61'을 입력하고 cmd + enter 키를 누르면 '회전 돌처럼'재생이 시작됩니다.첫 번째 응답을 AppleScript로 어떻게 이동합니까?

내 초기 아이디어는 포커스를 검색 필드에서 노래 목록으로 이동하고 첫 번째 노래를 선택하여 재생하는 applescript입니다.

여기에 내가 가진 무엇 : 나는 AppleScript를 편집기에 구문 오류가 발생이 스크립트를 실행하려고하면

tell application "iTunes" 
    set first responder of (window 1) to outline "songs" 
end tell 

는 "예상 클래스 이름은 식별자를 발견"과 responder을 강조한다. 이 스크립트는 웹에서 찾은 많은 AppleScript와 동일한 양식을 따릅니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

외설/호언 장담 : AppleScript는 나 자신에게 가하는 어리 석음을 겪어 본 가장 초조하고 혼란스러운 기술입니다. 나는 그것을 싫어한다. 나는 그것을 싫어한다. 나는 그것을 싫어한다. 나는 그것을 싫어한다.

+0

UI 윈도우 잉 시스템과 관련하여, iTunes 용어로하려는 것을 표현할 수 있습니까? 그러면 적절한 iTunes 관련 AppleScript 스 니펫에서 원하는 것을 할 수 있는지 제안하는 것이 더 쉬울 것입니다. –

+0

@Ned Deily - 나는 궁극적으로 달성하려는 것을 설명하는 시작 단락을 추가했습니다. –

답변

3

Applescript의 구문은 특이한 것이지만 GUI에 대한 통일 된 스크립팅 언어가 있다는 점에서 나쁘지 않습니다. 이것은 (그리고 여전히) 놀라운 일이었습니다. Apple의 언어 정의 which can be found here을 살펴 보았을 때 이상한 sytanx도 이상하지 않습니다.

그렇다면 각 앱의 AppleScript 사전을 열어 어떤 종류의 명사와 동사가 정의되어 있는지 확인해야합니다. 애플 스크립트는 AppleScript의 관점에서 클래스와 메소드의 라이브러리로 생각하십시오. 물론 라이브러리에 정의되어 있지 않은 메서드를 호출 할 수는 없습니다.

AppleScript 편집기를 시작하고 파일 → 사전 열기를 선택한 다음 iTunes를 선택하십시오. 곧 first responder이라는 명사가 없다는 것을 알게됩니다.

요점은 앱이 일반적으로 UI의 모든 요소가 아닌 내부 개체 구조 만 노출한다는 것입니다. 하지만 보통 충분합니다.

응용 프로그램이 노출하는 올바른 Applescript 인터페이스를 사용하여 수행 할 수없는 작업이 있다면 "시스템 이벤트"라는 도우미 응용 프로그램을 사용하여 UI 요소를 직접 조작 할 수 있습니다.

그래서 파일 → 사전 열기를 다시 실행하고 "시스템 이벤트"를 선택하고 "프로세스 스위트"의 내용을 확인하십시오. UI를 조작 할 수 있습니다. 예를 들어 모든 UI 요소의 목록을 얻으려면

tell application "System Events" 
    tell application process "iTunes" 
      get UI elements of window 1 
    end tell 
end tell 

재미있게 즐기세요! Applescript는 잠시 나에게 끔찍한 표정 이었지만, 사전을 항상 참조해야한다는 것을 알게되면 나쁜 것은 아닙니다.

Mac OS X Automation은 훌륭한 자습서 소스입니다.

+1

좋은 조언. UI 요소를 조작하는 것은 응용 프로그램이 유용한 Apple Events 인터페이스를 제공하지 않는 경우 최후의 수단이 될 수 있습니다. iTunes *는 유용한 인터페이스를 제공하므로 여기에서 해당 레벨에서 일할 필요는 없습니다. 위 내 의견을 참조하십시오. –

+0

나는 진심으로 당신이 말한 것에 동의합니다. – Yuji

+0

감사합니다. 그게 내가 할 일이 생겼어요. –

0

제대로 이해했다면 AppleScript가 필요하지 않습니다. Tab 키를 눌러 요소간에 포커스를 이동하십시오. 필자의 경우 Tab 키를 누르면 포커스가 검색 상자에서 왼쪽 선택 표시 줄로 이동 한 다음 기본 노래 목록으로 이동 한 다음 검색 상자로 다시 이동합니다.

EDIT 편집 : 검색에서 두 번째 키 스트로크 (예 : TAB)를 사용하여 검색 상자 밖으로 포커스를 이동하여 노래 목록으로 이동 한 다음 SPACE을 선택하여 첫 번째 트랙을 재생할 수 있습니다 . 화살표 키를 사용하여 다른 선택 항목을 선택할 수도 있습니다.

그냥 재미로하지만, 여기 당신이 애플 스크립트에 전체 순서를 할 수있는 하나 개의 방법 :

tell application "iTunes" 
    play first item of (search first library playlist for "Highway 61") 
end tell 
+0

맞습니다. 탭이 완벽하게 작동합니다 (이상하게도 그리드보기가 아님). 그러나 나는 문제를 설명하지 못하도록 내 문제를 설명하기 위해 끔찍한 일을했다. 질문을 업데이트했습니다. –

+0

리스트, 그리드 또는 커버 플로우와 같은보기에서 나를 위해 일하는 것 같습니다. –

0

AFAIK는, iTunes는 명령 set first responder of를 구현하지 않습니다. Applescript 스튜디오는 그러한 명령을 구현합니다.