UNPKG

node-radio-mini

Version:

A terminal based radio streaming solution made entirely in Node.js

90 lines (71 loc) 2.12 kB
'use strict'; const Stream = require('./streams'); const View = require('./views'); const Ut = require('./utils'); const { navigator: playlistNavigator, action: sendToQueueWindow, preFocus: playlistPreFocus, postFocus: playlistPostFocus, circleList } = View.playlistKeyListener; const { navigator: queueNavigator, action: removeFromQueueWindow, preFocus: queuePreFocus, postFocus: queuePostFocus, changeOrder: changeOrderQueueWindow } = View.queueKeyListener; function renderView() { const { playlist, queue } = View.init(); Stream.init(); playlist.key('k', playlistNavigator); playlist.key('k', circleList); playlist.key('l', playlistNavigator); playlist.key('l', circleList); playlist.key('enter', () => { const { content } = sendToQueueWindow(); Stream.sendToQueueArray(content); }); playlist.key('q', () => { playlistPostFocus(); queuePreFocus(); queue.focus(); View.setControlTipsQueue(); View.render(); }); const changeOrder = key => { const { index1, index2 } = changeOrderQueueWindow(key); Stream.changeOrderQueueArray(index1, index2); }; queue.key('a', changeOrder); queue.key('z', changeOrder); queue.key('k', queueNavigator); queue.key('l', queueNavigator); queue.key('d', () => { const { index } = removeFromQueueWindow(); if (index) { Stream.removeFromQueueArray(index); } queuePreFocus(); View.render(); }); queue.key('p', () => { queuePostFocus(); playlistPreFocus(); playlist.focus(); View.setControlTipsPlaylist(); View.render(); }); Stream.radioEvents.on('play', (song) => { removeFromQueueWindow({ fromTop: true }); queuePreFocus(); View.createChildAndAppendToPlaying(song); View.render(); }); View.fillPlaylistAndRender(Ut.readSongs(), playlistPreFocus); } exports.startEngine = function startEngine() { renderView(); Stream.startStreaming(); };