diff options
author | Simba Zhang <solderzzc@gmail.com> | 2015-07-30 01:07:22 +0300 |
---|---|---|
committer | Simba Zhang <solderzzc@gmail.com> | 2015-07-30 01:11:21 +0300 |
commit | 45c3250d132b4a680a103a3c86cf5e83b0b65ef4 (patch) | |
tree | 2ee408a2ab9b435dfe16b79d4440cd973db6a8c9 /bin/cmd.js | |
parent | 00786d0ffcc9b0756f02f2e80059f2ce46d9f38e (diff) |
Added command line hook scripts(done/exit).
Give a chance for the programs use webtorrent cli to run scripts when download done or exit.
Diffstat (limited to 'bin/cmd.js')
-rwxr-xr-x | bin/cmd.js | 49 |
1 files changed, 49 insertions, 0 deletions
@@ -45,6 +45,8 @@ var argv = minimist(process.argv.slice(2), { i: 'index', o: 'out', q: 'quiet', + d: 'done', + e: 'exit', h: 'help', v: 'version' }, @@ -93,6 +95,30 @@ if (argv.subtitles) { OMX_EXEC += ' --subtitles ' + argv.subtitles } +function checkPermission(filename){ + try { + var stats = fs.lstatSync(filename) + if (!stats.isFile()) { + errorAndExit("Your script "+ filename +" is not exist") + } + // check if the script has executable permission + if(!(1 & parseInt ((stats.mode & parseInt ("777", 8)).toString (8)[0]))){ + errorAndExit(filename+" don't have executable permission") + } + return fs.realpathSync(filename) + } + catch (err) { + errorAndExit(err) + } +} + +if (argv.done) { + var doneScript = checkPermission(argv.done) +} +if (argv.exit) { + var exitScript = checkPermission(argv.exit) +} + playerName = argv.airplay ? 'Airplay' : argv.chromecast ? 'Chromecast' : argv.xbmc ? 'XBMC' @@ -172,6 +198,8 @@ Options (all): -p, --port [number] change the http port [default: 8000] -b, --blocklist [path] load blocklist file/http url -t, --subtitles [file] load subtitles file + -d, --done [script] run script after download done + -e, --exit [script] run script during exiting -q, --quiet don't show UI on stdout -v, --version print the current version --verbose show detailed torrent protocol info @@ -584,8 +612,28 @@ function drawTorrent (torrent) { clivas.flush(true) } } +function getTorrentInfo(){ + var params = [] + if (client){ + var torrent = client.torrents[0] + if (torrent){ + var torrentFilename=path.join(torrent.storage.path,torrent.infoHash)+'.torrent' + + try { + fs.writeFileSync(torrentFilename, torrent.torrentFile) + } catch(err){ + torrentFilename = "" + } + params.push(torrentFilename) + params.push(path.join(torrent.storage.path,torrent.name)) + params.push(torrent.magnetURI) + } + } + return params +} function torrentDone () { + if (doneScript) cp.execFile(doneScript, getTorrentInfo()).unref() if (!playerName && !serving && argv.out) gracefulExit() } @@ -604,6 +652,7 @@ function gracefulExit () { // destroying can take a while, so print a message to the user clivas.line('\n{green:webtorrent is gracefully exiting...}') + if (exitScript) cp.execFile(exitScript, getTorrentInfo()).unref() client.destroy(function (err) { if (err) return errorAndExit(err) |