JXAとは
これです。
知らないうちにMacがシステム標準でJavaScriptで操作できるようになってた (JXA)
練習がてらSpotifyを起動して好きな曲を再生するアプリを作ってみます。
STEP1. スクリプトエディタを起動、新規書類をjavascriptモードで開く
STEP2. コードを書く
追記:はじめにシャッフルを有効にして、通知センターを使って曲名も表示することにしてみました。
私はURIに My Library > お気に入りの曲 を指定しています。
参考:
var spotify = Application("Spotify")
var target = "流したい曲/アルバム/アーティスト/プレイリストのURI"
// シャッフルを有効にする
if(spotify.shuffling() == false){
const shuffleMenu = Application("System Events").applicationProcesses.byName("Spotify").menuBars.at(0).menuBarItems.byName("曲の再生").menus.byName("曲の再生").menuItems.byName("シャッフル")
shuffleMenu.click()
}
spotify.playTrack(target)
// 現在の曲のtrackを取得
var current = spotify.currentTrack
delay(0.1)
//通知を表示
var app = Application.currentApplication()
app.includeStandardAdditions = true
app.displayNotification(current.artist() , {
withTitle: current.name(),
subtitle: current.album(),
soundName: 'Pop'
})
STEP3. 流したい曲/アルバム/アーティスト/プレイリストのURIを調べる
URIとはSpotifyの中での住所的なやつです。
調べる方法は次の2つ。
1. ブラウザ版SpotifyのURLを見る
アルバムやプレイリストを開くと
https://open.spotify.com/album/4RlqowFUNcZR7UTUinXZlT
(アルバム「かつて天才だった俺たちへ」 by Creepy Nuts)
のように https://open.spotify.com/ + 〇〇 という形式になっていると思います。
この〇〇はURIに対応しているので
var target = "spotify:album:4RlqowFUNcZR7UTUinXZlT"
のように書けばOKです。
2. Spotify APIを使って調べる
1の方法だとアルバム/アーティスト/プレイリストのURIは分かるのですが個別の曲のURIの調べ方がいまいち分かりませんでした。(追記:「曲のリンクをコピー」という機能から普通に調べられました。。)そこでAPIを使ってダイレクトに調べます。
1の方法でアルバムのURIが既に分かっている時は、簡単に曲のURIを検索できます。
import pprint
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
client_id = 'xxxxxxxxxxxxxx'
client_secret = 'xxxxxxxxxxxxxx'
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(
client_id, client_secret)
spotify = spotipy.Spotify(
client_credentials_manager=client_credentials_manager)
results = spotify.album('アルバムのURI(英数字部分)')
# 例えば、results = spotify.album('4RlqowFUNcZR7UTUinXZlT')
results = results['tracks']['items']
pprint.pprint(results)
これで、下のように曲ごとの詳細情報が一覧表示されるので、その中のuriの項目を使えばOKです。
~~省略 ~~~
'name': 'かつて天才だった俺たちへ',
'preview_url': 'https://p.scdn.co/mp3-preview/037b28ab2dbdc68efb5b6a85398645a16a010f60?cid=67c1745df8724b52918df69aab8ff0bd',
'track_number': 7,
'type': 'track',
'uri': 'spotify:track:4qjpey2aljl28C40NmTcgQ'
~~省略 ~~~