NihalGazi commited on
Commit
22d703d
·
verified ·
1 Parent(s): 08cec51

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -18
app.py CHANGED
@@ -67,24 +67,47 @@ def handle_leave(data):
67
  emit("status", {"msg": "Partner left."}, room=other)
68
  leave_room(room, sid=other)
69
  ROOMS.pop(room)
70
-
71
- def try_match():
72
- while len(WAITING) >= 2:
73
- s1 = WAITING.pop(0)
74
- prefs1 = set(PROFILES[s1]["interests"])
75
- s2 = None
76
- for i, sid in enumerate(WAITING):
77
- if prefs1 & set(PROFILES[sid]["interests"]):
78
- s2 = WAITING.pop(i)
79
- break
80
- if not s2:
81
- s2 = WAITING.pop(0)
82
- room = str(uuid.uuid4())
83
- ROOMS[room] = (s1, s2)
84
- join_room(room, sid=s1)
85
- join_room(room, sid=s2)
86
- emit("matched", {"room": room}, room=s1)
87
- emit("matched", {"room": room}, room=s2)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
 
89
  if __name__ == "__main__":
90
  socketio.run(app, host="0.0.0.0", port=7860)
 
67
  emit("status", {"msg": "Partner left."}, room=other)
68
  leave_room(room, sid=other)
69
  ROOMS.pop(room)
70
+ def try_match():
71
+ import random
72
+ random.shuffle(WAITING) # To ensure fairness
73
+ used = set()
74
+ pairs = []
75
+
76
+ for i, sid1 in enumerate(WAITING):
77
+ if sid1 in used: continue
78
+ p1 = PROFILES.get(sid1)
79
+ if not p1: continue
80
+ for j in range(i + 1, len(WAITING)):
81
+ sid2 = WAITING[j]
82
+ if sid2 in used: continue
83
+ p2 = PROFILES.get(sid2)
84
+ if not p2: continue
85
+
86
+ # Gender filtering
87
+ if p1['looking'] != 'any' and p2['gender'].lower() != p1['looking'].lower():
88
+ continue
89
+ if p2['looking'] != 'any' and p1['gender'].lower() != p2['looking'].lower():
90
+ continue
91
+
92
+ # Interests matching
93
+ if set(p1['interests']) & set(p2['interests']):
94
+ pairs.append((sid1, sid2))
95
+ used.add(sid1)
96
+ used.add(sid2)
97
+ break
98
+
99
+ # Remove matched from waiting, make rooms
100
+ for sid1, sid2 in pairs:
101
+ for sid in (sid1, sid2):
102
+ if sid in WAITING:
103
+ WAITING.remove(sid)
104
+
105
+ room = str(uuid.uuid4())
106
+ ROOMS[room] = (sid1, sid2)
107
+ join_room(room, sid=sid1)
108
+ join_room(room, sid=sid2)
109
+ emit("matched", {"room": room}, room=sid1)
110
+ emit("matched", {"room": room}, room=sid2)
111
 
112
  if __name__ == "__main__":
113
  socketio.run(app, host="0.0.0.0", port=7860)