Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -148,15 +148,45 @@ def read_approved_list(file) -> List[str]:
|
|
| 148 |
st.error(f"Failed to parse approved list: {e}")
|
| 149 |
return []
|
| 150 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 151 |
def match_payload(payload: str, approved: List[str]) -> bool:
|
| 152 |
if not payload:
|
| 153 |
return False
|
| 154 |
-
|
| 155 |
for a in approved:
|
| 156 |
-
|
| 157 |
-
if
|
| 158 |
return True
|
| 159 |
return False
|
|
|
|
| 160 |
|
| 161 |
st.set_page_config(page_title="QR Code Anomaly Scanner", layout="wide")
|
| 162 |
st.title("🕵️ QR Code Anomaly Scanner (Retail Store 360° CCTV Frames)")
|
|
|
|
| 148 |
st.error(f"Failed to parse approved list: {e}")
|
| 149 |
return []
|
| 150 |
|
| 151 |
+
# 🔹 FIX START: robust normalization + exact matching
|
| 152 |
+
def normalize_payload(payload: str) -> str:
|
| 153 |
+
if not payload:
|
| 154 |
+
return ""
|
| 155 |
+
p = payload.strip().lower()
|
| 156 |
+
|
| 157 |
+
if p.startswith("upi://"):
|
| 158 |
+
try:
|
| 159 |
+
from urllib.parse import urlparse, parse_qs
|
| 160 |
+
parsed = urlparse(p)
|
| 161 |
+
qs = parse_qs(parsed.query)
|
| 162 |
+
if "pa" in qs:
|
| 163 |
+
return qs["pa"][0].strip().lower()
|
| 164 |
+
except Exception:
|
| 165 |
+
pass
|
| 166 |
+
|
| 167 |
+
if "pa=" in p:
|
| 168 |
+
try:
|
| 169 |
+
part = p.split("pa=")[1].split("&")[0]
|
| 170 |
+
return part.strip().lower()
|
| 171 |
+
except Exception:
|
| 172 |
+
pass
|
| 173 |
+
|
| 174 |
+
for prefix in ["upi://", "http://", "https://"]:
|
| 175 |
+
if p.startswith(prefix):
|
| 176 |
+
p = p[len(prefix):]
|
| 177 |
+
|
| 178 |
+
return p
|
| 179 |
+
|
| 180 |
def match_payload(payload: str, approved: List[str]) -> bool:
|
| 181 |
if not payload:
|
| 182 |
return False
|
| 183 |
+
norm_payload = normalize_payload(payload)
|
| 184 |
for a in approved:
|
| 185 |
+
norm_a = normalize_payload(a)
|
| 186 |
+
if norm_payload == norm_a:
|
| 187 |
return True
|
| 188 |
return False
|
| 189 |
+
# 🔹 FIX END
|
| 190 |
|
| 191 |
st.set_page_config(page_title="QR Code Anomaly Scanner", layout="wide")
|
| 192 |
st.title("🕵️ QR Code Anomaly Scanner (Retail Store 360° CCTV Frames)")
|