From 19a1d5c404f7c995abe6df35c808e19db29b6b72 Mon Sep 17 00:00:00 2001 From: RicterZ Date: Mon, 7 Jun 2021 16:47:54 +0800 Subject: [PATCH] fix #220 add pretty name of doujinshi format --- nhentai/doujinshi.py | 12 ++++-------- nhentai/parser.py | 5 ++++- nhentai/serializer.py | 20 +++++++++++--------- nhentai/utils.py | 5 ++--- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/nhentai/doujinshi.py b/nhentai/doujinshi.py index 0170ad5..6ff7edb 100644 --- a/nhentai/doujinshi.py +++ b/nhentai/doujinshi.py @@ -26,8 +26,10 @@ class DoujinshiInfo(dict): class Doujinshi(object): - def __init__(self, name=None, id=None, img_id=None, ext='', pages=0, name_format='[%i][%a][%t]', **kwargs): + def __init__(self, name=None, pretty_name=None, id=None, img_id=None, + ext='', pages=0, name_format='[%i][%a][%t]', **kwargs): self.name = name + self.pretty_name = pretty_name self.id = id self.img_id = img_id self.ext = ext @@ -39,6 +41,7 @@ class Doujinshi(object): name_format = name_format.replace('%i', str(self.id)) name_format = name_format.replace('%a', self.info.artists) name_format = name_format.replace('%t', self.name) + name_format = name_format.replace('%p', self.pretty_name) name_format = name_format.replace('%s', self.info.subtitle) self.filename = format_filename(name_format) @@ -63,7 +66,6 @@ class Doujinshi(object): logger.info('Starting to download doujinshi: %s' % self.name) if self.downloader: download_queue = [] - if len(self.ext) != self.pages: logger.warning('Page count and ext count do not equal') @@ -71,12 +73,6 @@ class Doujinshi(object): 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) - - ''' - for i in range(len(self.ext)): - download_queue.append('%s/%d/%d.%s' % (IMAGE_URL, int(self.img_id), i+1, EXT_MAP[self.ext[i]])) - ''' - else: logger.critical('Downloader has not been loaded') diff --git a/nhentai/parser.py b/nhentai/parser.py index 190c3e4..4562d3e 100644 --- a/nhentai/parser.py +++ b/nhentai/parser.py @@ -133,13 +133,16 @@ def doujinshi_parser(id_): doujinshi_info = html.find('div', attrs={'id': 'info'}) title = doujinshi_info.find('h1').text + pretty_name = doujinshi_info.find('h1').find('span', attrs={'class': 'pretty'}).text subtitle = doujinshi_info.find('h2') doujinshi['name'] = title + doujinshi['pretty_name'] = pretty_name doujinshi['subtitle'] = subtitle.text if subtitle else '' doujinshi_cover = html.find('div', attrs={'id': 'cover'}) - img_id = re.search('/galleries/([\d]+)/cover\.(jpg|png|gif)$', doujinshi_cover.a.img.attrs['data-src']) + img_id = re.search('/galleries/([0-9]+)/cover.(jpg|png|gif)$', + doujinshi_cover.a.img.attrs['data-src']) ext = [] for i in html.find_all('div', attrs={'class': 'thumb-container'}): diff --git a/nhentai/serializer.py b/nhentai/serializer.py index a987c99..550022c 100644 --- a/nhentai/serializer.py +++ b/nhentai/serializer.py @@ -4,6 +4,7 @@ import os from xml.sax.saxutils import escape from nhentai.constant import LANGUAGEISO + def serialize_json(doujinshi, dir): metadata = {'title': doujinshi.name, 'subtitle': doujinshi.info.subtitle} @@ -26,10 +27,10 @@ def serialize_json(doujinshi, dir): metadata['Pages'] = doujinshi.pages with open(os.path.join(dir, 'metadata.json'), 'w') as f: - json.dump(metadata, f, separators=','':') + json.dump(metadata, f, separators=(',', ':')) -def serialize_comicxml(doujinshi, dir): +def serialize_comic_xml(doujinshi, dir): from iso8601 import parse_date with open(os.path.join(dir, 'ComicInfo.xml'), 'w') as f: f.write('\n') @@ -45,7 +46,8 @@ def serialize_comicxml(doujinshi, dir): xml_write_simple_tag(f, 'NhentaiId', doujinshi.id) xml_write_simple_tag(f, 'Genre', doujinshi.info.categories) - xml_write_simple_tag(f, 'BlackAndWhite', 'No' if doujinshi.info.tags and 'full color' in doujinshi.info.tags else 'Yes') + xml_write_simple_tag(f, 'BlackAndWhite', 'No' if doujinshi.info.tags and + 'full color' in doujinshi.info.tags else 'Yes') if doujinshi.info.date: dt = parse_date(doujinshi.info.date) @@ -59,13 +61,13 @@ def serialize_comicxml(doujinshi, dir): if doujinshi.info.tags: xml_write_simple_tag(f, 'Tags', doujinshi.info.tags) if doujinshi.info.artists: - xml_write_simple_tag(f, 'Writer', ' & '.join([i.strip() for i in doujinshi.info.artists.split(',')])) - # if doujinshi.info.groups: - # metadata['group'] = [i.strip() for i in doujinshi.info.groups.split(',')] + xml_write_simple_tag(f, 'Writer', ' & '.join([i.strip() for i in + doujinshi.info.artists.split(',')])) + if doujinshi.info.languages: languages = [i.strip() for i in doujinshi.info.languages.split(',')] xml_write_simple_tag(f, 'Translated', 'Yes' if 'translated' in languages else 'No') - [xml_write_simple_tag(f, 'LanguageISO', LANGUAGEISO[i]) for i in languages \ + [xml_write_simple_tag(f, 'LanguageISO', LANGUAGEISO[i]) for i in languages if (i != 'translated' and i in LANGUAGEISO)] f.write('') @@ -121,7 +123,7 @@ def serialize_unique(lst): def set_js_database(): with open('data.js', 'w') as f: indexed_json = merge_json() - unique_json = json.dumps(serialize_unique(indexed_json), separators=','':') - indexed_json = json.dumps(indexed_json, separators=','':') + unique_json = json.dumps(serialize_unique(indexed_json), separators=(',', ':')) + indexed_json = json.dumps(indexed_json, separators=(',', ':')) f.write('var data = ' + indexed_json) f.write(';\nvar tags = ' + unique_json) diff --git a/nhentai/utils.py b/nhentai/utils.py index 4519048..9b2b706 100644 --- a/nhentai/utils.py +++ b/nhentai/utils.py @@ -10,7 +10,7 @@ import sqlite3 from nhentai import constant from nhentai.logger import logger -from nhentai.serializer import serialize_json, serialize_comicxml, set_js_database +from nhentai.serializer import serialize_json, serialize_comic_xml, set_js_database def request(method, url, **kwargs): @@ -174,7 +174,7 @@ def generate_cbz(output_dir='.', doujinshi_obj=None, rm_origin_dir=False, write_ if doujinshi_obj is not None: doujinshi_dir = os.path.join(output_dir, doujinshi_obj.filename) if write_comic_info: - serialize_comicxml(doujinshi_obj, doujinshi_dir) + serialize_comic_xml(doujinshi_obj, doujinshi_dir) cbz_filename = os.path.join(os.path.join(doujinshi_dir, '..'), '{}.cbz'.format(doujinshi_obj.filename)) else: cbz_filename = './doujinshi.cbz' @@ -246,7 +246,6 @@ def format_filename(s): ban_chars = '\\\'/:,;*?"<>|\t' filename = s.translate(str.maketrans(ban_chars, ' '*len(ban_chars))).strip() filename = ' '.join(filename.split()) - print(repr(filename)) while filename.endswith('.'): filename = filename[:-1] -- 2.44.0