Example #1
0
  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
Example #2
0
 def is_configured(self):
   return bool(PREFS.get('api_key'))
Example #3
0
 def is_configured(self):
   return bool(PREFS.get('api_key'))