def get_avatar(self, username): """ username: `username` field in db.rcontact""" if not self._use_avt: return None username = ensure_bin_str(username) filename = md5(username) dir1, dir2 = filename[:2], filename[2:4] filename = os.path.join(dir1, dir2, "user_{}.png".format(filename)) try: try: if self.avt_use_db: pos, size = self.query_index(filename) return self.read_img(pos, size) else: img_file = os.path.join(self.avt_dir, filename) if os.path.exists(img_file): return Image.open(img_file) else: return None except TypeError: logger.warn("Avatar for {} not found in avatar database.".format(username)) return None except Exception as e: raise print e logger.warn("Failed to retrieve avatar!") return None
def get_voice_filename(self, imgpath): fname = md5(imgpath) dir1, dir2 = fname[:2], fname[2:4] ret = os.path.join(self.voice_dir, dir1, dir2, 'msg_{}.amr'.format(imgpath)) if not os.path.isfile(ret): logger.error("Voice file not found for {}".format(imgpath)) return "" return ret
def get_avatar(self, username): """ username: `username` field in db.rcontact""" username = ensure_bin_str(username) filename = md5(username) dir1, dir2 = filename[:2], filename[2:4] filename = os.path.join(dir1, dir2, "user_{}.png.bm".format(filename)) index_avatar = self.query_index(filename) if index_avatar == -1: logger.warn("Avatar not found for {}".format(username)) return None else: img = self.read_bm_block(index_avatar) return img
def get_avatar(self, username): """ username: `username` field in db.rcontact""" username = ensure_bin_str(username) filename = md5(username) dir1, dir2 = filename[:2], filename[2:4] filename = os.path.join(dir1, dir2, "user_{}.png".format(filename)) try: try: pos, size = self.query_index(filename) except TypeError: logger.warn("Avatar for {} not found in avatar database.".format(username)) return None return self.read_img(pos, size) except Exception as e: raise print e logger.warn("Failed to retrieve avatar!") return None
def get_avatar(self, username): """ username: `username` field in db.rcontact""" username = ensure_bin_str(username) filename = md5(username) dir1, dir2 = filename[:2], filename[2:4] filename = os.path.join(dir1, dir2, "user_{}.png".format(filename)) try: try: pos, size = self.query_index(filename) except TypeError: logger.warn( "Avatar for {} not found in avatar database.".format( username)) return None return self.read_img(pos, size) except Exception as e: raise print e logger.warn("Failed to retrieve avatar!") return None
def get_avatar(self, username): """ username: `username` field in db.rcontact""" if not self._use_avt: return None username = ensure_unicode(username) avtid = md5(username.encode('utf-8')) dir1, dir2 = avtid[:2], avtid[2:4] candidates = glob.glob( os.path.join(self.avt_dir, dir1, dir2, f"*{avtid}*")) default_candidate = os.path.join(self.avt_dir, dir1, dir2, f"user_{avtid}.png") candidates.append(default_candidate) def priority(s): if "_hd" in s and s.endswith(".png"): return 10 else: return 1 candidates = sorted(set(candidates), key=priority, reverse=True) for cand in candidates: try: if self.avt_use_db: pos, size = self.query_index(cand) return self.read_img(pos, size) else: if os.path.exists(cand): if cand.endswith(".bm"): return self.read_bm_file(cand) else: return Image.open(cand) except Exception: logger.exception("HHH") pass logger.warning( "Avatar for {} not found in avatar database.".format(username))