Как получить идентификатор исполнителя для всех исполнителей в Apple Music для пользователя - PullRequest
0 голосов
/ 11 июня 2018

Используя Apple Music API, я смог получить всех исполнителей в моей библиотеке:

func getArtists(forToken musicUserToken: String) {
    var urlComponents = URLComponents()
    urlComponents.scheme = "https"
    urlComponents.host = "api.music.apple.com"
    urlComponents.path = "/v1/me/library/artists"

    var request = URLRequest(url: urlComponents.url!)
    request.setValue("Bearer (developerToken)", forHTTPHeaderField: "Authorization")
    request.setValue(musicUserToken, forHTTPHeaderField: "Music-User-Token")

    let dataTask = URLSession.shared.dataTask(with: request) { (data, urlResponse, error) in
        ...
    }
    dataTask.resume()
}

Например, приведенный выше код возвращает этот JSON:

{
    "data":[
        {
            "attributes":{
                "name":"Anne-Marie"
            },
            "href":"/v1/me/library/artists/r.wb9aRPu",
            "id":"r.wb9aRPu",
            "type":"library-artists"
        },
        {
            "attributes":{
                "name":"Bruno Mars"
            },
            "href":"/v1/me/library/artists/r.zCrRBIw",
            "id":"r.zCrRBIw",
            "type":"library-artists"
        },
        ...
    ]
}

Но, похоже,мне, что каждый объект относится к исполнителю в моей библиотеке , а не к исполнителю в Apple Music Library.Потому что, если я получу исполнителя id и попытаюсь получить альбомы этого исполнителя, ничего не будет найдено.Например, GET для URL https://api.music.apple.com/v1/catalog/us/artists/r.wb9aRPu возвращает ошибку:

{
    "errors":[
        {
            "id":"GJXVG3NROYGJPDRECZLCPYKLEQ",
            "title":"Internal Service Error",
            "status":"500",
            "code":"50000"
        }
    ]
}

Но если я сделаю тот же GET для идентификатора артиста 178834 (который я получил из примера на веб-сайте Apple), он вернетправильный ответ:

{
    "data":[
        {
            "id":"178834",
            "type":"artists",
            "href":"/v1/catalog/us/artists/178834",
            "attributes":{
                "name":"Bruce Springsteen",
                "genreNames":[
                    "Rock"
                ],
                "url":"https://itunes.apple.com/us/artist/bruce-springsteen/178834"
            },
            "relationships":{
                "albums":{
                    "data":[
                        {
                            "id":"1136909069",
                            "type":"albums",
                            "href":"/v1/catalog/us/albums/1136909069"
                        },
                        {
                            "id":"1134170183",
                            "type":"albums",
                            "href":"/v1/catalog/us/albums/1134170183"
                        },
                        ...
                    ],
                    "href":"/v1/catalog/us/artists/178834/albums",
                    "next":"/v1/catalog/us/artists/178834/albums?offset=144"
                }
            }
        }
    ]
}

Я хочу получить все альбомы всех исполнителей, которые есть у пользователя в его библиотеке.Но я не могу сделать это с идентификатором художника, который возвращает /me/library/artists.Итак, есть ли другой способ получить идентификатор художника для художников, который пользователь имеет в библиотеке?

...