diff options
-rw-r--r-- | README.md | 32 | ||||
-rw-r--r-- | package-lock.json | 189 | ||||
-rw-r--r-- | package.json | 8 | ||||
-rwxr-xr-x[-rw-r--r--] | src/crawl-recursive.js (renamed from crawl-recursive.js) | 5 | ||||
-rwxr-xr-x[-rw-r--r--] | src/play.js | 2 |
5 files changed, 231 insertions, 5 deletions
diff --git a/README.md b/README.md index 7e7478b..1a1b75a 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,33 @@ $ python3 -m http.server <some_port> # On the client; that is, the device with http-music: $ cd http-music $ yarn # to install Node.js dependencies; you'll also need `avconv` and `play` (sox). -$ node crawl-recursive.js <server_ip> > playlist.json -$ node play.js # Go! +$ npm run crawl-recursive -- <server_ip> > playlist.json +$ node . # Go! ``` -**Zomg command line arguments????** — Yes; read the end of the `play.js` file. -There's a bunch of JS-comment-based documentation there. +**Zomg command line arguments documentation????** — Yes; read the end of the +`play.js` file. There's a bunch of JS-comment-based documentation there. + +There's actually three proper ways to run `http-music`: + +* **Run `$ npm link` and then use `$ http-music`.** This gives you the + advantage of having a proper command you can use anywhere; however it does + mean installing to /usr/bin (or wherever your `npm-link` command puts + things). + +* **Run `$ node .` while `cd`'d into `http-music`.** This is essentially the + same as using `npm-link`, but it requires you to be in the repository folder. + That's alright if you're developing, or just directly downloaded the entire + repository, but probably isn't otherwise useful. + +* **Run `$ npm run play`.** (You might need to do `$ npm run http-music play`.) + This way *works*, but it's not suggested; command line arguments need to be + passed after `--`, e.g. `npm run play -- -c -k CoolArtist123` instead of + `node . -c -k CoolArtist123` or `http-music -c -k CoolArtist123`. Use + whatever you prefer, I guess. + +**If you're running with `npm run`,** you need to use `--` before any of your +own options, e.g. `npm run play -- -c -k CoolArtist123`. I know, it looks +stupid; but it's really just the way `npm run` works. You're probably better +off with `node .` while `cd`'d into the `http-music` directory, or maybe you'd +rather `npm link` it so you can use it anywhere. diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4bc7556 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,189 @@ +{ + "name": "http-music", + "version": "0.0.1", + "lockfileVersion": 1, + "dependencies": { + "@types/node": { + "version": "6.0.73", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.73.tgz", + "integrity": "sha1-hdxLtvElN3x13dJRmh7rY/Ck7XA=" + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "cheerio": { + "version": "1.0.0-rc.1", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.1.tgz", + "integrity": "sha1-KvNzOeq3E+9rcs3pjO+mcrh2Qf4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=" + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=" + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=" + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=" + }, + "iconv-lite": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.17.tgz", + "integrity": "sha1-T9qjs4rLwsAxsEXQ7c3+HsqxjI0=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "node-fetch": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.0.tgz", + "integrity": "sha1-P/bFZUT5t/sAaCM4u1Xub1SooO8=" + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=" + }, + "parse5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz", + "integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=" + }, + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + }, + "sanitize-filename": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", + "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=" + }, + "string_decoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=" + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" + }, + "tempy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.1.0.tgz", + "integrity": "sha1-hSdBPNBxAINPzJy7gkK+lboOH+4=" + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=" + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=" + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + } + } +} diff --git a/package.json b/package.json index 804df46..86856d9 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,14 @@ "name": "http-music", "version": "0.0.1", "main": "src/play.js", + "scripts": { + "play": "node src/play.js", + "crawl-recursive": "node src/crawl-recursive" + }, + "bin": { + "http-music": "./src/play.js", + "http-music-crawl-recursive": "./src/crawl-recursive.js" + }, "dependencies": { "cheerio": "^1.0.0-rc.1", "node-fetch": "^1.7.0", diff --git a/crawl-recursive.js b/src/crawl-recursive.js index d53f7d1..2656279 100644..100755 --- a/crawl-recursive.js +++ b/src/crawl-recursive.js @@ -1,3 +1,5 @@ +#!/usr/bin/env node + 'use strict' const MAX_DOWNLOAD_ATTEMPTS = 5 @@ -74,7 +76,8 @@ function getHTMLLinks(text) { } if (process.argv.length === 2) { - console.log("Usage: crawl-recursive http://example.com/example/path") + console.log("Usage: http-music-crawl-recursive http://.../example/path/") + console.log("..or, npm run crawl-recursive -- http://...") } else { let url = process.argv[2] diff --git a/src/play.js b/src/play.js index 5e3e04b..2e47fba 100644..100755 --- a/src/play.js +++ b/src/play.js @@ -1,3 +1,5 @@ +#!/usr/bin/env node + 'use strict' const fs = require('fs') |