Browse Source

Add a crude debug mechanism

Godzil 5 years ago
parent
commit
66670547b9
4 changed files with 46 additions and 4 deletions
  1. 12 0
      src/batch.ts
  2. 1 0
      src/interface/IConfig.d.ts
  3. 19 1
      src/log.ts
  4. 14 3
      src/series.ts

+ 12 - 0
src/batch.ts

@@ -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);
 }

+ 1 - 0
src/interface/IConfig.d.ts

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

+ 19 - 1
src/log.ts

@@ -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;
+  });
+}

+ 14 - 3
src/series.ts

@@ -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 + ')'));
       }