6 Commits

Author SHA1 Message Date
Godzil
d549d46979 1.3.6 2018-07-30 22:47:37 +01:00
Godzil
3f5b4b2585 Update readme 2018-07-30 22:47:37 +01:00
Godzil
1d596b02f7 Cleaning up the command line parameter to properly use default values 2018-07-30 22:47:37 +01:00
Godzil
cee53fb113 Fix for #78 (and a bit of cleanup) 2018-07-30 22:47:37 +01:00
Godzil
1e56cab73f Move error displaying when downloading an episode fail. 2018-07-30 22:47:37 +01:00
Godzil
0dc3c1e8e2 Update a bit the bug report template
(Commit #200!)
2018-07-30 22:47:37 +01:00
8 changed files with 46 additions and 45 deletions

View File

@@ -14,10 +14,12 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem. If applicable, add screenshots to help explain your problem.
**Please fill theses informations:** **Please fill theses informations:**
(Add a X between brackets to make them ticked) (Add a X between brackets to make them ticked if relevant)
- OS: [e.g:. Windows 10, Mac OS X 10.13, ...] - OS: [e.g:. Windows 10, Mac OS X 10.13, ...]
- [ ] I'm using the latest version of Crunchy - [ ] I'm using the latest version of Crunchy
- [ ] I have a premium accrount on CR - [ ] I have a premium accrount on CR
- [ ] I am using a VPN
- My region in the world (country or continent):
- Serie you get a problem with (and specify which episode if it is specific to one): - Serie you get a problem with (and specify which episode if it is specific to one):
- The command line you are running Crunchy with: - The command line you are running Crunchy with:
- The message Crunchy is giving you, if any: - The message Crunchy is giving you, if any:
@@ -29,4 +31,5 @@ If applicable, add screenshots to help explain your problem.
Add any other context about the problem here. Add any other context about the problem here.
_Also don't hesitate to add labels you feel apropriate on your report._ _Also don't hesitate to add labels you feel apropriate on your report._
_Please don't edit logs if you are adding them, apart from removing sensitive informations like login/password_

View File

@@ -66,27 +66,27 @@ The [command-line interface](http://en.wikipedia.org/wiki/Command-line_interface
Options: Options:
-V, --version output the version number -V, --version output the version number
-p, --pass <s> The password. -p, --pass <s> The password.
-u, --user <s> The e-mail address or username. -u, --user <s> The e-mail address or username.
-c, --cache Disables the cache. -c, --cache Disables the cache.
-m, --merge Disables merging subtitles and videos. -m, --merge Disables merging subtitles and videos.
-e, --episodes <s> Episode list. Read documentation on how to use -e, --episodes <s> Episode list. Read documentation on how to use
-f, --format <s> The subtitle format. (Default: ass) -f, --format <s> The subtitle format. (default: ass)
-o, --output <s> The output path. -o, --output <s> The output path.
-s, --series <s> The series override. -s, --series <s> The series name override.
-n, --filename <s> The name override. -n, --nametmpl <s> Output name template (default: {SERIES_TITLE} - s{SEASON_NUMBER}e{EPISODE_NUMBER} - [{TAG}])
-t, --tag <s> The subgroup. (Default: CrunchyRoll) (default: CrunchyRoll) -t, --tag <s> The subgroup. (default: CrunchyRoll)
-r, --resolution <s> The video resolution. (Default: 1080 (360, 480, 720, 1080)) (default: 1080) -r, --resolution <s> The video resolution. (valid: 360, 480, 720, 1080) (default: 1080)
-g, --rebuildcrp Rebuild the crpersistant file. -b, --batch <s> Batch file (default: CrunchyRoll.txt)
-b, --batch <s> Batch file (default: CrunchyRoll.txt) --verbose Make tool verbose
--verbose Make tool verbose --rebuildcrp Rebuild the crpersistant file.
--retry <i> Number or time to retry fetching an episode. Default: 5 (default: 5) --retry <i> Number or time to retry fetching an episode. (default: 5)
-h, --help output usage information -h, --help output usage information
#### Batch-mode #### Batch-mode
When no sequence of series addresses is provided, the batch-mode source file will be read (which is *CrunchyRoll.txt* in the current work directory. Each line in this file is processed contain the URL of a series and can support some of the command line paramter (like *-e*). This makes it ideal to manage a large sequence of series addresses. When no sequence of series addresses is provided, the batch-mode source file will be read (which is *CrunchyRoll.txt* in the current work directory. Each line in this file is processed contain the URL of a series and can support some of the command line parameter (like `-e`). This makes it ideal to manage a large sequence of series addresses.
#### Examples #### Examples
@@ -109,6 +109,7 @@ Download episode 42 of *Fairy Tail* to `C:\Anime`:
*Notice the '@' in front of the URL, it is there to tell Crunchy that the URL is an episode URL and not a series URL.* *Notice the '@' in front of the URL, it is there to tell Crunchy that the URL is an episode URL and not a series URL.*
or or
crunchy --output C:\Anime http://www.crunchyroll.com/fairy-tail -e 42 crunchy --output C:\Anime http://www.crunchyroll.com/fairy-tail -e 42
Download episode 10 to 42 (both included) of *Fairy Tail*: Download episode 10 to 42 (both included) of *Fairy Tail*:

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{ {
"name": "crunchy", "name": "crunchy",
"version": "1.3.5", "version": "1.3.6",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@@ -15,7 +15,7 @@
"engines": { "engines": {
"node": ">=5.0" "node": ">=5.0"
}, },
"version": "1.3.5", "version": "1.3.6",
"bin": { "bin": {
"crunchy": "./bin/crunchy", "crunchy": "./bin/crunchy",
"crunchy.sh": "./bin/crunchy.sh" "crunchy.sh": "./bin/crunchy.sh"

View File

@@ -265,17 +265,16 @@ function parse(args: string[]): IConfigLine
// Episode filter // Episode filter
.option('-e, --episodes <s>', 'Episode list. Read documentation on how to use') .option('-e, --episodes <s>', 'Episode list. Read documentation on how to use')
// Settings // Settings
.option('-f, --format <s>', 'The subtitle format. (Default: ass)') .option('-f, --format <s>', 'The subtitle format.', 'ass')
.option('-o, --output <s>', 'The output path.') .option('-o, --output <s>', 'The output path.')
.option('-s, --series <s>', 'The series override.') .option('-s, --series <s>', 'The series name override.')
.option('-n, --filename <s>', 'The name override.') .option('-n, --nametmpl <s>', 'Output name template', '{SERIES_TITLE} - s{SEASON_NUMBER}e{EPISODE_NUMBER} - [{TAG}]')
.option('-t, --tag <s>', 'The subgroup. (Default: CrunchyRoll)', 'CrunchyRoll') .option('-t, --tag <s>', 'The subgroup.', 'CrunchyRoll')
.option('-r, --resolution <s>', 'The video resolution. (Default: 1080 (360, 480, 720, 1080))', .option('-r, --resolution <s>', 'The video resolution. (valid: 360, 480, 720, 1080)', '1080')
'1080')
.option('-g, --rebuildcrp', 'Rebuild the crpersistant file.')
.option('-b, --batch <s>', 'Batch file', 'CrunchyRoll.txt') .option('-b, --batch <s>', 'Batch file', 'CrunchyRoll.txt')
.option('--verbose', 'Make tool verbose') .option('--verbose', 'Make tool verbose')
.option('--debug', 'Create a debug file. Use only if requested!') .option('--debug', 'Create a debug file. Use only if requested!')
.option('--retry <i>', 'Number or time to retry fetching an episode. Default: 5', 5) .option('--rebuildcrp', 'Rebuild the crpersistant file.')
.option('--retry <i>', 'Number or time to retry fetching an episode.', 5)
.parse(args); .parse(args);
} }

View File

@@ -74,11 +74,10 @@ function sanitiseFileName(str: string)
*/ */
function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, done: (err: Error, ign: boolean) => void) function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, done: (err: Error, ign: boolean) => void)
{ {
let series = config.series || page.series; const serieFolder = sanitiseFileName(config.series || page.series);
series = sanitiseFileName(series); let fileName = sanitiseFileName(generateName(config, page));
let fileName = sanitiseFileName(name(config, page, series, '')); let filePath = path.join(config.output || process.cwd(), serieFolder, fileName);
let filePath = path.join(config.output || process.cwd(), series, fileName);
if (fileExist(filePath + '.mkv')) if (fileExist(filePath + '.mkv'))
{ {
@@ -95,8 +94,8 @@ function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, d
do do
{ {
count = count + 1; count = count + 1;
fileName = sanitiseFileName(name(config, page, series, '-' + count)); fileName = sanitiseFileName(generateName(config, page, '-' + count));
filePath = path.join(config.output || process.cwd(), series, fileName); filePath = path.join(config.output || process.cwd(), serieFolder, fileName);
} while (fileExist(filePath + '.mkv')); } while (fileExist(filePath + '.mkv'));
log.warn('Renaming to \'' + fileName + '\'...'); log.warn('Renaming to \'' + fileName + '\'...');
@@ -114,6 +113,7 @@ function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, d
{ {
if (errM) if (errM)
{ {
log.dispEpisode(fileName, 'Error...', true);
return done(errM, false); return done(errM, false);
} }
@@ -122,6 +122,7 @@ function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, d
{ {
if (errDS) if (errDS)
{ {
log.dispEpisode(fileName, 'Error...', true);
return done(errDS, false); return done(errDS, false);
} }
@@ -133,6 +134,7 @@ function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, d
{ {
if (errDV) if (errDV)
{ {
log.dispEpisode(fileName, 'Error...', true);
return done(errDV, false); return done(errDV, false);
} }
@@ -148,6 +150,7 @@ function download(config: IConfig, page: IEpisodePage, player: IEpisodePlayer, d
{ {
if (errVM) if (errVM)
{ {
log.dispEpisode(fileName, 'Error...', true);
return done(errVM, false); return done(errVM, false);
} }
@@ -211,19 +214,16 @@ function downloadVideo(config: IConfig, page: IEpisodePage, player: IEpisodePla
/** /**
* Names the file based on the config, page, series and tag. * Names the file based on the config, page, series and tag.
*/ */
function name(config: IConfig, page: IEpisodePage, series: string, extra: string) function generateName(config: IConfig, page: IEpisodePage, extra = '')
{ {
const episodeNum = parseInt(page.episode, 10); const episodeNum = parseInt(page.episode, 10);
const volumeNum = parseInt(page.volume, 10); const volumeNum = parseInt(page.volume, 10);
const episode = (episodeNum < 10 ? '0' : '') + page.episode; const episode = (episodeNum < 10 ? '0' : '') + page.episode;
const volume = (volumeNum < 10 ? '0' : '') + page.volume; const volume = (volumeNum < 10 ? '0' : '') + page.volume;
const tag = config.tag || 'CrunchyRoll'; const tag = config.tag || 'CrunchyRoll';
const series = config.series || page.series;
if (!page.filename) { return config.nametmpl
return page.series + ' - s' + volume + 'e' + episode + ' - [' + tag + ']' + extra;
}
return page.filename
.replace(/{EPISODE_ID}/g, page.id.toString()) .replace(/{EPISODE_ID}/g, page.id.toString())
.replace(/{EPISODE_NUMBER}/g, episode) .replace(/{EPISODE_NUMBER}/g, episode)
.replace(/{SEASON_NUMBER}/g, volume) .replace(/{SEASON_NUMBER}/g, volume)

View File

@@ -10,7 +10,7 @@ interface IConfig {
format?: string; format?: string;
output?: string; output?: string;
series?: string; series?: string;
filename?: string; nametmpl?: string;
tag?: string; tag?: string;
resolution?: string; resolution?: string;
video_format?: string; video_format?: string;

View File

@@ -63,7 +63,6 @@ export default function(config: IConfig, task: IConfigTask, done: (err: Error) =
{ {
if (page.episodes[i].retry <= 0) if (page.episodes[i].retry <= 0)
{ {
log.dispEpisode(config.filename, 'Error...', true);
log.error(errD); log.error(errD);
log.error('Cannot fetch episode "s' + page.episodes[i].volume + 'e' + page.episodes[i].episode + log.error('Cannot fetch episode "s' + page.episodes[i].volume + 'e' + page.episodes[i].episode +
'", please rerun later'); '", please rerun later');
@@ -72,7 +71,6 @@ export default function(config: IConfig, task: IConfigTask, done: (err: Error) =
} }
else else
{ {
log.dispEpisode(config.filename, 'Error...', true);
if ((config.verbose) || (config.debug)) if ((config.verbose) || (config.debug))
{ {
if (config.debug) if (config.debug)