Сбой метода iTunes SaveArtworkToFile, вызванного из COM-объекта AutoHotkey
Я пытаюсь извлечь файл обложки из файлов iTunes MP3, используя AutoHotkey (v1.1). Скрипт работает хорошо, пока не дойдет до метода SaveArtworkToFile.
objITunesApp := ComObjCreate("iTunes.Application")
objLibrary := objITunesApp.Sources.Item(1)
objPlaylist := objLibrary.Playlists.ItemByName("! iTunesCovers")
objTracks := objPlaylist.Tracks
Loop, % objTracks.Count
{
objTrack := objTracks.Item(A_Index)
Loop, % objTrack.Artwork.Count
{
objArtwork := objTrack.Artwork.Item(A_Index)
TrayTip, % "Track Index: " . objTrack.index
, % "Artwork: " . A_Index . "/" . objTrack.Artwork.Count . "`n"
. "Format: " . objArtwork.Format . "`n"
. "IsDownloadedArtwork: " . objArtwork.IsDownloadedArtwork . "`n"
. "Description: " . objArtwork.Description
strFilePath := objTrack.index . "-" . A_Index
if (objArtwork.Format = 1)
strExtension := "bmp"
else if (objArtwork.Format = 2)
strExtension := "jpg"
else if (objArtwork.Format = 4)
strExtension := "gif"
else if (objArtwork.Format = 5)
strExtension := "png"
else
strExtension := ""
strResult := objArtwork.SaveArtworkToFile(strFilePath . "." . strExtension)
MsgBox, % strFilePath . "." . strExtension . "`nResult: " . strResult
}
}
Я получаю это сообщение об ошибке:
---------------------------
SaveArtworkToFile.ahk
---------------------------
Error: 0x8000FFFF - Défaillance irrémédiable
Source: (null)
Description: (null)
HelpFile: (null)
HelpContext: 0
Specifically: SaveArtworkToFile
Line#
---> 017: strResult := objArtwork.SaveArtworkToFile(strFilePath)
---------------------------
У меня такой же результат с форматами файлов bpm и jpg. И strResult, возвращаемый SaveArtworkToFile, пуст. Должен ли этот метод поддерживаться COM-объектом AHK iTunes.Application?
Спасибо и с новым годом!
2 ответа
@Manuell: О! Спасибо за то, что вернули мне документ. в
Parameters: filePath Full path to the artwork image file.
Я пропустил слово "Полный". В моем сценарии я полагался на относительный путь. Я только что проверил это с абсолютным путем и эта работа!
Погуглил это для вас: IITArtwork:: SaveArtworkToFile
HRESULT IITArtwork:: SaveArtworkToFile ([in] BSTR filePath)
Сохранить данные художественного произведения в файл изображения.Формат сохраненных данных определяется форматом графического объекта (JPEG, PNG или BMP). Каталог, содержащий файл, должен уже существовать, он не будет создан. Если файл уже существует, его содержимое будет заменено.
Параметры: filePath Полный путь к файлу графического изображения.
Этот метод не возвращает значение (как сказал Ганс в комментарии). Пытаться:
objArtwork.SaveArtworkToFile(strFilePath . "." . strExtension)