]> git.lizzy.rs Git - nhentai.git/commitdiff
fix for issue #236
authorRicter Z <ricterzheng@gmail.com>
Mon, 2 May 2022 09:01:30 +0000 (17:01 +0800)
committerRicter Z <ricterzheng@gmail.com>
Mon, 2 May 2022 09:01:30 +0000 (17:01 +0800)
nhentai/cmdline.py
nhentai/command.py
nhentai/doujinshi.py
nhentai/downloader.py

index 8cca43d7fcdedf8a07f26850b4fa2b174b47f116..0b5a4219ea9a4cb87deef6375edb7c740ad49043 100644 (file)
@@ -106,6 +106,8 @@ def cmd_parser():
                       help='remove downloaded doujinshi dir when generated CBZ or PDF file.')
     parser.add_option('--meta', dest='generate_metadata', action='store_true',
                       help='generate a metadata file in doujinshi format')
+    parser.add_option('--regenerate-cbz', dest='regenerate_cbz', action='store_true', default=False,
+                      help='regenerate the cbz file if exists')
 
     # nhentai options
     parser.add_option('--cookie', type='str', dest='cookie', action='store',
index e514144ea78466714a3308140d30027f62dca891..2995feecc0d389aad65fbf1716b91fb71c1bc21d 100644 (file)
@@ -91,7 +91,7 @@ def main():
         for doujinshi in doujinshi_list:
             if not options.dryrun:
                 doujinshi.downloader = downloader
-                doujinshi.download()
+                doujinshi.download(regenerate_cbz=options.regenerate_cbz)
 
             if options.generate_metadata:
                 table = doujinshi.table
index b7d03d4ccbe08ef9854967a4afacafe850e29abc..271ec7417e1c401f227bdacf693f1554dc9bbef9 100644 (file)
@@ -72,7 +72,7 @@ class Doujinshi(object):
 
         logger.info(u'Print doujinshi information of {0}\n{1}'.format(self.id, tabulate(self.table)))
 
-    def download(self):
+    def download(self, regenerate_cbz=False):
         logger.info('Starting to download doujinshi: %s' % self.name)
         if self.downloader:
             download_queue = []
@@ -82,7 +82,7 @@ class Doujinshi(object):
             for i in range(1, min(self.pages, len(self.ext)) + 1):
                 download_queue.append('%s/%d/%d.%s' % (IMAGE_URL, int(self.img_id), i, self.ext[i - 1]))
 
-            self.downloader.download(download_queue, self.filename)
+            self.downloader.download(download_queue, self.filename, regenerate_cbz=regenerate_cbz)
         else:
             logger.critical('Downloader has not been loaded')
 
index f0aa9fde874f9c13c13273e3a1a7e458651ce5b7..b0b6a6a31d3c588f6ca40227ff80f227395e7c8a 100644 (file)
@@ -113,13 +113,18 @@ class Downloader(Singleton):
         else:
             logger.log(15, '{0} downloaded successfully'.format(data))
 
-    def download(self, queue, folder=''):
+    def download(self, queue, folder='', regenerate_cbz=False):
         if not isinstance(folder, text):
             folder = str(folder)
 
         if self.path:
             folder = os.path.join(self.path, folder)
 
+        if os.path.exists(folder + '.cbz'):
+            if not regenerate_cbz:
+                logger.warning('CBZ file \'{}.cbz\' exists, ignored download request'.format(folder))
+                return
+
         if not os.path.exists(folder):
             logger.warning('Path \'{0}\' does not exist, creating.'.format(folder))
             try: