LoginSignup
2
3

More than 3 years have passed since last update.

JXA + Spotify + Macでワンクリックでアプリの起動+好きな曲を再生する

Last updated at Posted at 2020-10-14

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を使ってダイレクトに調べます。

参考: Spotify 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'
~~省略 ~~~

STEP4. アプリの作成

スクリプトエディタに戻って、ファイル > 書き出す より、フォーマットでアプリケーションを選んで保存します。

アイコンを変えてDockに追加すれば、ワンクリックで曲の再生までやってくれるアプリができました。
image.png

2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3