LoginSignup
9
1
お題は不問!Qiita Engineer Festa 2023で記事投稿!

Slackの名前にSpotifyで聞いてる曲名を表示して、好きなアーティスト仲間を見つけようぜ

Last updated at Posted at 2023-07-19

概要

ステータス欄に表示する記事は有るのですが、そんなとこなかなか見られないのでは!?と思ったので、氏名に表示することにしました。

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3432303534372f35653138333239352d386630362d306238302d396539622d3365616633666239313038632e706e67.png

すみません、三連休でイニDを二期まで見終わったので、それに感化されています。

方法

ほぼほぼ以下の記事と一緒です!最後のコードが少し違うだけ!
なので、とりあえず以下の記事に沿って進めてください。分からなかったらコメント欄で聞いてもらえれば。
あと、JavaScriptわからないので、変なところあったら教えていただければ幸いです。

差分

まず、曲名の前に表示したい名前を定義しておきます。

var real_name = '秋名の下り最遅'

それを、Spotifyから取ってきた曲名と組み合わせます。

// 変更前
//  if (statusCode === 200) {
//    track = content.item.name;
//    artist = content.item.artists[0].name;
//    displayStr = 'NowPlaying:' + track + ' / ' + artist;
//  } else { 
//    displayStr = '再生中の曲はありません';
//  }


// 変更後
  if (statusCode === 200) {
    track = content.item.name;
    artist = content.item.artists[0].name;
    displayStr = real_name + ' NowPlaying ' + (track + ' ' + artist).replace(/[・!?()〜.'!?()。&☆、,:↑…]*~/g, "");
  } else { 
    displayStr = real_name;
  }

ここでのポイントは、氏名はステータスと違って使用できる文字に制限があるため、replaceで力技で取っ払っているところです。
なので、経験値上昇中☆のような曲名やアーティスト名はそのままだと表示できないため、注意してください。
ちなみにこれでも文字を消せなくてたまに表示できない曲も有るのですが、諦めています。

そして、slackに投げるデータの中に、名前も変更するよって書いてあげます。

// 変更前
// 再生中の場合は、こっちを表示させる。
//  var profile = {
//    'status_text': data,
//    'status_emoji': ":spotify1:", //Spotifyの絵文字を予め作成
//  };
  
// 停止中の場合は、こっちを表示させる。  
//  var profile_noplaying = {
//    'status_text': data,
//    'status_emoji': ":nospotify:", //Spotifyの絵文字を予め作成
//  };

// 変更後

  var profile = {
    'profile': {
      'real_name': data,
    }
  };
  

再生時と非再生時の切り替えはdisplayStrで出来ているので、切り替え部を外します。

// 削除
// 表示情報の切り替え。  
//  var slacktoprofile;
//    if (data == '再生中の曲はありません') {
//    slacktoprofile = profile_noplaying;
//    } else {
//    slacktoprofile = profile;
//    }

あと、slackのAPIに投げるところも少し変えておきます。

// 変更前
//  UrlFetchApp.fetch("https://slack.com/api/users.profile.set?token=" + token + "&profile=" + encodeURIComponent(JSON.stringify(slacktoprofile)));


// 変更後
  const options = {
    'method': 'post',
    'headers': headers,
    'payload': JSON.stringify(profile)
  };
  const res = UrlFetchApp.fetch(slackSetStatusUrl, options);
  

// この辺はエラー確認の為なので要らないかも
  const resJson = JSON.parse(res.getContentText());
  console.log(JSON.stringify(resJson, false, 2));

以上です!良きミュージックライフを。

9
1
0

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
9
1