Created
          June 23, 2017 06:56 
        
      - 
      
- 
        Save 4noha/d6a9e5db0421752e5dbda11951fed2cd to your computer and use it in GitHub Desktop. 
    [WIP] slackにNow Playingするやつ(Mac用)。アクセストークンの差異で発言元をbotと自アカウント(未実装)で選べる。
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | /****************************************************************************** | |
| ** | |
| ** 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