search
他カテゴリ

APIを使って音楽を聴くきっかけを作ろう⑬

ヨコチ🦖UGOK's icon'
  • ヨコチ🦖UGOK
  • 2020/11/25 10:30

 

UGOKのヨコチ🦖です。

前回は類似アーティストの情報を取得しました☺あれから少しいろいろあったのですが気を取り直して頑張っていきたいと思います~~~!制作しているウェブアプリケーションの概要はこちらです。

 

 

今回やること

前回は、Spotify Web APIを使って日本トップ50という名前のプレイリストに載っている曲のCDジャケット画像をランダムに表示させ、そこから選択したCDジャケット画像のアーティストの類似アーティストの情報を取得・表示させました。

今回は類似アーティストのアーティストidからトップソングのCDジャケット画像・試聴ボタンを表示させようと思います。

 

https://gist.github.com/yochn/9d18c518b6b65019a2e9588c22e7644b

 

// API_3
app.get('/next/:nextid', (req, res) => { 
  var client_id = ''; //SpotifyのクライアントID
  var client_secret = ''; //Spotifyのクライアントシークレット

  //認証を行う
  var authOptions = {
    url: 'https://accounts.spotify.com/api/token',
    headers: {
      'Authorization': 'Basic ' + (new Buffer(client_id + ':' + client_secret).toString('base64'))
    },
    form: {
      grant_type: 'client_credentials'
    },
    json: true //基本固定
  };

  request.post(authOptions, function (error, response, body) {
    if (!error && response.statusCode === 200) { 
      var token = body.access_token;
      var options = {
        url: 'https://api.spotify.com/v1/artists/'+req.params.nextid+'/top-tracks?country=JP',
        headers: {
          'Authorization': 'Bearer ' + token,
          'Accept-Language': 'ja;q=1' //日本語表記にする
        },
        json: true
      };
      request.get(options, function (error, response, body) {
        res.json(body);
      });
    }
  });
});
nextsong: function() {
  this.nextArtistFlag = false;
  this.nextsongFlag = true;

  const self = this; //fetch内ではthisが使えないので先に定数として設定しておく
  for (i = 0; i < 9; i += 1) {
    fetch('./next/' + self.genreid[i]).then(function(res) {
      return res.json(); //responseをjson形式で返す
    }).then(function(data) {
      self.nextdata = data; //nextdataにとってきたデータを代入する
      self.nextimgURL = data.tracks[0].album.images[0].url;
      self.nextimg.push(self.nextimgURL);
      self.nextpreURL = data.tracks[0].preview_url;
      self.nextpreview.push(self.nextpreURL);
    });
  }
}

前回取得した類似アーティスト情報から、アーティストidを9個抜き出します。それをgenreid[]に収納し、類似アーティストのトップソングを表示させるために利用します(fetch('./next/' + self.genreid[i]))。類似アーティストそれぞれのトップソングを抜き出すので、fetchを9回繰り返します。その後のCDジャケット画像や試聴ボタンの表示は以前と同様に行います。

 

 

 

実行結果

Content image
YOASOBIというアーティストの画像を選択してみました❕次へを押します❕
Content image
類似アーティストのアーティストidを抜き出しました❕
Content image
アーティストidを使ってCDジャケット画像、試聴ボタンを表示させました❕

トップソングのAPIを利用していたのですが、エラーコード400が表示され、なかなかうまくいかず・・・ということがあったのですが、原因としましては、クエリパラメータとして国コードが必要であったこと(?country=JP)と複数のアーティストidを一気に送ってしまっていた(genreidの中に抜き出した9個のアーティストidが入っていた)ことでした・・・(汗)

 

 

:今後について

再び選択したCDジャケット画像の詳細表示、類似アーティストのCDジャケットの表示・・・・と繰り返していこうとおもいます~~~☺やっと終わりがみえてきた気がします☺

 

 

:参考

 

 

 

 

Article tip 0人がサポートしています
獲得ALIS: Article like 6.45 ALIS Article tip 0.00 ALIS
Article registration Article registration
ヨコチ🦖UGOK's icon'
  • ヨコチ🦖UGOK
  • @yoch
twitter @ugok_2

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
他カテゴリ

SASUKEオーディションに出た時の話

Taka 2021/01/22
Like token Tip token
35.87 ALIS
Eye catch
トラベル

無料案内所という職業

bansu 2019/06/11
Like token Tip token
84.20 ALIS
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

ふたひい@web3 2020/05/16
Like token Tip token
114.82 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

nnppnpp(んぺー) 2021/09/08
Like token Tip token
46.60 ALIS
Eye catch
クリプト

Bitcoinの価値の源泉は、PoWによる電気代ではなくて"競争原理"だった。

CryptoChick 2020/03/07
Like token Tip token
159.32 ALIS
Eye catch
他カテゴリ

オランダ人が語る大麻大国のオランダ

Jimmy 2018/12/21
Like token Tip token
46.20 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

昆布森ちゃん 2021/01/19
Like token Tip token
38.31 ALIS
Eye catch
他カテゴリ

テレビ番組で登録商標が「言えない」のか考察してみる

連獅子 2021/10/09
Like token Tip token
31.20 ALIS
Eye catch
トラベル

梅雨の京都八瀬・瑠璃光院はしっとり濃い新緑の世界

こすもす 2021/05/25
Like token Tip token
216.64 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

otakucoin 2021/03/29
Like token Tip token
121.79 ALIS
Eye catch
ゲーム

【初心者向け】Splinterlandsの遊び方【BCG】

暗号資産ジョシ校生 蟻巣 2021/07/07
Like token Tip token
6.32 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

kaya 2021/10/06
Like token Tip token
61.20 ALIS