Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Pukey

macrumors 6502
Original poster
Jan 7, 2008
424
1
Gekkostate
I'm starting a new thread from this thread because the problem started in iOS 13, but it persists in iOS 15.
I just ran into this problem today when I connected my iPhone to my MacBook Pro to backup my iPhone. As I connected my iPhone, I noticed the album artwork changed on my iPhone. All of the album artwork on iTunes on my Mac is fine, it's just on my iPhone that it's messed up. This is really frustrating, I've never had this problem before. It affects all the album artwork for all my songs on my iPhone. I've tried deleting all the music on my iPhone then re-syncing all my music to no avail. Just accepting this is not an option for me, I rely on my album artwork as a way to find music in my library. If anyone is aware of a fix for this please post! FWIW I'm running macOS 12.1 and iOS 15.2. I don't use iCloud or Music Match, so those shouldn't be a factor.
 

Pukey

macrumors 6502
Original poster
Jan 7, 2008
424
1
Gekkostate
A fix has been suggested by ScottW1 here which I’m currently trying but so far I've had no luck with.
 
Last edited:

Pukey

macrumors 6502
Original poster
Jan 7, 2008
424
1
Gekkostate
ScottW1’s fix worked for me partially, but my Playlists still show incorrect album art. If anyone can suggest other fixes, I'd be glad to hear them. Thanks.
 

Pukey

macrumors 6502
Original poster
Jan 7, 2008
424
1
Gekkostate
I went and deleted my playlists off my iPhone, which ended up deleting them off my computer. So I imported the playlists from another computer then re-synced my iPhone and now the correct album art is showing even for playlists.
 

SusanPLambe

macrumors newbie
Apr 24, 2022
2
1
ScottW1's method worked for me (I'm using iTunes for Windows). Not sure if it makes a difference, but I re-synced the phone *before* re-installing the Music app and everything *seems* to be in order.
 

ianbaker58

macrumors newbie
Nov 18, 2009
1
0
Phillip Island, Australia
Updated MacOS to 12.5.1. iPhone 13 Pro running 15.6.1
Deleted music and APP from iphone, synced with Mac as per discussions over on apply (so called) 'community'.
Problem still persists. Artwork does not match the album!
Getting quite hosed off with this problem not being solved by apple!
Anyone have any newer suggestions?
 

gk_brown

macrumors regular
Dec 26, 2020
226
505
Only solution I have found for this is to delete the Music app on iOS, re-install it, and then re-sync. This issue still applies to iOS 16 unfortunately.

It's really disappointing how Apple seems to have abandoned users that don't want to subscribe to Apple Music. I have bought a lot of music from the iTunes Store over the past 20 years. I don't want to have to pay monthly for music that I already own.
 

arw

macrumors 65816
Aug 31, 2010
1,102
863
Only solution I have found for this is to delete the Music app on iOS, re-install it, and then re-sync. This issue still applies to iOS 16 unfortunately.

It's really disappointing how Apple seems to have abandoned users that don't want to subscribe to Apple Music. I have bought a lot of music from the iTunes Store over the past 20 years. I don't want to have to pay monthly for music that I already own.
Some time ago I wrote an Applescript that updates the tracks on the iPhone/iPod with the exact (or resized) artwork of the original file in the iTunes library.
It doesn‘t matter if the music is synced or manually managed.
I‘m not sure if it works with artwork automatically fetched by iTunes, I have them embedded in the files.
I still use iTunes (via Retroactive) instead of Music.
If there‘s interest for the iTunes version, I can modify the script to be standalone.
I don‘t know if the commands also work for the Music app.
 

Killbynumbers

macrumors 6502a
May 29, 2019
558
549
This is what mine looks like. So sad. I didn't have this happen on my XS Max on iOS 15.

IMG_4127.PNG
IMG_4133.PNG
 
  • Like
Reactions: gk_brown

arw

