« get me outta code hell

Only create one converter per instance of DownloadController - http-music - Command-line music player + utils (not a server!)
about summary refs log tree commit diff
path: root/src/loop-play.js
diff options
context:
space:
mode:
authorFlorrie <towerofnix@gmail.com>2017-08-08 19:56:00 -0300
committerFlorrie <towerofnix@gmail.com>2017-08-08 19:56:00 -0300
commit3b84dc71da84264a78c4594db592e99f509a6499 (patch)
tree6f3cdbd7cb41113c110bed445c276d7cc3d232af /src/loop-play.js
parent5e90c82c494567a091ff13a632ec34dd33fa9e1b (diff)
Only create one converter per instance of DownloadController
This also makes the message "using (ffmpeg|avconv) converter" appear once
(upon startup).
Diffstat (limited to 'src/loop-play.js')
-rw-r--r--src/loop-play.js11
1 files changed, 7 insertions, 4 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