diff options
author | Florrie <towerofnix@gmail.com> | 2017-10-24 17:33:22 -0300 |
---|---|---|
committer | Florrie <towerofnix@gmail.com> | 2017-10-24 17:34:52 -0300 |
commit | e447c564e9823a32c25aa1c9309c9b13d5225933 (patch) | |
tree | a57eeb790830a6ca632bb73718a3d5d4ddbd9356 /src | |
parent | 85ecc1b72bd01cb9da684a56126bb9239679d513 (diff) |
Add --open-playlist-string option
Lets playlists be passed to `play` by an actual string argument; e.g. --playlist-string '{"tracks": [...]}'. Could work well with http-music's own crawler utilities (e.g. --playlist-string '{"source": ["crawl-local", "."]}' or with external ones (e.g. --playlist-string "$(cool-crawler-utilith.sh)". At the moment the only workaround is to use a temporary file to store the playlist in, or to pipe the output of the crawler command (which might be `echo`!) to http-music and use /dev/stdin as the --playlist-file value.. which obviously isn't cross-platform or practical! I'd like to have some aliases in the future since --open-playlist-string isn't really easy to type.
Diffstat (limited to 'src')
-rwxr-xr-x | src/play.js | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/play.js b/src/play.js index 6d4456d..8f52e63 100755 --- a/src/play.js +++ b/src/play.js @@ -104,6 +104,9 @@ async function main(args) { ] async function openPlaylist(arg, silent = false) { + // Takes a playlist download argument and loads it as the source and + // active playlist. + let playlistText if (!silent) { @@ -121,7 +124,16 @@ async function main(args) { return false } - const openedPlaylist = updatePlaylistFormat(JSON.parse(playlistText)) + const importedPlaylist = JSON.parse(playlistText) + + await loadPlaylist(importedPlaylist) + } + + async function loadPlaylist(importedPlaylist) { + // Takes an actual playlist object and sets it up as the source and active + // playlist. + + const openedPlaylist = updatePlaylistFormat(importedPlaylist) // We also want to de-smart-ify (stupidify? - simplify?) the playlist. const processedPlaylist = await processSmartPlaylist(openedPlaylist) @@ -198,6 +210,14 @@ async function main(args) { '-open': util => util.alias('-open-playlist'), 'o': util => util.alias('-open-playlist'), + '-open-playlist-string': async function(util) { + // --open-playlist-string <string> + // Opens a playlist, using the given string as the JSON text of the + // playlist. This sets the source playlist. + + await loadPlaylist(JSON.parse(util.nextArg())) + }, + '-write-playlist': function(util) { // --write-playlist <file> (alias: --write, -w, --save) // Writes the active playlist to a file. This file can later be used |