Merge pull request #5 from navrudh/master

Python3 compatablility and new Singleton implementation
This commit is contained in:
Ricter Zheng 2016-08-11 21:07:02 +08:00 committed by GitHub
commit 8442f00c6c
10 changed files with 45 additions and 28 deletions

View File

@ -6,10 +6,13 @@ language: python
python:
- 2.7
- 2.6
- 3.3
- 3.4
- 3.5
install:
- python setup.py install
script:
- nhentai --search umaru
- nhentai --ids=152503,146134 -t 10 --download --path=/tmp/
- nhentai --ids=152503,146134 -t 10 --download --path=/tmp/

View File

@ -1,3 +1,3 @@
__version__ = '0.1.5'
__version__ = '0.2.0'
__author__ = 'Ricter'
__email__ = 'ricterzheng@gmail.com'

View File

@ -1,14 +1,13 @@
# coding: utf-8
from __future__ import print_function
from optparse import OptionParser
from logger import logger
try:
from itertools import ifilter as filter
except ImportError:
pass
import constant
import nhentai.constant as constant
from nhentai.logger import logger
def banner():

View File

@ -1,11 +1,12 @@
#!/usr/bin/env python2.7
# coding: utf-8
import signal
from cmdline import cmd_parser, banner
from parser import doujinshi_parser, search_parser, print_doujinshi
from doujinshi import Doujinshi
from downloader import Downloader
from logger import logger
from nhentai.cmdline import cmd_parser, banner
from nhentai.parser import doujinshi_parser, search_parser, print_doujinshi
from nhentai.doujinshi import Doujinshi
from nhentai.downloader import Downloader
from nhentai.logger import logger
def main():

View File

@ -1,8 +1,10 @@
# coding: utf-8
from __future__ import print_function
from tabulate import tabulate
from constant import DETAIL_URL, IMAGE_URL
from logger import logger
from builtins import range
from nhentai.constant import DETAIL_URL, IMAGE_URL
from nhentai.logger import logger
class DoujinshiInfo(dict):
@ -47,7 +49,7 @@ class Doujinshi(object):
logger.info('Start download doujinshi: %s' % self.name)
if self.downloader:
download_queue = []
for i in xrange(1, self.pages + 1):
for i in range(1, self.pages + 1):
download_queue.append('%s/%d/%d.%s' % (IMAGE_URL, int(self.img_id), i, self.ext))
self.downloader.download(download_queue, self.id)
else:

View File

@ -1,19 +1,19 @@
# coding: utf-8
from builtins import str as text
import os
import requests
import threadpool
from urlparse import urlparse
from logger import logger
from parser import request
try:
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
from nhentai.logger import logger
from nhentai.parser import request
from nhentai.utils import Singleton
class Downloader(object):
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super(Downloader, cls).__new__(cls, *args, **kwargs)
return cls._instance
class Downloader(Singleton):
def __init__(self, path='', thread=1, timeout=30):
if not isinstance(thread, (int, )) or thread < 1 or thread > 10:
@ -54,7 +54,7 @@ class Downloader(object):
logger.log(15, '{0} download successfully'.format(result))
def download(self, queue, folder=''):
if not isinstance(folder, (str, unicode)):
if not isinstance(folder, (text)):
folder = str(folder)
if self.path:

View File

@ -1,4 +1,3 @@
import logging
#
# Copyright (C) 2010-2012 Vinay Sajip. All rights reserved. Licensed under the new BSD license.
#

View File

@ -1,12 +1,14 @@
# coding: utf-8
from __future__ import print_function
from bs4 import BeautifulSoup
import re
import requests
from bs4 import BeautifulSoup
import constant
from logger import logger
from tabulate import tabulate
import nhentai.constant as constant
from nhentai.logger import logger
def request(method, url, **kwargs):
if not hasattr(requests, method):

10
nhentai/utils.py Normal file
View File

@ -0,0 +1,10 @@
# coding: utf-8
class _Singleton(type):
""" A metaclass that creates a Singleton base class when called. """
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(_Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
class Singleton(_Singleton('SingletonMeta', (object,), {})): pass

View File

@ -2,3 +2,4 @@ requests>=2.5.0
BeautifulSoup4>=4.0.0
threadpool>=1.2.7
tabulate>=0.7.5
future>=0.15.2