mirror of
				https://github.com/RicterZ/nhentai.git
				synced 2025-11-04 02:50:55 +01:00 
			
		
		
		
	Added sorting option
This commit is contained in:
		@@ -1,3 +1,3 @@
 | 
			
		||||
__version__ = '0.3.6'
 | 
			
		||||
__version__ = '0.3.7'
 | 
			
		||||
__author__ = 'RicterZ'
 | 
			
		||||
__email__ = 'ricterzheng@gmail.com'
 | 
			
		||||
 
 | 
			
		||||
@@ -58,6 +58,8 @@ def cmd_parser():
 | 
			
		||||
                      help='page number of search results')
 | 
			
		||||
    parser.add_option('--max-page', type='int', dest='max_page', action='store', default=1,
 | 
			
		||||
                      help='The max page when recursive download tagged doujinshi')
 | 
			
		||||
    parser.add_option('--sorting', type='string', dest='sorting', action='store', default='date',
 | 
			
		||||
                      help='sorting of doujinshi, e.g. date/popular')
 | 
			
		||||
 | 
			
		||||
    # download options
 | 
			
		||||
    parser.add_option('--output', '-o', type='string', dest='output_dir', action='store', default='',
 | 
			
		||||
 
 | 
			
		||||
@@ -40,13 +40,13 @@ def main():
 | 
			
		||||
            doujinshi_ids = map(lambda d: d['id'], doujinshis)
 | 
			
		||||
 | 
			
		||||
    elif options.tag:
 | 
			
		||||
        doujinshis = tag_parser(options.tag, max_page=options.max_page)
 | 
			
		||||
        doujinshis = tag_parser(options.tag, options.sorting, max_page=options.max_page)
 | 
			
		||||
        print_doujinshi(doujinshis)
 | 
			
		||||
        if options.is_download and doujinshis:
 | 
			
		||||
            doujinshi_ids = map(lambda d: d['id'], doujinshis)
 | 
			
		||||
 | 
			
		||||
    elif options.keyword:
 | 
			
		||||
        doujinshis = search_parser(options.keyword, options.page)
 | 
			
		||||
        doujinshis = search_parser(options.keyword, options.sorting, options.page)
 | 
			
		||||
        print_doujinshi(doujinshis)
 | 
			
		||||
        if options.is_download:
 | 
			
		||||
            doujinshi_ids = map(lambda d: d['id'], doujinshis)
 | 
			
		||||
 
 | 
			
		||||
@@ -169,10 +169,10 @@ def doujinshi_parser(id_):
 | 
			
		||||
    return doujinshi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def search_parser(keyword, page):
 | 
			
		||||
def search_parser(keyword, sorting, page):
 | 
			
		||||
    logger.debug('Searching doujinshis of keyword {0}'.format(keyword))
 | 
			
		||||
    try:
 | 
			
		||||
        response = request('get', url=constant.SEARCH_URL, params={'q': keyword, 'page': page}).content
 | 
			
		||||
        response = request('get', url=constant.SEARCH_URL, params={'q': keyword, 'page': page, 'sort': sorting}).content
 | 
			
		||||
    except requests.ConnectionError as e:
 | 
			
		||||
        logger.critical(e)
 | 
			
		||||
        logger.warn('If you are in China, please configure the proxy to fu*k GFW.')
 | 
			
		||||
@@ -194,14 +194,17 @@ def print_doujinshi(doujinshi_list):
 | 
			
		||||
                tabulate(tabular_data=doujinshi_list, headers=headers, tablefmt='rst'))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def tag_parser(tag_name, max_page=1):
 | 
			
		||||
def tag_parser(tag_name, sorting, max_page=1):
 | 
			
		||||
    result = []
 | 
			
		||||
    tag_name = tag_name.lower()
 | 
			
		||||
    tag_name = tag_name.replace(' ', '-')
 | 
			
		||||
 | 
			
		||||
    if sorting == 'date':
 | 
			
		||||
        sorting = ''
 | 
			
		||||
 | 
			
		||||
    for p in range(1, max_page + 1):
 | 
			
		||||
        logger.debug('Fetching page {0} for doujinshi with tag \'{1}\''.format(p, tag_name))
 | 
			
		||||
        response = request('get', url='%s/%s/?page=%d' % (constant.TAG_URL, tag_name, p)).content
 | 
			
		||||
        response = request('get', url='%s/%s/%s?page=%d' % (constant.TAG_URL, tag_name, sorting, p)).content
 | 
			
		||||
 | 
			
		||||
        result += _get_title_and_id(response)
 | 
			
		||||
        if not result:
 | 
			
		||||
@@ -214,13 +217,13 @@ def tag_parser(tag_name, max_page=1):
 | 
			
		||||
    return result
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def __api_suspended_search_parser(keyword, page):
 | 
			
		||||
def __api_suspended_search_parser(keyword, sorting, page):
 | 
			
		||||
    logger.debug('Searching doujinshis using keywords {0}'.format(keyword))
 | 
			
		||||
    result = []
 | 
			
		||||
    i = 0
 | 
			
		||||
    while i < 5:
 | 
			
		||||
        try:
 | 
			
		||||
            response = request('get', url=constant.SEARCH_URL, params={'query': keyword, 'page': page}).json()
 | 
			
		||||
            response = request('get', url=constant.SEARCH_URL, params={'query': keyword, 'page': page, 'sort': sorting}).json()
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            i += 1
 | 
			
		||||
            if not i < 5:
 | 
			
		||||
@@ -244,10 +247,10 @@ def __api_suspended_search_parser(keyword, page):
 | 
			
		||||
    return result
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def __api_suspended_tag_parser(tag_id, max_page=1):
 | 
			
		||||
def __api_suspended_tag_parser(tag_id, sorting, max_page=1):
 | 
			
		||||
    logger.info('Searching for doujinshi with tag id {0}'.format(tag_id))
 | 
			
		||||
    result = []
 | 
			
		||||
    response = request('get', url=constant.TAG_API_URL, params={'sort': 'popular', 'tag_id': tag_id}).json()
 | 
			
		||||
    response = request('get', url=constant.TAG_API_URL, params={'sort': sorting, 'tag_id': tag_id}).json()
 | 
			
		||||
    page = max_page if max_page <= response['num_pages'] else int(response['num_pages'])
 | 
			
		||||
 | 
			
		||||
    for i in range(1, page + 1):
 | 
			
		||||
@@ -255,7 +258,7 @@ def __api_suspended_tag_parser(tag_id, max_page=1):
 | 
			
		||||
 | 
			
		||||
        if page != 1:
 | 
			
		||||
            response = request('get', url=constant.TAG_API_URL,
 | 
			
		||||
                               params={'sort': 'popular', 'tag_id': tag_id}).json()
 | 
			
		||||
                               params={'sort': sorting, 'tag_id': tag_id}).json()
 | 
			
		||||
    for row in response['result']:
 | 
			
		||||
        title = row['title']['english']
 | 
			
		||||
        title = title[:85] + '..' if len(title) > 85 else title
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user