mirror of
https://github.com/RicterZ/nhentai.git
synced 2026-04-08 10:40:22 +02:00
feat: migrate to API token auth, remove legacy parser
- Add --token parameter (takes priority over --cookie) - Deprecate --cookie and --useragent with warning messages - Remove --legacy flag and legacy HTML search parser - Migrate --artist search to use v2 API query syntax (artist:slug) - Bump version to 2.0.6 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,3 +1,3 @@
|
|||||||
__version__ = '2.0.5'
|
__version__ = '2.0.6'
|
||||||
__author__ = 'RicterZ'
|
__author__ = 'RicterZ'
|
||||||
__email__ = 'ricterzheng@gmail.com'
|
__email__ = 'ricterzheng@gmail.com'
|
||||||
|
|||||||
@@ -164,6 +164,8 @@ def cmd_parser():
|
|||||||
# site options
|
# site options
|
||||||
parser.add_argument('--cookie', type=str, dest='cookie',
|
parser.add_argument('--cookie', type=str, dest='cookie',
|
||||||
help='set cookie to bypass Cloudflare captcha')
|
help='set cookie to bypass Cloudflare captcha')
|
||||||
|
parser.add_argument('--token', type=str, dest='token',
|
||||||
|
help='set API token for authentication (takes priority over cookie)')
|
||||||
parser.add_argument('--useragent', '--user-agent', type=str, dest='useragent',
|
parser.add_argument('--useragent', '--user-agent', type=str, dest='useragent',
|
||||||
help='set useragent to bypass Cloudflare captcha')
|
help='set useragent to bypass Cloudflare captcha')
|
||||||
parser.add_argument('--language', type=str, dest='language',
|
parser.add_argument('--language', type=str, dest='language',
|
||||||
@@ -176,8 +178,7 @@ def cmd_parser():
|
|||||||
help='clean download history')
|
help='clean download history')
|
||||||
parser.add_argument('--template', dest='viewer_template', type=str, default='',
|
parser.add_argument('--template', dest='viewer_template', type=str, default='',
|
||||||
help='set viewer template')
|
help='set viewer template')
|
||||||
parser.add_argument('--legacy', dest='legacy', action='store_true', default=False,
|
|
||||||
help='use legacy searching method')
|
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
@@ -217,11 +218,18 @@ def cmd_parser():
|
|||||||
|
|
||||||
# --- set config ---
|
# --- set config ---
|
||||||
if args.cookie is not None:
|
if args.cookie is not None:
|
||||||
|
logger.warning('--cookie is deprecated, please use --token instead.')
|
||||||
c.CONFIG['cookie'] = args.cookie.strip()
|
c.CONFIG['cookie'] = args.cookie.strip()
|
||||||
write_config()
|
write_config()
|
||||||
logger.info('Cookie saved.')
|
logger.info('Cookie saved.')
|
||||||
|
|
||||||
|
if args.token is not None:
|
||||||
|
c.CONFIG['token'] = args.token.strip()
|
||||||
|
write_config()
|
||||||
|
logger.info('Token saved.')
|
||||||
|
|
||||||
if args.useragent is not None:
|
if args.useragent is not None:
|
||||||
|
logger.warning('--useragent is deprecated, please use --token instead.')
|
||||||
c.CONFIG['useragent'] = args.useragent.strip()
|
c.CONFIG['useragent'] = args.useragent.strip()
|
||||||
write_config()
|
write_config()
|
||||||
logger.info('User-Agent saved.')
|
logger.info('User-Agent saved.')
|
||||||
@@ -232,7 +240,7 @@ def cmd_parser():
|
|||||||
logger.info(f'Default language now set to "{args.language}"')
|
logger.info(f'Default language now set to "{args.language}"')
|
||||||
# TODO: search without language
|
# TODO: search without language
|
||||||
|
|
||||||
if any([args.cookie, args.useragent, args.language]):
|
if any([args.cookie, args.token, args.useragent, args.language]):
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
if args.proxy is not None:
|
if args.proxy is not None:
|
||||||
@@ -262,8 +270,8 @@ def cmd_parser():
|
|||||||
# --- end set config ---
|
# --- end set config ---
|
||||||
|
|
||||||
if args.favorites:
|
if args.favorites:
|
||||||
if not c.CONFIG['cookie']:
|
if not c.CONFIG.get('cookie') and not c.CONFIG.get('token'):
|
||||||
logger.warning('Cookie has not been set, please use `doujinshi-dl --cookie \'COOKIE\'` to set it.')
|
logger.warning('Authentication has not been set, please use `doujinshi-dl --token \'TOKEN\'` or `--cookie \'COOKIE\'` to set it.')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if args.file:
|
if args.file:
|
||||||
|
|||||||
@@ -82,17 +82,15 @@ def main():
|
|||||||
options.keyword,
|
options.keyword,
|
||||||
sorting=options.sorting,
|
sorting=options.sorting,
|
||||||
page=page_list,
|
page=page_list,
|
||||||
legacy=options.legacy,
|
|
||||||
is_page_all=options.page_all,
|
is_page_all=options.page_all,
|
||||||
)
|
)
|
||||||
|
|
||||||
elif options.artist:
|
elif options.artist:
|
||||||
doujinshis = parser.search(
|
doujinshis = parser.search(
|
||||||
options.artist,
|
f'artist:{options.artist}',
|
||||||
sorting=options.sorting,
|
sorting=options.sorting,
|
||||||
page=page_list,
|
page=page_list,
|
||||||
is_page_all=options.page_all,
|
is_page_all=options.page_all,
|
||||||
type_='ARTIST',
|
|
||||||
)
|
)
|
||||||
|
|
||||||
elif not doujinshi_ids:
|
elif not doujinshi_ids:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "doujinshi-dl"
|
name = "doujinshi-dl"
|
||||||
version = "2.0.5"
|
version = "2.0.6"
|
||||||
description = "doujinshi downloader"
|
description = "doujinshi downloader"
|
||||||
authors = ["Ricter Z <ricterzheng@gmail.com>"]
|
authors = ["Ricter Z <ricterzheng@gmail.com>"]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|||||||
Reference in New Issue
Block a user