Add a crude debug mechanism

This commit is contained in:
Godzil 2018-07-14 21:23:04 +01:00
parent 987e424324
commit 66670547b9
4 changed files with 46 additions and 4 deletions

View File

@ -44,6 +44,17 @@ export default function(args: string[], done: (err?: Error) => void)
config.video_quality = resol_table['1080'].quality;
}
if (config.debug)
{
/* Ugly but meh */
const tmp = JSON.parse(JSON.stringify(config));
tmp.pass = 'obfuscated';
tmp.user = 'obfustated';
tmp.rawArgs = undefined;
tmp.options = undefined;
log.dumpToDebug('Config', JSON.stringify(tmp), true);
}
tasks(config, batchPath, (err, tasksArr) =>
{
if (err)
@ -203,6 +214,7 @@ function parse(args: string[]): IConfigLine
.option('-g, --rebuildcrp', 'Rebuild the crpersistant file.')
.option('-b, --batch <s>', 'Batch file', 'CrunchyRoll.txt')
.option('--verbose', 'Make tool verbose')
.option('--debug', 'Create a debug file. Use only if requested!')
.option('--retry <i>', 'Number or time to retry fetching an episode. Default: 5', 5)
.parse(args);
}

View File

@ -17,5 +17,6 @@ interface IConfig {
rebuildcrp?: boolean;
batch?: string;
verbose?: boolean;
debug?: boolean;
retry?: number;
}

View File

@ -1,7 +1,8 @@
'use strict';
import os = require('os');
import fs = require('fs-extra');
export function error(str: string)
export function error(str: string|Error)
{
/* Do fancy output */
console.error(' \x1B[1;31m* ERROR\x1B[0m: ' + str);
@ -35,3 +36,20 @@ export function dispEpisode(name: string, status: string, addNL: boolean)
console.log('');
}
}
export function dumpToDebug(what: string, data: any, create = false)
{
if (create)
{
fs.writeFile('debug.txt', '>>>>>>>> ' + what + ':\n' + data + '\n<<<<<<<<\n', (err) =>
{
if (err) throw err;
});
return;
}
fs.appendFile('debug.txt', '>>>>>>>> ' + what + ':\n' + data + '\n<<<<<<<<\n', (err) =>
{
if (err) throw err;
});
}

View File

@ -59,7 +59,7 @@ export default function(config: IConfig, address: string, done: (err: Error) =>
if (page.episodes[i].retry <= 0)
{
log.dispEpisode(config.filename, 'Error...', true);
console.error(errD);
log.error(errD);
log.error('Cannot fetch episode "s' + page.episodes[i].volume + 'e' + page.episodes[i].episode +
'", please rerun later');
/* Go to the next on the list */
@ -68,9 +68,15 @@ export default function(config: IConfig, address: string, done: (err: Error) =>
else
{
log.dispEpisode(config.filename, 'Error...', true);
if (config.verbose)
if ((config.verbose) || (config.debug))
{
console.error(errD);
if (config.debug)
{
log.dumpToDebug('series address', address);
log.dumpToDebug('series error', errD.stack || errD);
log.dumpToDebug('series data', JSON.stringify(page));
}
log.error(errD);
}
log.warn('Retrying to fetch episode "s' + page.episodes[i].volume + 'e' + page.episodes[i].episode +
'" - Retry ' + page.episodes[i].retry + ' / ' + config.retry);
@ -161,6 +167,11 @@ function page(config: IConfig, address: string, done: (err: Error, result?: ISer
const title = $('span[itemprop=name]').text();
if (!title) {
if (config.debug)
{
log.dumpToDebug('inval page addr', address);
log.dumpToDebug('inval page data', $);
}
return done(new Error('Invalid page.(' + address + ')'));
}