Terry Zhuo commited on
Commit
c28a31b
·
1 Parent(s): f5ae479
Files changed (1) hide show
  1. azure_count_ip_data.py +28 -16
azure_count_ip_data.py CHANGED
@@ -139,30 +139,42 @@ def get_file_data(content: str) -> Tuple[Optional[str], Optional[str], bool]:
139
  # Early check if IP is in whitelist
140
  ip_in_whitelist = ip in WHITELIST_IPS
141
 
142
- # Check vote conditions from last line and get username if available
143
- try:
144
- last_line_data = json.loads(lines[-1])
145
- username = None
146
-
147
- if last_line_data.get('type') == 'vote':
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  # Only try to get username if the key exists
149
- if 'username' in last_line_data:
150
- username = last_line_data.get('username')
151
 
152
- feedback = last_line_data.get('feedback')
153
 
154
  # Check vote conditions: type is vote, feedback has 6 items, and at least 4 lines (2 rounds of chat)
 
 
155
  vote_conditions_met = (
156
  isinstance(feedback, dict) and
157
  len(feedback) == 6 and
158
- len(lines) >= 4
159
  )
160
- else:
161
- vote_conditions_met = False
162
-
163
- except (json.JSONDecodeError, TypeError):
164
- username = None
165
- vote_conditions_met = False
166
 
167
  # Check if username is in whitelist (if username exists)
168
  username_in_whitelist = username in WHITELIST_USERNAMES if username else False
 
139
  # Early check if IP is in whitelist
140
  ip_in_whitelist = ip in WHITELIST_IPS
141
 
142
+ # Find the vote line (if any)
143
+ username = None
144
+ vote_conditions_met = False
145
+ vote_line_index = -1
146
+
147
+ # Search for the vote line
148
+ for i, line in enumerate(lines):
149
+ try:
150
+ line_data = json.loads(line)
151
+ if line_data.get('type') == 'vote':
152
+ vote_line_index = i
153
+ break
154
+ except json.JSONDecodeError:
155
+ continue
156
+
157
+ # If we found a vote line, check conditions and get username
158
+ if vote_line_index >= 0:
159
+ try:
160
+ vote_line_data = json.loads(lines[vote_line_index])
161
+
162
  # Only try to get username if the key exists
163
+ if 'username' in vote_line_data:
164
+ username = vote_line_data.get('username')
165
 
166
+ feedback = vote_line_data.get('feedback')
167
 
168
  # Check vote conditions: type is vote, feedback has 6 items, and at least 4 lines (2 rounds of chat)
169
+ # Only count lines up to and including the vote line
170
+ relevant_lines = lines[:vote_line_index + 1]
171
  vote_conditions_met = (
172
  isinstance(feedback, dict) and
173
  len(feedback) == 6 and
174
+ len(relevant_lines) >= 4
175
  )
176
+ except (json.JSONDecodeError, TypeError):
177
+ pass
 
 
 
 
178
 
179
  # Check if username is in whitelist (if username exists)
180
  username_in_whitelist = username in WHITELIST_USERNAMES if username else False