« 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/http-music.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/http-music.js')
-rwxr-xr-xsrc/http-music.js23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/http-music.js b/src/http-music.js
index fee1b79..3d7e217 100755
--- a/src/http-music.js
+++ b/src/http-music.js
@@ -239,7 +239,28 @@ setupDefaultPlaylist('./playlist.json')
         return
       }
 
-      return loopPlay(picker, downloader, playOpts)
+      const play = loopPlay(picker, downloader, playOpts)
+
+      // We're looking to gather standard input one keystroke at a time.
+      process.stdin.setRawMode(true)
+
+      process.stdin.on('data', data => {
+        if (Buffer.from('s').equals(data)) {
+          play.skip()
+        }
+
+        if (
+          Buffer.from('q').equals(data) ||
+          Buffer.from([0x03]).equals(data) || // ^C
+          Buffer.from([0x04]).equals(data) // ^D
+        ) {
+          play.kill()
+          process.stdout.write('\n')
+          process.exit(0)
+        }
+      })
+
+      return play.promise
     } else {
       return activePlaylist
     }