diff options
author | liam4 <towerofnix@gmail.com> | 2017-06-04 10:05:15 -0300 |
---|---|---|
committer | liam4 <towerofnix@gmail.com> | 2017-06-04 10:05:35 -0300 |
commit | 507bd7b0c0f185a87b4213b5c95b3b3859fe9528 (patch) | |
tree | 72b3ad05a11f80b6155fddb378148f27d9d5e952 | |
parent | 308fa9eaaad7b48f4362bdc301a81699943b2ede (diff) |
Local file downloader
-rw-r--r-- | src/downloaders.js | 19 | ||||
-rwxr-xr-x | src/play.js | 3 | ||||
-rw-r--r-- | todo.txt | 9 |
3 files changed, 30 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 diff --git a/todo.txt b/todo.txt index 2bed599..53a5991 100644 --- a/todo.txt +++ b/todo.txt @@ -70,3 +70,12 @@ TODO: Volume controls. Who knows how to do this? It might have to be an TODO: Tempfiles, maybe? (Done!) + +TODO: Use NOT the internet as its source, so that it's a bit more general + purpose. This would only take adding a new downloader. + (Done!) + +TODO: Recursive local file playlist crawler. + +TODO: *Requiring* a literal `playlist.json` file doesn't seem quite right, + especially since there's the `--open` option. |