Apple Music APIを使用して、アーティストやアルバムの検索を行うコードを実装してみました。下記の記事を参考に実装しましたが、つまづいた点がいくつかあったので、備忘録としてこの記事を書きました。
目次
- 環境
- Developer Tokenの準備でつまづいたポイント①Big Sur環境でのpyenv install
- Developer Tokenの準備でつまづいたポイント②music_token.pyの実行
- Apple Music APIへのアクセスの実装
- まとめ
環境
- macOS Big Sur11.4
- Xcode12.5.1
- iOS14.5
Developer Tokenの準備でつまづいたポイント①Big Sur環境でのpyenv install
Apple Music APIにアクセスする為には、Developer Tokenと呼ばれるトークンを発行する必要があります。今回は上記の記事にある通り、apple-music-token-generatorを使ってトークンを発行してみました。(詳細な手順は上記の記事をご覧ください。)
事前準備としてpipのインストールが必要でしたが、自分の端末はPythonのバージョンが低かった為(2.7.16でした)、python get-pip.py
が実行できず、Pythonのバージョンを3系に上げる必要がありました。
そこでこちらの記事を参考に試してみましたが、pyenv install
のところでエラーになってしまい、3系のPythonのインストールが出来ませんでした。
調べてみたところ、Big Surではpyenv install
が上手く動作しない事がある様でした。
解決策として下記の記事が非常に参考になりました。
- macOS Big Sur にアップグレードした後にpyenv installできなくなった際の私の場合の解決方法
- unable to install python 3.8.0 on macox 11 #1740
ちなみに、インストールが無事完了した後のPythonの切り替えはこちらを参考にしました。
Developer Tokenの準備でつまづいたポイント②music_token.pyの実行
こちらはちょっとした事ですが、music_token.pyを実行すると「print文の括弧がないよ!」的なエラーになるので、下記の通り修正してから実行しました。
これを
print "----TOKEN----"
print token
こんな感じにして実行しました。(もしかしたら修正せずに実行する方法があるのかも知れませんが、私は分かりませんでした...。)
print("----TOKEN----")
print(token)
Apple Music APIへのアクセスの実装
実際のコードはこんな感じです。書き方はこちらの記事が非常に参考になりました。
import UIKit
import Alamofire
import SwiftyJSON
class AppleMusicManager {
let header: HTTPHeaders = [
"Authorization" : "Bearer {ここにDeveloper Tokenを入れる}"
]
let baseUrl = "https://api.music.apple.com/v1/catalog/jp/search"
let parameters = ["term": "bump", "limit": "10", "types": "albums"] // 今回は"bump"で検索したが、検索ワードは任意のものを設定する
func searchAlbum() {
AF.request(self.baseUrl, method: .get, parameters: self.parameters, encoding: URLEncoding.default, headers: header)
.responseJSON { responce in
switch responce.result {
case .success:
if let object = responce.value {
let json = JSON(object)
print("成功したよ: \(json)")
}
case .failure(let error):
print("エラーだよ\(error)")
}
}
}
}
何度かエラーになりましたが、
- Developer Tokenの前に半角スペースを入れる。
- Alamofireを使用する際は、
Alamofire.request(...)
と記載している記事が多かったが、自分の場合はメソッドが上手く見つからず、AF.request(...)
という書き方にしたら上手くいった。(参考:Module 'Alamofire' has no member named 'request'
)
等を試してみたら正常にレスポンスが返却される様になりました。
まとめ
Apple Music APIをいざ実装してみると、思っていたよりも調べることが沢山ありました。
この記事が少しでもApple Music APIを実装してみたいと思っている方の手助けになれば幸いです。