mirror of
https://github.com/RicterZ/nhentai.git
synced 2025-07-01 16:09:28 +02:00
Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
35c55503fa | |||
29aac84d53 | |||
4ed4523782 | |||
4223326c13 | |||
a248ff98c4 | |||
021f17d229 | |||
4162eabe93 | |||
dc54a43610 | |||
4ecffaff55 | |||
457f12d40d | |||
499081a9cd | |||
53aa04af1e |
@ -1,3 +1,3 @@
|
||||
__version__ = '0.5.5'
|
||||
__version__ = '0.5.6'
|
||||
__author__ = 'RicterZ'
|
||||
__email__ = 'ricterzheng@gmail.com'
|
||||
|
@ -213,7 +213,7 @@ def cmd_parser():
|
||||
_ = [i.strip() for i in f.readlines()]
|
||||
args.id = set(int(i) for i in _ if i.isdigit())
|
||||
|
||||
if (args.is_download or args.is_show) and not args.id and not args.keyword and not args.favorites:
|
||||
if (args.is_download or args.is_show) and not args.id and not args.keyword and not args.favorites and not args.artist:
|
||||
logger.critical('Doujinshi id(s) are required for downloading')
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
|
@ -3,6 +3,23 @@ import os
|
||||
import tempfile
|
||||
|
||||
from urllib.parse import urlparse
|
||||
from platform import system
|
||||
|
||||
|
||||
def get_nhentai_home() -> str:
|
||||
home = os.getenv('HOME', tempfile.gettempdir())
|
||||
|
||||
if system() == 'Linux':
|
||||
xdgdat = os.getenv('XDG_DATA_HOME')
|
||||
if xdgdat and os.path.exists(os.path.join(xdgdat, 'nhentai')):
|
||||
return os.path.join(xdgdat, 'nhentai')
|
||||
if home and os.path.exists(os.path.join(home, '.nhentai')):
|
||||
return os.path.join(home, '.nhentai')
|
||||
if xdgdat:
|
||||
return os.path.join(xdgdat, 'nhentai')
|
||||
|
||||
# Use old default path in other systems
|
||||
return os.path.join(home, '.nhentai')
|
||||
|
||||
|
||||
DEBUG = os.getenv('DEBUG', False)
|
||||
@ -20,8 +37,13 @@ FAV_URL = f'{BASE_URL}/favorites/'
|
||||
|
||||
|
||||
IMAGE_URL = f'{urlparse(BASE_URL).scheme}://i.{urlparse(BASE_URL).hostname}/galleries'
|
||||
IMAGE_URL_MIRRORS = [
|
||||
f'{urlparse(BASE_URL).scheme}://i3.{urlparse(BASE_URL).hostname}'
|
||||
f'{urlparse(BASE_URL).scheme}://i5.{urlparse(BASE_URL).hostname}'
|
||||
f'{urlparse(BASE_URL).scheme}://i7.{urlparse(BASE_URL).hostname}'
|
||||
]
|
||||
|
||||
NHENTAI_HOME = os.path.join(os.getenv('HOME', tempfile.gettempdir()), '.nhentai')
|
||||
NHENTAI_HOME = get_nhentai_home()
|
||||
NHENTAI_HISTORY = os.path.join(NHENTAI_HOME, 'history.sqlite3')
|
||||
NHENTAI_CONFIG_FILE = os.path.join(NHENTAI_HOME, 'config.json')
|
||||
|
||||
@ -32,7 +54,8 @@ CONFIG = {
|
||||
'cookie': '',
|
||||
'language': '',
|
||||
'template': '',
|
||||
'useragent': 'nhentai command line client (https://github.com/RicterZ/nhentai)'
|
||||
'useragent': 'nhentai command line client (https://github.com/RicterZ/nhentai)',
|
||||
'max_filename': 85
|
||||
}
|
||||
|
||||
LANGUAGE_ISO = {
|
||||
|
@ -67,10 +67,14 @@ class Downloader(Singleton):
|
||||
try:
|
||||
response = request('get', url, stream=True, timeout=self.timeout, proxies=proxy)
|
||||
if response.status_code != 200:
|
||||
raise NHentaiImageNotExistException
|
||||
|
||||
except NHentaiImageNotExistException as e:
|
||||
raise e
|
||||
path = urlparse(url).path
|
||||
for mirror in constant.IMAGE_URL_MIRRORS:
|
||||
print(f'{mirror}{path}')
|
||||
mirror_url = f'{mirror}{path}'
|
||||
response = request('get', mirror_url, stream=True,
|
||||
timeout=self.timeout, proxies=proxy)
|
||||
if response.status_code == 200:
|
||||
break
|
||||
|
||||
except Exception as e:
|
||||
i += 1
|
||||
|
@ -135,7 +135,7 @@ def doujinshi_parser(id_, counter=0):
|
||||
logger.warning(f'Error: {e}, ignored')
|
||||
return None
|
||||
|
||||
print(response)
|
||||
# print(response)
|
||||
html = BeautifulSoup(response, 'html.parser')
|
||||
doujinshi_info = html.find('div', attrs={'id': 'info'})
|
||||
|
||||
@ -327,7 +327,9 @@ def search_parser(keyword, sorting, page, is_page_all=False):
|
||||
|
||||
for row in response['result']:
|
||||
title = row['title']['english']
|
||||
title = title[:85] + '..' if len(title) > 85 else title
|
||||
title = title[:constant.CONFIG['max_filename']] + '..' if \
|
||||
len(title) > constant.CONFIG['max_filename'] else title
|
||||
|
||||
result.append({'id': row['id'], 'title': title})
|
||||
|
||||
not_exists_persist = False
|
||||
|
@ -166,6 +166,9 @@ def generate_main_html(output_dir='./'):
|
||||
def generate_cbz(output_dir='.', doujinshi_obj=None, rm_origin_dir=False, write_comic_info=True, move_to_folder=False):
|
||||
if doujinshi_obj is not None:
|
||||
doujinshi_dir = os.path.join(output_dir, doujinshi_obj.filename)
|
||||
if os.path.exists(doujinshi_dir+".cbz"):
|
||||
logger.warning(f'Comic Book CBZ file exists, skip "{doujinshi_dir}"')
|
||||
return
|
||||
if write_comic_info:
|
||||
serialize_comic_xml(doujinshi_obj, doujinshi_dir)
|
||||
cbz_filename = os.path.join(os.path.join(doujinshi_dir, '..'), f'{doujinshi_obj.filename}.cbz')
|
||||
|
@ -139,7 +139,7 @@ function filter_searcher(){
|
||||
break
|
||||
}
|
||||
}
|
||||
if (verifier){doujinshi_id.push(data[i].Folder);}
|
||||
if (verifier){doujinshi_id.push(data[i].Folder.replace("_", " "));}
|
||||
}
|
||||
var gallery = document.getElementsByClassName("gallery-favorite");
|
||||
for (var i = 0; i < gallery.length; i++){
|
||||
@ -174,4 +174,4 @@ function tag_maker(data){
|
||||
document.getElementById("tags").appendChild(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user