如何使用AppleScript自动将艺术作品添加到iTunes歌曲?

时间:2016-02-28 23:30:11

标签: applescript posix itunes itunesartwork

我制作了一个自动播放器工作流程,可以将歌曲添加到我的iTunes资料库,并按艺术家姓名,专辑名称和歌曲名称设置他们的信息。但是,当我导入它们时,轨道是无盖的,因此我一直在寻找自动添加图稿的方法。其中一种方法是使用iTunes" Get Album Artwork。"问题在于它甚至根本不提供非常好的艺术品。

我决定下载我没有艺术作品的歌曲的艺术作品,这些作品存储在我的" Downloads" 文件夹中。 input我传入我的脚本是.jpg文件,我想将其作为插图添加到歌曲中。问题是每当我运行这个脚本时,它都说它不能将别名文件变成文件类型。错误消息如下:

  

无法制作别名" Macintosh HD:用户:Nilay:下载:Avicii - True - Hey Brother.jpg"进入类型文件。

没有理由不能找到该文件,因为我使用Automator" Filter Finder Items"找到了该文件。所以我知道它传递了正确的文件。

我试图传入文件的文本而不是实际的文件,但仍然会产生相同的消息。前几条评论是我试图解决这个错误信息的几种方法,但是唉,没有用。

我想知道是否有人知道如何解决此错误消息或其他方式我可以添加自定义艺术品到歌曲而无需手动转到iTunes - >选择歌曲 - >获取信息 - >艺术品 - >添加图稿。如果有人能够解释如何使用AppleScript或Workflow自动执行此操作,那也是可行的。谢谢!!!

on run {input, parameters}

    --set jpegFilename to input
    --set jpegFilename to "/path/to/some/artwork.jpg"
    --set jpegFile to (POSIX file jpegFilename)
    --set jpegFile to (jpegFilename as POSIX file)
    --tell application "System Events" to set jpegFile to (input as POSIX file)
    set jpegFile to input

    tell application "Image Events"
        set myImage to open (jpegFile as file)
        -- the below line needs HFS syntax pathname, eg: MyComputer:Users:liquidx:
        -- save myImage as PICT in (file ":path:to:some:temporary.pict")
        save myImage as PICT in (POSIX file jpegFile)
        close myImage
    end tell

    tell application "iTunes"
        set myTrack to current track
        set artworkCount to count of artwork of myTrack
        -- the below line needs HFS syntax pathname, eg: MyComputer:Users:liquidx:
        -- set myArt to read (file ":path:to:some:temporary.pict") from 513 as picture
        set myArt to read (POSIX file jpegFile) from 513 as picture
        if artworkCount > 0 then
            set data of artwork (artworkCount + 1) of current track to myArt
        else
            set data of artwork 1 of current track to myArt
        end if
    end tell

    tell application "Image Events"
        -- delete (file ":path:to:some:temporary.pict")
        delete (POSIX file jpegFile)
    end tell

end run

1 个答案:

答案 0 :(得分:0)

input是别名说明符列表,首先需要重复循环

repeat with jpegFile in input

或获取列表的第一项

set jpegFile to item 1 of input

然后open中的Image Events命令期望一个别名说明符,因此不需要任何强制。

set myImage to open jpegFile