« get me outta code hell

Local file downloader - 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:
authorliam4 <towerofnix@gmail.com>2017-06-04 10:05:15 -0300
committerliam4 <towerofnix@gmail.com>2017-06-04 10:05:35 -0300
commit507bd7b0c0f185a87b4213b5c95b3b3859fe9528 (patch)
tree72b3ad05a11f80b6155fddb378148f27d9d5e952 /src
parent308fa9eaaad7b48f4362bdc301a81699943b2ede (diff)
Local file downloader
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