From 3b84dc71da84264a78c4594db592e99f509a6499 Mon Sep 17 00:00:00 2001 From: Florrie Date: Tue, 8 Aug 2017 19:56:00 -0300 Subject: Only create one converter per instance of DownloadController This also makes the message "using (ffmpeg|avconv) converter" appear once (upon startup). --- src/loop-play.js | 11 +++++++---- src/play.js | 4 ++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/loop-play.js b/src/loop-play.js index 7fec995..66de65a 100644 --- a/src/loop-play.js +++ b/src/loop-play.js @@ -164,6 +164,10 @@ class DownloadController extends EventEmitter { this.playlist = playlist } + async init() { + this.converter = await makeConverter('wav') + } + waitForDownload() { // Returns a promise that resolves when a download is // completed. Note that this isn't necessarily the download @@ -226,10 +230,8 @@ class DownloadController extends EventEmitter { let convertFile - const converter = await makeConverter('wav') - try { - convertFile = await converter(downloadFile) + convertFile = await this.converter(downloadFile) } catch(err) { this.emit('errored', err) return @@ -417,7 +419,7 @@ class PlayController extends EventEmitter { } } -module.exports = function loopPlay( +module.exports = async function startLoopPlay( playlist, picker, playerCommand = 'mpv', playOpts = [] ) { // Looping play function. Takes one argument, the "picker" function, @@ -447,6 +449,7 @@ module.exports = function loopPlay( } const downloadController = new DownloadController(playlist) + await downloadController.init() const playController = new PlayController( picker, player, playlist, downloadController diff --git a/src/play.js b/src/play.js index 6b9f26c..680e326 100755 --- a/src/play.js +++ b/src/play.js @@ -8,7 +8,7 @@ const fs = require('fs') const fetch = require('node-fetch') const commandExists = require('./command-exists') const pickers = require('./pickers') -const loopPlay = require('./loop-play') +const startLoopPlay = require('./loop-play') const processArgv = require('./process-argv') const processSmartPlaylist = require('./smart-playlist') @@ -326,7 +326,7 @@ async function main(args) { playController, downloadController, player - } = loopPlay(activePlaylist, picker, playerCommand, playOpts) + } = await startLoopPlay(activePlaylist, picker, playerCommand, playOpts) // We're looking to gather standard input one keystroke at a time. // But that isn't *always* possible, e.g. when piping into the http-music -- cgit 1.3.0-6-gf8a5