]> git.lizzy.rs Git - nhentai.git/commitdiff
Add the option to perform a dry-run and only download meta-data / generate file structure
authorLieuwe Leene <lieuwe.leene@gmail.com>
Sun, 16 May 2021 17:44:01 +0000 (19:44 +0200)
committerLieuwe Leene <lieuwe.leene@gmail.com>
Sun, 16 May 2021 17:44:01 +0000 (19:44 +0200)
nhentai/cmdline.py
nhentai/command.py
nhentai/utils.py

index 67140cd950a7f2f70e2e281d559020b8da038761..c7246d20d1e23f2425b726e5eaa8b363db09691c 100644 (file)
@@ -89,6 +89,7 @@ def cmd_parser():
     parser.add_option('--file',  '-f', type='string', dest='file', action='store', help='read gallery IDs from file.')
     parser.add_option('--format', type='string', dest='name_format', action='store',
                       help='format the saved folder name', default='[%i][%a][%t]')
+    parser.add_option('--dry-run', '-r', action='store_true', dest='dryrun', help='Dry run, skip file download.')
 
     # generate options
     parser.add_option('--html', dest='html_viewer', action='store_true',
@@ -214,4 +215,8 @@ def cmd_parser():
         logger.critical('Maximum number of used threads is 15')
         exit(1)
 
+    if args.dryrun and (args.is_cbz or args.is_pdf):
+        logger.critical('Cannot generate PDF or CBZ during dry-run')
+        exit(1)
+
     return args
index bc987fb8852390a6d705e7205be26c2842d6a9f3..92b6793e8a950d2b9b780bf46d168266baac024c 100644 (file)
@@ -89,9 +89,10 @@ def main():
                                 timeout=options.timeout, delay=options.delay)
 
         for doujinshi in doujinshi_list:
+            if not options.dryrun:
+                doujinshi.downloader = downloader
+                doujinshi.download()
 
-            doujinshi.downloader = downloader
-            doujinshi.download()
             if options.is_save_download_history:
                 with DB() as db:
                     db.add_one(doujinshi.id)
index 69772972a2074a2443451889b66da8c04057ae66..c076cf89744f411e2c3ac9125ea888df7ffd6f5e 100644 (file)
@@ -70,6 +70,13 @@ def generate_html(output_dir='.', doujinshi_obj=None, template='default'):
     else:
         doujinshi_dir = '.'
 
+    if not os.path.exists(doujinshi_dir):
+        logger.warning('Path \'{0}\' does not exist, creating.'.format(doujinshi_dir))
+        try:
+            os.makedirs(doujinshi_dir)
+        except EnvironmentError as e:
+            logger.critical('{0}'.format(str(e)))
+
     file_list = os.listdir(doujinshi_dir)
     file_list.sort()
 
@@ -194,7 +201,7 @@ def generate_cbz(output_dir='.', doujinshi_obj=None, rm_origin_dir=False, write_
 def generate_pdf(output_dir='.', doujinshi_obj=None, rm_origin_dir=False):
     try:
         import img2pdf
-        
+
         """Write images to a PDF file using img2pdf."""
         if doujinshi_obj is not None:
             doujinshi_dir = os.path.join(output_dir, doujinshi_obj.filename)
@@ -220,7 +227,7 @@ def generate_pdf(output_dir='.', doujinshi_obj=None, rm_origin_dir=False):
             shutil.rmtree(doujinshi_dir, ignore_errors=True)
 
         logger.log(15, 'PDF file has been written to \'{0}\''.format(doujinshi_dir))
-        
+
     except ImportError:
         logger.error("Please install img2pdf package by using pip.")
 
@@ -236,7 +243,7 @@ def format_filename(s):
     It used to be a whitelist approach allowed only alphabet and a part of symbols.
     but most doujinshi's names include Japanese 2-byte characters and these was rejected.
     so it is using blacklist approach now.
-    if filename include forbidden characters (\'/:,;*?"<>|) ,it replace space character(' '). 
+    if filename include forbidden characters (\'/:,;*?"<>|) ,it replace space character(' ').
     """
     # maybe you can use `--format` to select a suitable filename
     ban_chars = '\\\'/:,;*?"<>|\t'