1

AutoHotkey (v1.1) を使用して、iTunes MP3 ファイルからアートワーク ファイルを抽出しようとしています。スクリプトは、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 ファイル形式でも同じ結果が得られます。また、SaveArtworkToFile によって返される strResult は空です。このメソッドは AHK iTunes.Application COM オブジェクトでサポートされるべきですか?

明けましておめでとうございます。

4

2 に答える 2

1

@マニュエル:ああ!ドキュメントを元に戻してくれてありがとう。の中に

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 に答える