Search code examples
iosapple-musicapple-musickit

Album artwork from track MPMediaItem


I'm using Apple Music API's recent played endpoint which returns a list of recently played media assets.

I'm then using one of them and play it on MPMusicPlayerController.

{
        "id": "1437591818",
        "type": "albums",
        "href": "/v1/catalog/us/albums/1437591818",
        "attributes": {
            "artwork": {
                "width": 3000,
                "height": 3000,
                "url": "https://is2-ssl.mzstatic.com/image/thumb/Music118/v4/46/e9/60/46e9606c-59ec-1243-c377-2089c303dacf/00602577153884.rgb.jpg/{w}x{h}bb.jpeg",
                "bgColor": "000000",
                "textColor1": "faf0ee",
                "textColor2": "ecd0d3",
                "textColor3": "c8c0be",
                "textColor4": "bca6a9"
            },
            "artistName": "Lil Wayne",
            "isSingle": false,
            "url": "https://itunes.apple.com/us/album/tha-carter-v/1437591818",
            "isComplete": true,
            "genreNames": [
                "Hip-Hop/Rap",
                "Music"
            ],
            "trackCount": 23,
            "isMasteredForItunes": true,
            "releaseDate": "2018-09-28",
            "name": "Tha Carter V",
            "recordLabel": "Young Money Records, Inc.",
            "copyright": "℗ 2018 Young Money Records, Inc.",
            "playParams": {
                "id": "1437591818",
                "kind": "album"
            },
            "editorialNotes": {
                "standard": "Maybe more than any other rapper in history, Lil Wayne’s output is defined by franchises. An artist should be so lucky to sustain the kind of longevity that would allow for multi-volume phases the likes of Wayne’s <i>Dedication</i>, and <i>Da Drought</i> mixtapes, let alone the series that made him into a superstar, <i>Tha Carter</i>. Though Wayne was not without projects in between, some seven years were allowed to pass between the release of the fourth and fifth installments of the lattermost. Fortunately, Wayne has rewarded his fans’ patience with 23 tracks that speak to a number of his most storied eras.<br />\n“Mixtape Weezy,” as Jay-Z famously coined, is alive and well on songs like the Swizz Beatz-produced “Uproar,” Wayne blacking out over a reinterpretation of G-Dep’s 2001 hit “Special Delivery.” The nostalgia doesn’t stop (or peak) there, as Wayne and Snoop Dogg share space over a flip of Dr. Dre’s “Xxplosive” on “Dope N*ggaz,” while Mannie Fresh revisits the Cash Money golden-era bounce of Juvenile’s “Ghetto Children” for “Start This Shit Off Right.” There are nods to the experimental Wayne of the <i>I Am Not A Human Being</i> projects (“Don’t Cry,” “Mess”) and also the rapper’s under-heralded pop wizardry (“Famous,” which features his daughter Reginae as hook singer), and even a love song built on a gospel sample, “Dope New Gospel.” In all, <i>Tha Carter V</i> is an album for anyone who’s missed Wayne—no matter which Wayne they’d missed.",
                "short": "Weezy F Baby, and the F is for finally."
            },
            "contentRating": "explicit"
        }
    },

Whenever I want to access the metadata of what's currently playing, I can get it with the nowPlayingItem property which returns a MPMediaItem of the current track within the album.

The artwork property of this MPMediaItem is null, so I want to access the album's artwork. I can get the albumPersistentStoreId (3911653000682848550 for example) and I'm using it to request the album info via the Apple Music API:

https://api.music.apple.com/v1/catalog/us/albums/3911653000682848550

But this returns a "Resource not Found" error message.

Using the search endpoint (https://api.music.apple.com/v1/catalog/us/search?term=the+carter+v&limit=2&types=artists,albums) or the original recently played endpoint I see that the album ID returned in these is different than the one I get in the albumPersistentStoreId property. How can I get the proper album ID from the MPMediaItem?


Solution

  • You could use the playbackstoreID of the MPMediaItem - request track info from the API and get the album art from there.