Example #1
0
    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
Example #2
0
 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
Example #3
0
 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
Example #4
0
    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
Example #5
0
    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
Example #6
0
    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
Example #7
0
    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
Example #8
0
    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))