2011-10-10 3 views
2

Windows 7에서 iTunes COM 인터페이스를 사용하고 있습니다. iTunes.CurrentTrack.AddArtworkFromFile (경로) 메서드의 경로는 BSTR 유형이어야합니다.BSTR에 대한 Python 문자열

저는 BSTR이 기본 문자열을 의미하는 C++/Visual Basic 데이터 유형이라는 것을 알고 있습니다.

파이썬 ASCII 문자열을 BSTR로 변환 할 수있는 방법이 있습니까?

코드 : 에러

import urllib 
from BeautifulSoup import BeautifulSoup 
import re 
import win32com.client 
import sys 





iTunes = win32com.client.gencache.EnsureDispatch("iTunes.Application") 

cTrackName = iTunes.CurrentTrack.Name 
cArtist = iTunes.CurrentTrack.Artist 
cAlbum = iTunes.CurrentTrack.Album 

print cAlbum + cArtist + cTrackName 
url = 'http://www.last.fm/music/'+cArtist+'/'+cAlbum 
albumPage = urllib.urlopen(url).read() 
soup = BeautifulSoup(albumPage) 
s = soup.prettify() 
z = re.compile('.*<img width="174" src="(.*)" class="art" id="albumCover" itemprop="image" class="albumCover coverMega" />') 
p = re.findall(z,s) 
print p 
urllib.urlretrieve(p[0],'a.png') 
a = urllib.quote('file://localhost/C:/Users/ArchAngel/Desktop/a.png') 
iTunes.CurrentTrack.AddArtworkFromFile('file://localhost/C:/Users/ArchAngel/Desktop/a.png') 
#print binascii.a2b_uu('sadsaffas') 
iTunes.CurrentTrack.AddArtworkFromFile(b'C:\Users\ArchAngel\Desktop\a.png') 

: pywintypes.com_error (-2147352567은 '. 예외가 발생', (0, 없음, 없음, 없음, 0, -2147467259) 없음)

답변

3

파이썬 2.x를 사용하고 있기 때문에, strwin32com 대신에 unicode을 사용하기 만하면됩니다. 그러나 win32com에서 strunicode으로 자동 변환 할 것으로 예상됩니다.

당신은 이런 식으로 작성해야 :

iTunes.CurrentTrack.AddArtworkFromFile(u'file://localhost/C:/Users/ArchAngel/Desktop/a.png') 

를이 다음 작동하지 않습니다 난 당신의 문제는 다른 곳에있다 생각합니다.

+0

고맙습니다 ... 그게 효과가있었습니다. – nightf0x