-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrado-download.js
executable file
·75 lines (64 loc) · 1.81 KB
/
rado-download.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/env node
var program = require('commander');
var inquirer = require('inquirer');
var superenv = require('superenv');
var path = require('path-extra');
var _ = require('lodash');
var download = require('./scraper.js').download;
program
.option('-o, --out <path>','where to create show directory')
.option('-s, --skip <n>','how many episodes to skip (offset)')
.option('-n, --get <n>','how many episodes to download')
.usage('<slug> [options]')
.description('Search for shows by title')
.on('--help', printHelp)
.parse(process.argv);
//must merge defaults AFTER reading .rc file
var defaults = {
out : '.'
};
var argv = _.defaults(
program,
superenv('rado'),
defaults
);
var prompts = [];
//ask for # to download & how many to skip if they didn't specify
if(typeof argv.skip === 'undefined'){
prompts.push({
type: 'input',
name: 'skip',
message: 'How many episodes should be skipped? (0 for "start with ep1")',
default: 0
});
}
if(typeof argv.get === 'undefined'){
prompts.push({
type: 'input',
name: 'get',
message: 'How many should be downloaded?',
default: 10
});
}
//prompt if any prompts are present
if(prompts.length){
inquirer.prompt(prompts,function(answers){
runDownload(_.assign(argv,answers));
});
}else{
runDownload(argv);
}
function runDownload(argv){
var showPagePath = argv.args[0]; //first unnamed argument
//path loaded from .rc file not automatically expanded
var outputDir = expandTilde(argv.out);
var skip = parseInt(argv.skip);
var howmany = parseInt(argv.get);
download(showPagePath, outputDir, skip, howmany);
}
function expandTilde(pathStr){
return pathStr.replace(/^~/, path.homedir());
}
function printHelp(){
console.log('`man %s` for more info about this program',program._name);
}