def __init__(self, plugin, kwargs, abort): Thread.__init__(self) self.daemon = True self.plugin, self.kwargs, self.rq = plugin, kwargs, Queue() self.abort = abort self.buf = BytesIO() self.log = create_log(self.buf)
def main(args=sys.argv): parser = option_parser() opts, args = parser.parse_args(args) buf = BytesIO() log = create_log(buf) abort = Event() patch_plugins() authors = [] if opts.authors: authors = string_to_authors(opts.authors) identifiers = {} if opts.isbn: identifiers['isbn'] = opts.isbn allowed_plugins = frozenset(opts.allowed_plugin) results = identify(log, abort, title=opts.title, authors=authors, identifiers=identifiers, timeout=int(opts.timeout), allowed_plugins=allowed_plugins or None) if not results: print(log, file=sys.stderr) prints('No results found', file=sys.stderr) raise SystemExit(1) result = results[0] cf = None if opts.cover and results: cover = download_cover(log, title=opts.title, authors=authors, identifiers=result.identifiers, timeout=int(opts.timeout)) if cover is None and not opts.opf: prints('No cover found', file=sys.stderr) else: save_cover_data_to(cover[-1], opts.cover) result.cover = cf = opts.cover log = buf.getvalue() result = (metadata_to_opf(result) if opts.opf else unicode(result).encode('utf-8')) if opts.verbose: print(log, file=sys.stderr) print(result) if not opts.opf and opts.cover: prints('Cover :', cf) return 0
def main(args=sys.argv): parser = option_parser() opts, args = parser.parse_args(args) buf = BytesIO() log = create_log(buf) abort = Event() patch_plugins() authors = [] if opts.authors: authors = string_to_authors(opts.authors) identifiers = {} for idspec in opts.identifier: k, v = idspec.partition(':')[::2] if not k or not v: raise SystemExit('Not a valid identifier: {}'.format(idspec)) identifiers[k] = v if opts.isbn: identifiers['isbn'] = opts.isbn allowed_plugins = frozenset(opts.allowed_plugin) results = identify(log, abort, title=opts.title, authors=authors, identifiers=identifiers, timeout=int(opts.timeout), allowed_plugins=allowed_plugins or None) if not results: print(log, file=sys.stderr) prints('No results found', file=sys.stderr) raise SystemExit(1) result = results[0] cf = None if opts.cover and results: cover = download_cover(log, title=opts.title, authors=authors, identifiers=result.identifiers, timeout=int(opts.timeout)) if cover is None and not opts.opf: prints('No cover found', file=sys.stderr) else: save_cover_data_to(cover[-1], opts.cover) result.cover = cf = opts.cover log = buf.getvalue() result = (metadata_to_opf(result) if opts.opf else unicode_type(result).encode('utf-8')) if opts.verbose: print(log, file=sys.stderr) print(result) if not opts.opf and opts.cover: prints('Cover :', cf) return 0
def main(args=sys.argv): parser = option_parser() opts, args = parser.parse_args(args) buf = BytesIO() log = create_log(buf) abort = Event() patch_plugins() authors = [] if opts.authors: authors = string_to_authors(opts.authors) identifiers = {} for idspec in opts.identifier: k, v = idspec.partition(':')[::2] if not k or not v: raise SystemExit('Not a valid identifier: {}'.format(idspec)) identifiers[k] = v if opts.isbn: identifiers['isbn'] = opts.isbn allowed_plugins = frozenset(opts.allowed_plugin) results = identify(log, abort, title=opts.title, authors=authors, identifiers=identifiers, timeout=int(opts.timeout), allowed_plugins=allowed_plugins or None) if not results: prints(buf.getvalue(), file=sys.stderr) prints('No results found', file=sys.stderr) raise SystemExit(1) result = results[0] cf = None if opts.cover and results: cover = download_cover(log, title=opts.title, authors=authors, identifiers=result.identifiers, timeout=int(opts.timeout)) if cover is None: if not opts.opf: prints('No cover found', file=sys.stderr) else: save_cover_data_to(cover[-1], opts.cover) result.cover = cf = opts.cover if opts.verbose: prints(buf.getvalue(), file=sys.stderr) if opts.opf: getattr(sys.stdout, 'buffer', sys.stdout).write(metadata_to_opf(result)) print() else: prints(str(result)) if not opts.opf and opts.cover: prints('Cover :', cf) return 0
def __init__(self, plugin, abort, title, authors, identifiers, timeout, rq): Thread.__init__(self) self.daemon = True self.plugin = plugin self.abort = abort self.buf = BytesIO() self.log = create_log(self.buf) self.title, self.authors, self.identifiers = (title, authors, identifiers) self.timeout, self.rq = timeout, rq self.time_spent = None
def __init__(self, plugin, abort, title, authors, identifiers, timeout, rq, get_best_cover=False): Thread.__init__(self) self.daemon = True self.plugin = plugin self.abort = abort self.get_best_cover = get_best_cover self.buf = StringIO() self.log = create_log(self.buf) self.title, self.authors, self.identifiers = (title, authors, identifiers) self.timeout, self.rq = timeout, rq self.time_spent = None
def main(args=sys.argv): parser = option_parser() opts, args = parser.parse_args(args) buf = BytesIO() log = create_log(buf) abort = Event() authors = [] if opts.authors: authors = string_to_authors(opts.authors) identifiers = {} if opts.isbn: identifiers['isbn'] = opts.isbn results = identify(log, abort, title=opts.title, authors=authors, identifiers=identifiers, timeout=int(opts.timeout)) if not results: print (log, file=sys.stderr) prints('No results found', file=sys.stderr) raise SystemExit(1) result = results[0] cf = None if opts.cover and results: cover = download_cover(log, title=opts.title, authors=authors, identifiers=result.identifiers, timeout=int(opts.timeout)) if cover is None: prints('No cover found', file=sys.stderr) else: save_cover_data_to(cover[-1], opts.cover) result.cover = cf = opts.cover log = buf.getvalue() result = (metadata_to_opf(result) if opts.opf else unicode(result).encode('utf-8')) if opts.verbose: print (log, file=sys.stderr) print (result) if not opts.opf and opts.cover: prints('Cover :', cf) return 0
def init_test(tdir_name): tdir = tempfile.gettempdir() lf = os.path.join(tdir, tdir_name.replace(' ', '') + '_identify_test.txt') log = create_log(open(lf, 'w')) abort = Event() return tdir, lf, log, abort
def isbn_api_add(self, isbn): ''' Add the book and return the new db id. ''' try: isbn = int(re.sub(r'[^\d]+', '', isbn)) except: raise cherrypy.HTTPError(404, 'Invalid isbn %s is not a number: '%isbn) isbn_len = len(str(isbn)) if isbn_len != 10 and isbn_len != 13: raise cherrypy.HTTPError(404, 'Invalid isbn {0} has a wrong length of {1}'.format(isbn, isbn_len)) mi = MetaInformation(None) mi.isbn = str(isbn) fmts = [] new_id = 0 try: new_id = self.db.import_book(mi, fmts) except: return 'could not add new book with isdb {0}'.format(isbn) # Start the threaded download of metadata and return with the id of the added book result = '' try: ids = [] ids.append(new_id) buf = BytesIO() log = create_log(buf) abort = Event() authors = [] identifiers = {} identifiers['isbn'] = mi.isbn results = identify(log, abort, title=None, authors=authors, identifiers=identifiers, timeout=int(30000)) if not results: print (log, file=sys.stderr) prints('No results found', file=sys.stderr) return 'Could not find metadata for isbn {0}'.format(isbn) result = results[0] self.db.set_metadata(new_id, result) #cf = None # #if opts.cover and results: # cover = download_cover(log, title=None, authors=authors, # identifiers=result.identifiers, timeout=int(30000)) # if cover is None and not opts.opf: # prints('No cover found', file=sys.stderr) # else: # save_cover_data_to(cover[-1], opts.cover) # result.cover = cf = opts.cover log = buf.getvalue() result = unicode(result).encode('utf-8') except e: return 'Error getting metadata {0}'.format(e) return 'Added new book with isbn {0} with new id {1} and metadata {2}'.format(isbn, new_id, result) # }}}
def init_test(tdir_name): tdir = tempfile.gettempdir() lf = os.path.join(tdir, tdir_name.replace(' ', '')+'_identify_test.txt') log = create_log(open(lf, 'wb')) abort = Event() return tdir, lf, log, abort