Skip to content

Instantly share code, notes, and snippets.

@4noha
Created June 23, 2017 06:56
Show Gist options
  • Save 4noha/d6a9e5db0421752e5dbda11951fed2cd to your computer and use it in GitHub Desktop.
Save 4noha/d6a9e5db0421752e5dbda11951fed2cd to your computer and use it in GitHub Desktop.
[WIP] slackにNow Playingするやつ(Mac用)。アクセストークンの差異で発言元をbotと自アカウント(未実装)で選べる。
/******************************************************************************
**
** now_playing.js
** Created by Takuya Noaki on 17/06/19.
**
** 使い方1: osascript -l JavaScript now_playing.js ユーザ名
** 使い方2: slackAccessTokenに自分のアクセストークンを設定(未実装)
** osascript -l JavaScript now_playing.js
**
******************************************************************************/
var app = Application.currentApplication();
app.includeStandardAdditions = true;
var iTunes = Application( 'iTunes' );
// 自アカウント投稿機能未実装
var slackAccessToken = 'Your Token';
var webHookURL = 'Webhook URL';
var username = null;
var reqData = {
channel: '#now-playing',
text: null
};
function run( argv ) {
if ( argv.length == 1 ) {
username = argv[0];
} else {
if ( slackAccessToken == 'Your Token' ) {
console.log( 'コマンドライン引数はユーザネームだけお願いします〜!' );
exit();
}
reqData['token'] = slackAccessToken;
}
console.log( 'Ctrl+C で終了' );
for (;;) {
pollingLoop();
delay( 2.0 );
}
}
pollingLoop = function() {
try {
var track = iTunes.currentTrack();
var trackInfo = `Now Playing - ${ track.name() } `;
trackInfo += `${ track.artist() != '' ? ( '/ ' + track.artist() ) : '' } ♫♫ `;
trackInfo += username != null ? `${username}` : '';
if ( reqData['text'] != trackInfo ) {
reqData['text'] = trackInfo;
} else {
// 前回のポーリングと同じ曲
return;
}
} catch( e ) {
// 再生していない
return;
}
console.log( trackInfo );
// Web hookのBotでポスト or ユーザポスト
var termCmd = `curl -s -S -X POST --data-urlencode "payload=${ JSON.stringify( reqData ).replace( /"/g , '\\"' ) }"`
if ( slackAccessToken == 'Your Token' ) {
var res = app.doShellScript( `${termCmd} ${webHookURL}` );
} else {
var res = app.doShellScript( `${termCmd} https://slack.com/api/chat.postMessage` );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment