コード例 #1
0
ファイル: server.py プロジェクト: Tester682Lge/avacity-2.0
 def get_room_items(self, uid, room):
     if "_" in room:
         raise exceptions.WrongRoom()
     items = []
     for name in self.redis.smembers(f"rooms:{uid}:{room}:items"):
         item = self.redis.lrange(f"rooms:{uid}:{room}:items:{name}", 0, -1)
         name, lid = name.split("_")
         if len(item) == 5:
             items.append({
                 "tpid": name,
                 "x": float(item[0]),
                 "y": float(item[1]),
                 "z": float(item[2]),
                 "d": int(item[3]),
                 "lid": int(lid),
                 "rid": item[4]
             })
         else:
             items.append({
                 "tpid": name,
                 "x": float(item[0]),
                 "y": float(item[1]),
                 "z": float(item[2]),
                 "d": int(item[3]),
                 "lid": int(lid)
             })
     return items
コード例 #2
0
ファイル: server.py プロジェクト: nasocksok/avacity-async
 async def get_room_items(self, uid, room):
     if "_" in room:
         raise exceptions.WrongRoom()
     names = []
     pipe = self.redis.pipeline()
     spipe = self.redis.pipeline()
     for name in await self.redis.smembers(f"rooms:{uid}:{room}:items"):
         pipe.lrange(f"rooms:{uid}:{room}:items:{name}", 0, -1)
         spipe.smembers(f"rooms:{uid}:{room}:items:{name}:options")
         names.append(name)
     result = await pipe.execute()
     options = await spipe.execute()
     i = 0
     items = []
     for name in names:
         name, lid = name.split("_")
         item = result[i]
         option = options[i]
         try:
             tmp = {
                 "tpid": name,
                 "x": float(item[0]),
                 "y": float(item[1]),
                 "z": float(item[2]),
                 "d": int(item[3]),
                 "lid": int(lid)
             }
         except IndexError:
             await self.redis.srem(f"rooms:{uid}:{room}:items",
                                   f"{name}_{lid}")
             await self.redis.delete(f"rooms:{uid}:{room}:items:"
                                     f"{name}_{lid}")
             continue
         for kek in option:
             if kek == "clrs":
                 item = await self.redis.smembers(f"rooms:{uid}:{room}:"
                                                  f"items:{name}_{lid}:"
                                                  f"{kek}")
             else:
                 item = await self.redis.get(f"rooms:{uid}:{room}:items:"
                                             f"{name}_{lid}:{kek}")
             tmp[kek] = item
         items.append(tmp)
         i += 1
     return items