mirror of
				https://github.com/RicterZ/nhentai.git
				synced 2025-11-04 02:50:55 +01:00 
			
		
		
		
	@@ -154,8 +154,9 @@ Other options:
 | 
				
			|||||||
      --no-html             don't generate HTML after downloading
 | 
					      --no-html             don't generate HTML after downloading
 | 
				
			||||||
      --gen-main            generate a main viewer contain all the doujin in the folder
 | 
					      --gen-main            generate a main viewer contain all the doujin in the folder
 | 
				
			||||||
      -C, --cbz             generate Comic Book CBZ File
 | 
					      -C, --cbz             generate Comic Book CBZ File
 | 
				
			||||||
 | 
					      -P --pdf              generate PDF file
 | 
				
			||||||
      --rm-origin-dir       remove downloaded doujinshi dir when generated CBZ
 | 
					      --rm-origin-dir       remove downloaded doujinshi dir when generated CBZ
 | 
				
			||||||
                            file.
 | 
					                            or PDF file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # nHentai options
 | 
					      # nHentai options
 | 
				
			||||||
      --cookie=COOKIE       set cookie of nhentai to bypass Google recaptcha
 | 
					      --cookie=COOKIE       set cookie of nhentai to bypass Google recaptcha
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -87,8 +87,10 @@ def cmd_parser():
 | 
				
			|||||||
                      help='generate a main viewer contain all the doujin in the folder')
 | 
					                      help='generate a main viewer contain all the doujin in the folder')
 | 
				
			||||||
    parser.add_option('--cbz', '-C', dest='is_cbz', action='store_true',
 | 
					    parser.add_option('--cbz', '-C', dest='is_cbz', action='store_true',
 | 
				
			||||||
                      help='generate Comic Book CBZ File')
 | 
					                      help='generate Comic Book CBZ File')
 | 
				
			||||||
 | 
					    parser.add_option('--pdf', '-P', dest='is_pdf', action='store_true',
 | 
				
			||||||
 | 
					                      help='generate PDF file')
 | 
				
			||||||
    parser.add_option('--rm-origin-dir', dest='rm_origin_dir', action='store_true', default=False,
 | 
					    parser.add_option('--rm-origin-dir', dest='rm_origin_dir', action='store_true', default=False,
 | 
				
			||||||
                      help='remove downloaded doujinshi dir when generated CBZ file.')
 | 
					                      help='remove downloaded doujinshi dir when generated CBZ or PDF file.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # nhentai options
 | 
					    # nhentai options
 | 
				
			||||||
    parser.add_option('--cookie', type='str', dest='cookie', action='store',
 | 
					    parser.add_option('--cookie', type='str', dest='cookie', action='store',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@ from nhentai.doujinshi import Doujinshi
 | 
				
			|||||||
from nhentai.downloader import Downloader
 | 
					from nhentai.downloader import Downloader
 | 
				
			||||||
from nhentai.logger import logger
 | 
					from nhentai.logger import logger
 | 
				
			||||||
from nhentai.constant import BASE_URL
 | 
					from nhentai.constant import BASE_URL
 | 
				
			||||||
from nhentai.utils import generate_html, generate_cbz, generate_main_html, check_cookie, signal_handler, DB
 | 
					from nhentai.utils import generate_html, generate_cbz, generate_main_html, generate_pdf, check_cookie, signal_handler, DB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def main():
 | 
					def main():
 | 
				
			||||||
@@ -82,10 +82,12 @@ def main():
 | 
				
			|||||||
                with DB() as db:
 | 
					                with DB() as db:
 | 
				
			||||||
                    db.add_one(doujinshi.id)
 | 
					                    db.add_one(doujinshi.id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if not options.is_nohtml and not options.is_cbz:
 | 
					            if not options.is_nohtml and not options.is_cbz and not options.is_pdf:
 | 
				
			||||||
                generate_html(options.output_dir, doujinshi)
 | 
					                generate_html(options.output_dir, doujinshi)
 | 
				
			||||||
            elif options.is_cbz:
 | 
					            elif options.is_cbz:
 | 
				
			||||||
                generate_cbz(options.output_dir, doujinshi, options.rm_origin_dir)
 | 
					                generate_cbz(options.output_dir, doujinshi, options.rm_origin_dir)
 | 
				
			||||||
 | 
					            elif options.is_pdf:
 | 
				
			||||||
 | 
					                generate_pdf(options.output_dir, doujinshi, options.rm_origin_dir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if options.main_viewer:
 | 
					        if options.main_viewer:
 | 
				
			||||||
            generate_main_html(options.output_dir)
 | 
					            generate_main_html(options.output_dir)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,7 @@ import zipfile
 | 
				
			|||||||
import shutil
 | 
					import shutil
 | 
				
			||||||
import requests
 | 
					import requests
 | 
				
			||||||
import sqlite3
 | 
					import sqlite3
 | 
				
			||||||
 | 
					import img2pdf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from nhentai import constant
 | 
					from nhentai import constant
 | 
				
			||||||
from nhentai.logger import logger
 | 
					from nhentai.logger import logger
 | 
				
			||||||
@@ -193,6 +194,34 @@ def generate_cbz(output_dir='.', doujinshi_obj=None, rm_origin_dir=False, write_
 | 
				
			|||||||
    logger.log(15, 'Comic Book CBZ file has been written to \'{0}\''.format(doujinshi_dir))
 | 
					    logger.log(15, 'Comic Book CBZ file has been written to \'{0}\''.format(doujinshi_dir))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def generate_pdf(output_dir='.', doujinshi_obj=None, rm_origin_dir=False):
 | 
				
			||||||
 | 
					    """Write images to a PDF file using img2pdf."""
 | 
				
			||||||
 | 
					    if doujinshi_obj is not None:
 | 
				
			||||||
 | 
					        doujinshi_dir = os.path.join(output_dir, doujinshi_obj.filename)
 | 
				
			||||||
 | 
					        pdf_filename = os.path.join(
 | 
				
			||||||
 | 
					            os.path.join(doujinshi_dir, '..'),
 | 
				
			||||||
 | 
					            '{}.pdf'.format(doujinshi_obj.filename)
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        pdf_filename = './doujinshi.pdf'
 | 
				
			||||||
 | 
					        doujinshi_dir = '.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    file_list = os.listdir(doujinshi_dir)
 | 
				
			||||||
 | 
					    file_list.sort()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    logger.info('Writing PDF file to path: {}'.format(pdf_filename))
 | 
				
			||||||
 | 
					    with open(pdf_filename, 'wb') as pdf_f:
 | 
				
			||||||
 | 
					        full_path_list = (
 | 
				
			||||||
 | 
					            [os.path.join(doujinshi_dir, image) for image in file_list]
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        pdf_f.write(img2pdf.convert(full_path_list))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if rm_origin_dir:
 | 
				
			||||||
 | 
					        shutil.rmtree(doujinshi_dir, ignore_errors=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    logger.log(15, 'PDF file has been written to \'{0}\''.format(doujinshi_dir))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def format_filename(s):
 | 
					def format_filename(s):
 | 
				
			||||||
    """Take a string and return a valid filename constructed from the string.
 | 
					    """Take a string and return a valid filename constructed from the string.
 | 
				
			||||||
Uses a whitelist approach: any characters not present in valid_chars are
 | 
					Uses a whitelist approach: any characters not present in valid_chars are
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,4 +4,5 @@ BeautifulSoup4>=4.0.0
 | 
				
			|||||||
threadpool>=1.2.7
 | 
					threadpool>=1.2.7
 | 
				
			||||||
tabulate>=0.7.5
 | 
					tabulate>=0.7.5
 | 
				
			||||||
future>=0.15.2
 | 
					future>=0.15.2
 | 
				
			||||||
 | 
					img2pdf>=0.3.6
 | 
				
			||||||
iso8601 >= 0.1
 | 
					iso8601 >= 0.1
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user