macrumors 65816
Aug 31, 2010
1,102
863
Ok, for iTunes (which IMHO is far better for manually managing music) here's the Apple Script.
iTunes via Retroactive even works on Ventura.
There are two parameters to be set:
- the list of device names that the script should look for
- optional: the resolution of the artwork depending on the device (matched only by the name of the device)
Once the artwork of a track on the device has been updated, the flag "artworked;" gets appended to the (local) comment. This way on the next run only newly added files are processed.

AppleScript:
-->  Force update of all artwork on iPod/iPhone/iPad from local iTunes library #####
#######################################################
set knownDevices to {"insert_device_name_1","insert_device_name_2", "insert_device_name_3"}
set iPodClassicPixelWidth to 240 # matched if device name contains "iPod-Classic"
set iPodPixelWidth to 480 # matched if device name contains "iPod"
set iPhonePixelWidth to 640 # matched if device name contains "iPhone"
#######################################################
fix_iPod_artwork_mod(knownDevices, iPodClassicPixelWidth, iPodPixelWidth, iPhonePixelWidth)

##### Module: Detect connected iPod  #####
on locateiPods(knownDevices)
    -- check if an item of knownDevices is connected
    tell application "iTunes"
        repeat with i from 1 to the count of the knownDevices
            set this_known_iPod to item i of the knownDevices
            try
                set known_ipod_src to (some source whose name is this_known_iPod)
                set this_iPod to this_known_iPod
                return this_iPod
                go to end
            end try
        end repeat
    end tell
    --
    try
        tell application "System Events" to display dialog "No known iDevices are mounted." buttons {"Cancel"} with icon 0 giving up after 15
        error number -128
    on error
        error number -128
    end try
end locateiPods

##### Module: Force update of artwork on iPod from local library #####
on fix_iPod_artwork_mod(knownDevices, iPodClassicPixelWidth, iPodPixelWidth, iPhonePixelWidth)
    tell application "iTunes"
        set the_iPod to my locateiPods(knownDevices) -- this is a path
        set the_iPod_name to the_iPod
        set ipod_src to some source whose name is the_iPod_name
        set allTracks to every track in library playlist 1 of ipod_src
        set totalTracks to count of allTracks
        set lib to name of library playlist 1
 
        set oldArtworkList to every track in library playlist 1 of ipod_src whose (comment does not contain "artworked")
        if oldArtworkList is not {} then
            tell application "System Events" to display notification "Refreshing artwork…"
            repeat with i from 1 to count of oldArtworkList
                set currentTrack to item i of oldArtworkList
                set fileType to kind of currentTrack as string
                if i ≤ 100 and i mod 50 is 0 then # push notification at 50 and 100 tracks
                    display notification "Cover-Scan iPod: " & i & "/" & totalTracks
                else
                    if i mod 100 is 0 then # push notification every 100 tracks
                        display notification "Cover-Scan iPod: " & i & "/" & totalTracks
                    end if
                end if
                -- get track info for matching with main library
                set name1 to currentTrack's name
                set album1 to currentTrack's album
                set artist1 to currentTrack's artist
                set tracknumber1 to currentTrack's track number
                if album1 is not "Voice Recordings" then
                    try
                        -- get current track's ID in iTunes
                        set newID to (database ID of first track of library playlist 1 whose (album is album1) and (artist is artist1) and (name is name1) and (track number is tracknumber1))
                        -- scale Artwork-file depending on device
                        if the_iPod_name contains "iPod" or the_iPod_name contains "iPhone" then
                            -- define resolution
                            if the_iPod_name contains "iPod-Classic" then
                                set pixelWidth to iPodClassicPixelWidth
                            else
                                if the_iPod_name contains "iPod" then set pixelWidth to iPodPixelWidth
                                if the_iPod_name contains "iPhone" then set pixelWidth to iPhonePixelWidth
                            end if
                            -- get the raw bytes of the artwork into a var
                            tell application "iTunes" to tell artwork 1 of (some track of library playlist 1 whose database ID is newID)
                                set srcBytes to raw data
                            end tell
                            -- export Artwork to temp. file
                            set tempImage to (((path to desktop) as text) & "temp_artwork")
                            #set tempImage to ("Volumes:customVolume:customFolder:temp_artwork")
                            -- write to file
                            set outFile to open for access file tempImage with write permission
                            -- truncate the file
                            set eof outFile to 0
                            -- write the image bytes to the file
                            write srcBytes to outFile
                            close access outFile
                            -- import and scale Artwork-file depending on device
                            set tempImagePath to quoted form of POSIX path of tempImage
                            do shell script "sips --resampleWidth " & pixelWidth & " " & tempImagePath
                            -- embed resized artwork into audio file
                            tell application "iTunes"
                                set data of artwork 1 of currentTrack to read file tempImage as picture
                            end tell
                            -- remove temp. file
                            do shell script "rm -rf " & tempImagePath
                        else
                            set data of artwork 1 of currentTrack to (get raw data of artwork 1 of (some track of library playlist 1 whose database ID is newID))
                        end if
                        set commentOld to currentTrack's comment
                        set currentTrack's comment to "artworked;" & commentOld
                        display notification "Updated artwork for: " & artist1 & " - " & name1 & " (" & album1 & ")"
                        #on error errMsg
                        #    display dialog "Track not found in local library or not local artwork: " & artist1 & " - " & name1 & " (" & album1 & ")"
                    end try
                end if
            end repeat
        end if
    end tell
    tell application "System Events"
        display dialog the_iPod_name & ":" & return & "Finished updating artwork." giving up after 3
    end tell
end fix_iPod_artwork_mod
#####################################################
 
Last edited:
  • Like
Reactions: gk_brown

PerkinsA

macrumors newbie
Nov 15, 2022
2
0
USA
Ok, for iTunes (which IMHO is far better for manually managing music) here's the Apple Script.
iTunes via Retroactive even works on Ventura.
There are two parameters to be set:
- the list of device names that the script should look for
- optional: the resolution of the artwork depending on the device (matched only by the name of the device)
Once the artwork of a track on the device has been updated, the flag "artworked;" gets appended to the (local) comment. This way on the next run only newly added files are processed.

AppleScript:
-->  Force update of all artwork on iPod/iPhone/iPad from local iTunes library #####
#######################################################
set knownDevices to {"insert_device_name_1","insert_device_name_2", "insert_device_name_3"}
set iPodClassicPixelWidth to 240 # matched if device name contains "iPod-Classic"
set iPodPixelWidth to 480 # matched if device name contains "iPod"
set iPhonePixelWidth to 640 # matched if device name contains "iPhone"
#######################################################
fix_iPod_artwork_mod(knownDevices, iPodClassicPixelWidth, iPodPixelWidth, iPhonePixelWidth)

##### Module: Detect connected iPod  #####
on locateiPods(knownDevices)
    -- check if an item of knownDevices is connected
    tell application "iTunes"
        repeat with i from 1 to the count of the knownDevices
            set this_known_iPod to item i of the knownDevices
            try
                set known_ipod_src to (some source whose name is this_known_iPod)
                set this_iPod to this_known_iPod
                return this_iPod
                go to end
            end try
        end repeat
    end tell
    --
    try
        tell application "System Events" to display dialog "No known iDevices are mounted." buttons {"Cancel"} with icon 0 giving up after 15
        error number -128
    on error
        error number -128
    end try
end locateiPods

