1

I'm trying to extract the artwork file from my iTunes MP3 files using AutoHotkey (v1.1). The script works well until it gets to the SaveArtworkToFile method.

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
    }
}

I get this error message:

---------------------------
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)
---------------------------

I have the same result with bpm and jpg file formats. And strResult returned by SaveArtworkToFile is empty. Should this method be supported by the AHK iTunes.Application COM object?

Thanks and Happy New Year!

4

2 回答 2

1

@Manuell:哦!感谢您将文档重新引起我的注意。在里面

Parameters: filePath Full path to the artwork image file.

我错过了“完整”这个词。在我的脚本中,我依赖于相对路径。我只是用绝对路径测试了它,这个工作!

于 2014-01-02T02:32:20.010 回答
0

为您搜索:IITArtwork::SaveArtworkToFile

HRESULT IITArtwork::SaveArtworkToFile ( [in] BSTR filePath )
将图稿数据保存到图像文件。

保存数据的格式由图稿的格式(JPEG、PNG 或 BMP)指定。包含该文件的目录必须已经存在,它不会被创建。如果文件已经存在,则其内容将被替换。

参数:filePath 作品图像文件的完整路径。

该方法不返回值(正如汉斯在评论中所说)。尝试:

objArtwork.SaveArtworkToFile(strFilePath . "." . strExtension)
于 2014-01-01T20:44:48.013 回答