def loadURL(self): self.loadDefault() self.cover_fetcher = ImageFetcher() self.cover_fetcher.fetchComplete.connect(self.coverRemoteFetchComplete) self.cover_fetcher.fetch(self.url_list[self.imageIndex])
def getIssueCoverMatchScore( self, comicVine, issue_id, primary_img_url, primary_thumb_url, page_url, localCoverHashList, useRemoteAlternates=False, useLog=True): # localHashes is a list of pre-calculated hashs. # useRemoteAlternates - indicates to use alternate covers from CV try: url_image_data = ImageFetcher().fetch( primary_thumb_url, blocking=True) except ImageFetcherException: self.log_msg( "Network issue while fetching cover image from Comic Vine. Aborting...") raise IssueIdentifierNetworkError if self.cancel: raise IssueIdentifierCancelled # alert the GUI, if needed if self.coverUrlCallback is not None: self.coverUrlCallback(url_image_data) remote_cover_list = [] item = dict() item['url'] = primary_img_url item['hash'] = self.calculateHash(url_image_data) remote_cover_list.append(item) if self.cancel: raise IssueIdentifierCancelled if useRemoteAlternates: alt_img_url_list = comicVine.fetchAlternateCoverURLs( issue_id, page_url) for alt_url in alt_img_url_list: try: alt_url_image_data = ImageFetcher().fetch( alt_url, blocking=True) except ImageFetcherException: self.log_msg( "Network issue while fetching alt. cover image from Comic Vine. Aborting...") raise IssueIdentifierNetworkError if self.cancel: raise IssueIdentifierCancelled # alert the GUI, if needed if self.coverUrlCallback is not None: self.coverUrlCallback(alt_url_image_data) item = dict() item['url'] = alt_url item['hash'] = self.calculateHash(alt_url_image_data) remote_cover_list.append(item) if self.cancel: raise IssueIdentifierCancelled if useLog and useRemoteAlternates: self.log_msg( "[{0} alt. covers]".format(len(remote_cover_list) - 1), False) if useLog: self.log_msg("[ ", False) score_list = [] done = False for local_cover_hash in localCoverHashList: for remote_cover_item in remote_cover_list: score = ImageHasher.hamming_distance( local_cover_hash, remote_cover_item['hash']) score_item = dict() score_item['score'] = score score_item['url'] = remote_cover_item['url'] score_item['hash'] = remote_cover_item['hash'] score_list.append(score_item) if useLog: self.log_msg("{0}".format(score), False) if score <= self.strong_score_thresh: # such a good score, we can quit now, since for sure we # have a winner done = True break if done: break if useLog: self.log_msg(" ]", False) best_score_item = min(score_list, key=lambda x: x['score']) return best_score_item
def clearCache(self): ImageFetcher().clearCache() ComicVineCacher().clearCache() QtGui.QMessageBox.information(self, self.name, "Cache has been cleared.")