##### Module: Force update of artwork on iPod from local library #####
on fix_iPod_artwork_mod(knownDevices, iPodClassicPixelWidth, iPodPixelWidth, iPhonePixelWidth)
    tell application "iTunes"
        set the_iPod to my locateiPods(knownDevices) -- this is a path
        set the_iPod_name to the_iPod
        set ipod_src to some source whose name is the_iPod_name
        set allTracks to every track in library playlist 1 of ipod_src
        set totalTracks to count of allTracks
        set lib to name of library playlist 1
 
        set oldArtworkList to every track in library playlist 1 of ipod_src whose (comment does not contain "artworked")
        if oldArtworkList is not {} then
            tell application "System Events" to display notification "Refreshing artwork…"
            repeat with i from 1 to count of oldArtworkList
                set currentTrack to item i of oldArtworkList
                set fileType to kind of currentTrack as string
                if i ≤ 100 and i mod 50 is 0 then # push notification at 50 and 100 tracks
                    display notification "Cover-Scan iPod: " & i & "/" & totalTracks
                else
                    if i mod 100 is 0 then # push notification every 100 tracks
                        display notification "Cover-Scan iPod: " & i & "/" & totalTracks
                    end if
                end if
                -- get track info for matching with main library
                set name1 to currentTrack's name
                set album1 to currentTrack's album
                set artist1 to currentTrack's artist
                set tracknumber1 to currentTrack's track number
                if album1 is not "Voice Recordings" then
                    try
                        -- get current track's ID in iTunes
                        set newID to (database ID of first track of library playlist 1 whose (album is album1) and (artist is artist1) and (name is name1) and (track number is tracknumber1))
                        -- scale Artwork-file depending on device
                        if the_iPod_name contains "iPod" or the_iPod_name contains "iPhone" then
                            -- define resolution
                            if the_iPod_name contains "iPod-Classic" then
                                set pixelWidth to iPodClassicPixelWidth
                            else
                                if the_iPod_name contains "iPod" then set pixelWidth to iPodPixelWidth
                                if the_iPod_name contains "iPhone" then set pixelWidth to iPhonePixelWidth
                            end if
                            -- get the raw bytes of the artwork into a var
                            tell application "iTunes" to tell artwork 1 of (some track of library playlist 1 whose database ID is newID)
                                set srcBytes to raw data
                            end tell
                            -- export Artwork to temp. file
                            set tempImage to (((path to desktop) as text) & "temp_artwork")
                            #set tempImage to ("Volumes:customVolume:customFolder:temp_artwork")
                            -- write to file
                            set outFile to open for access file tempImage with write permission
                            -- truncate the file
                            set eof outFile to 0
                            -- write the image bytes to the file
                            write srcBytes to outFile
                            close access outFile
                            -- import and scale Artwork-file depending on device
                            set tempImagePath to quoted form of POSIX path of tempImage
                            do shell script "sips --resampleWidth " & pixelWidth & " " & tempImagePath
                            -- embed resized artwork into audio file
                            tell application "iTunes"
                                set data of artwork 1 of currentTrack to read file tempImage as picture
                            end tell
                            -- remove temp. file
                            do shell script "rm -rf " & tempImagePath
                        else
                            set data of artwork 1 of currentTrack to (get raw data of artwork 1 of (some track of library playlist 1 whose database ID is newID))
                        end if
                        set commentOld to currentTrack's comment
                        set currentTrack's comment to "artworked;" & commentOld
                        display notification "Updated artwork for: " & artist1 & " - " & name1 & " (" & album1 & ")"
                        #on error errMsg
                        #    display dialog "Track not found in local library or not local artwork: " & artist1 & " - " & name1 & " (" & album1 & ")"
                    end try
                end if
            end repeat
        end if
    end tell
    tell application "System Events"
        display dialog the_iPod_name & ":" & return & "Finished updating artwork." giving up after 3
    end tell
end fix_iPod_artwork_mod
#####################################################
Could you instruct on how to do actually implement this? I'm not an Apple Script user, and want to make sure I do this correctly. I have Album artwork issues as well from my ripped imported albums and them not syncing with Apple's servers to get the actual artwork...really annoying why this isin't working.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.