2010-06-04 9 views
2

저는 Windows SDK 용 iTunes COM의 놀라운 점에 대해 최근에 알아 냈습니다. 내 iTunes 보관함에 대화하기 위해 win32com과 함께 Python을 사용하고 있습니다. 말할 필요도없이 내 머리가 폭발하는 중입니다. 이 API는 흔들립니다.Media Kind in Windows Windows 용 COM SDK

그래도 문제가 하나 있는데, 트랙의 Media Kind 속성에 액세스하려면 어떻게해야합니까? SDK에서 제공되는 도움말 파일을 살펴본 결과 아무런 흔적도 발견되지 않았습니다. iTunes에 들어가면 트랙의 미디어 종류를 수정할 수 있습니다. 이 방법으로 음악 라이브러리에 오디오 북이 나타나면 오디오 북에 미디어 유형을 설정하면 iTunes의 북 섹션에 나타납니다. 꽤 멋진.

내가 물어 보는 이유는 내 LibraryPlaylist에 나타나는 오디오 북의 모든 쓰레기가 있기 때문입니다.

여기 내 코드가 있습니다.

import win32com.client 

iTunes = win32com.client.gencache.EnsureDispatch('iTunes.Application') 
track = win32com.client.CastTo(iTunes.LibraryPlaylist.Tracks.Item(1), 'IITFileOrCDTrack') 

print track.Artist, '-', track.Name 
print 
print 'Is this track an audiobook?' 
print 'How the hell should I know?' 

미리 감사드립니다.

답변

0

찾을 수없는 이유 중 하나는 com 객체가 참조하는 원자 구조가 오래된 것일 수 있다는 것입니다. MP4 구조체에서 가장 많이 사용되는 원자 목록은 다음과 같습니다. http://atomicparsley.sourceforge.net/mpeg-4files.html 매체 종류 원자가 없습니다. 저는 여러분이 atomicparsley를 통해 구조체를 파싱하려고 시도 할 수 있다고 생각하지만, 제 지식에 대해서만 알고있는 원자를 찾습니다.

짧은 답 : COM 개체는 MediaKind 특성에 대해 알지 못할 수 있습니다.

0

"미디어 종류"속성에서 찾을 수있는 유일한 참조는 ITUserPlaylistSpecialKind 열거 형입니다. 사용되는 유일한 장소는 getter 메서드 인 IITUserPlaylist :: SpecialKind입니다. 그래서 이것은 읽기 전용 재생 목록 수준의 속성 인 것 같습니다. 나는 그것을 읽으려면 트랙의 재생 목록을 가져 와서 재생 목록의 SpecialKind 속성을 얻어야한다고 생각합니다. 이를 작성하려면 트랙을 적절한 재생 목록으로 이동해야합니다.

0

음, 미디어 종류는 인터페이스 IITTrack.Kind에,하지만 그건 아마 당신이 원하는 아니다 - 대답 중 하나가 될 것입니다 :

public enum ITTrackKind 
    { 
     ITTrackKindUnknown = 0, 
     ITTrackKindFile = 1, 
     ITTrackKindCD = 2, 
     ITTrackKindURL = 3, 
     ITTrackKindDevice = 4, 
     ITTrackKindSharedLibrary = 5, 
    } 

아마 당신이 IITTrack 볼 필요가 .Gen은 ID3 태그 장르의 문자열 형식을 제공하므로 "오디오 북"또는 Apple의 "Books & Spoken"을 찾을 수 있습니다. (일부 장르는 iTunes/iPod에서 특별히 처리됩니다.)

팁 : 내가 다운로드 한 iTunes SDK의 컴파일 된 도움말 파일이 손상된 것처럼 보였습니다. 다시 HTML 파일로 변환하고 Firefox/grep을 사용하여 필요한 정보를 찾아야했습니다.

+0

이것은 작동하지 않습니다. – Hogan

-1

그것은 실제로 매우 쉽다는 IITFileOrCDTrack.Podcast을 사용

yourTrack.Podcast 

가 팟 캐스트 인 경우, 그렇지 않으면 false를 반환합니다 True를 반환합니다.

당신은 물론 내가 도울 수 다행

yourTrack.Podcast(bool) 

를 통해 설정할 수 있습니다.

+0

이것은 작동하지 않습니다. – Hogan