spotifyからアルバムの曲名一覧を引っ張ってくる

 Spotify Web API PHPを使ってこにょごにょする話の続き。
doroyamada.hatenablog.jp

 最初に立ち返って、なにをやりたかったかと言うと、アルバムの曲名一覧をクリップボードにコピーできる状態で得たいということ。ブラウザ上でもコンソールでもどっちでもいいけど、まずはコンソールで。そういうサービスはいくつかあるけど、誤定年にすべての情報を出力してくれる。曲名だけでいいのに。なぜそういうことをしたいかというと・・・秘密。

 spotify-web-api-phpのドキュメントを読むとgetAlbumというメソッドがあるっぽい。これで比較的かんたんにできるかも。
 参考になったのは以下のサイト。
qiita.com
qiita.com

 ドキュメントや他のサイトを見ながら、最終的にindex.phpは以下のように。account.phpではいろんな変数に値を代入している。

<PRE>
require 'vendor/autoload.php';
include("account.php");

$session = new SpotifyWebAPI\Session($client_id, $client_secret, 'http://localhost/spotify/index.php');

$api = new SpotifyWebAPI\SpotifyWebAPI();

if (isset($_GET['code'])) {
    $session->requestAccessToken($_GET['code']);
    $api->setAccessToken($session->getAccessToken());

    print_r($api->me());
	echo "new\t";
    print_r($session->getAccessToken());
	echo "\nrefresh\t";
	print_r($session->getRefreshToken());
	echo "\n";

print_r($accessToken); 
    
} else {
    header('Location: ' . $session->getAuthorizeUrl(array(
        'scope' => array(
          'playlist-read-private', // プレイリスト取得
          'playlist-modify-private', // プレイリスト変更
          'user-read-private',
          'playlist-modify'
        )
    )));
    die();
}
<?php
?>
</PRE>

 どうやら一発でアクセストークンとリフレッシュトークンを取得できるもよう。

 で、次の難関。リフレッシュトークンって何?twitterやinstagramのAPIでは固定のアクセストークンを使っていたが、spotifyの場合は有効期限が3600秒らしい。だったら1回ごとに上記のようなスクリプトでアクセストークンを新規取得すればいいんだが、固定のリフレッシュトークンとやらを使うとそれがかんたんにできるらしい。

 そこでできあがったのが以下のalbum.php。

<?php
	require 'vendor/autoload.php';
		
	use SpotifyWebAPI\Session;
	use SpotifyWebAPI\SpotifyWebAPI;

if(isset($argv[1])){
	if(preg_match('/https:\/\/open\.spotify\.com\/album\/(.+)/', $argv[1],$temp)){	
		include("account.php");
		
		$session = new Session($client_id, $client_secret);
		$api = new SpotifyWebAPI();

		$session->refreshAccessToken($RefreshToken);
		$api->setAccessToken($session->getAccessToken());

		$album = $api->getAlbum($temp[1], 'JP');	
		foreach($album->tracks->items as $track){	}else {
		die("URL形式が違います。\n");
	}
}else{
	die("引数を指定してください。\n");
}
?>

 実行例。

kazz@oscar ~/bin/html/spotify# php album.php https://open.spotify.com/album/6DGrnjjO3O4hUEupUtPVv3
共通項
君のいない世界に
相思い
あるわけないのその奥に
鏡の中から
愛と狂気とカタルシス
ありよりのあり
ジャンプ
妄想桜
漫画みたいに恋したい
Guess!!
SPLASH
虹を探しに
昨日のあたしに負けたくないの
kazz@oscar ~/bin/html/spotify# 

あるわけないの【通常盤】

あるわけないの【通常盤】

 次の目標はプレイリストにも対応すること。

 続き。
doroyamada.hatenablog.jp