完全に自分用の技術メモ(´・ω・`)
gmusicapiはPythonからGoogle Play Musicを操作するGoogle非公認のライブラリです。Google Play Musicを操作するにあたっては認証が不可欠なのですが、その認証APIがやや複雑というか、少なくとも自分は時間を溶かしたので、サンプルを供養がてらQiitaに残しておきたいと思います。ちなみに稼働を確認した環境については、Pythonのバージョンは3.7、gmusicapiのバージョンは12.1.1になります。
import gmusicapi
# 前提: このファイルは初回起動時には存在しない。
CREDENTIAL_FILE = '/path/to/mobileclient.cred'
api = gmusicapi.Mobileclient()
if not os.path.exists(CREDENTIAL_FILE):
api.perform_oauth(CREDENTIAL_FILE)
api.oauth_login(gmusicapi.Mobileclient.FROM_MAC_ADDRESS, CREDENTIAL_FILE)
初回起動時に必要な作業について
初回起動時、すなわちCREDENTIAL_FILE
が存在しない場合、次のようなメッセージがコンソール(標準出力)に表示されると思います (セキュリティ上の関係から、一部マスキングしています)
Visit the following url:
https://accounts.google.com/o/oauth2/v2/auth?client_id=XXX&redirect_uri=XXX&scope=XXX&access_type=offline&response_type=code
Follow the prompts, then paste the auth code here and hit enter:
このURLではアクセスコードの発行を行います。ブラウザを起動し、処理を進めていくと、最終的に以下のような画面でアクセスコードが発行されます。このトークン文字列をコピーして、先ほどのコンソールに入力すると、処理が先に進んでいくはずです。
解説
初回起動時、つまりCREDENTIAL_FILE
が存在しない状態で、サンプルを実行すると、api.perform_oauth
が実行されます。上記の対話型メッセージを出力しているのがこのAPIで、標準入力経由でアクセスコードを受け取ると、第1引数のファイル(ここではCREDENTIAL_FILE
)に情報を記録します。
api.oauth_login
は第2引数のファイル(ここではCREDENTIAL_FILE
)から情報を受け取り、認証を実施します。初回起動以降、つまりCREDENTIAL_FILE
が存在する状態では、api.perform_oauth
は実行されず、api.oauth_login
が直接実行されますが、認証情報は初回起動時にCREDENTIAL_FILE
に記録済み。したがって、初回起動以降は、上述したようなブラウザ作業を実施する必要はありません。