« get me outta code hell

http-music - Command-line music player + utils (not a server!)
about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/downloaders.js19
-rwxr-xr-xsrc/play.js3
2 files changed, 21 insertions, 1 deletions
diff --git a/src/downloaders.js b/src/downloaders.js
index 527f67d..3f3a427 100644
--- a/src/downloaders.js
+++ b/src/downloaders.js
@@ -33,4 +33,21 @@ function makeYouTubeDownloader() {
   }
 }
 
-module.exports = {makeHTTPDownloader, makeYouTubeDownloader}
+function makeLocalDownloader() {
+  return function(arg, out) {
+    const read = fs.createReadStream(arg)
+    const write = fs.createWriteStream(out)
+
+    return new Promise((resolve, reject) => {
+      write.on('error', err => reject(err))
+      write.on('close', () => resolve())
+      read.pipe(write)
+    })
+  }
+}
+
+module.exports = {
+  makeHTTPDownloader,
+  makeYouTubeDownloader,
+  makeLocalDownloader
+}
diff --git a/src/play.js b/src/play.js
index 38b05d5..bc9324d 100755
--- a/src/play.js
+++ b/src/play.js
@@ -185,6 +185,9 @@ readFile('./playlist.json', 'utf-8')
       } else if (downloaderType === 'youtube') {
         console.log("Using YouTube downloader.")
         downloader = downloaders.makeYouTubeDownloader()
+      } else if (downloaderType === 'local') {
+        console.log("Using local file downloader.")
+        downloader = downloaders.makeLocalDownloader()
       } else {
         console.error("Invalid downloader type: " + downloaderType)
         return