def identify(self, log, result_queue, abort, title=None, authors=None, identifiers=None, timeout=30): '''Attempt to identify comicvine Issue matching given parameters''' # Do a simple lookup if comicvine identifier present if identifiers: comicvine_id = identifiers.get('comicvine') if comicvine_id is not None: log.debug('Looking up Issue(%d)' % int(comicvine_id)) self.enqueue(log, result_queue, threading.Event(), int(comicvine_id)) return None if title: # Look up candidate volumes based on title (issue_number, candidate_volumes) = utils.find_title( self, title, log, volumeid=identifiers.get('comicvine-volume')) # Look up candidate authors candidate_authors = utils.find_authors(self, authors, log) # Look up candidate issues candidate_issues = utils.find_issues( candidate_volumes, issue_number, log) # Refine issue selection based on authors if candidate_authors: issues = set() for author in candidate_authors: issues.update(set(author.issues)) candidate_issues = issues.intersection(candidate_issues) # Queue candidates pool = ThreadPool(PREFS.get('worker_threads')) shutdown = threading.Event() enqueue = partial(self.enqueue, log, result_queue, shutdown) try: pool.map(enqueue, [issue.id for issue in candidate_issues]) finally: shutdown.set() return None
def is_configured(self): return bool(PREFS.get('api_key'))