אבל המידע שאני צריך לא שם
מאקו העלו במלחמה דף זמן ממד שמאפשר לחפש את הישוב שלכם ולגלות כמה אזעקות היו. כל ישוב גם מדורג לדוגמה רמת גן מערב מדורגת מקום 6 במספר האזעקות. שכן מהמקלט רצה לדעת מי העיר עם הכי הרבה אזעקות אז חיפשנו את כפתור ה"מובילים" אבל לא היה כזה.
https://sheltertime.mako.co.il/
מה עושים? עד עידן ה AI התשובה היתה לפתוח את מסך כלי הפיתוח של כרום, לחפש בקשות רשת מעניינות, אולי להסתכל על ה JavaScript, להבין מאיפה מגיעים הנתונים ולמשוך אותם בסקריפט כדי להציג את הדברים כמו שאחנו רוצים.
היום הייתי צריך רק לכתוב את הפרומפט הבא בקלוד קוד:
Use chrome-devtools
Explain how this site works
https://sheltertime.mako.co.il/
Create a command line script in this directory that uses curl and shows the 5 cities with the highest count of alerts
וכן קלוד קוד שלי מחובר ל mcp של כרום אז הוא יכול לפתוח דפדפן ולחטט בעצמו אבל את כל השאר הוא עשה לבד. המודל הוא סיני בשם glm-5.1 בגלל המחיר. זה הסקריפט שנוצר:
#!/bin/bash
# Top 5 cities by shelter time from Mako's Shelter Time site
# Data source: https://sheltertime.mako.co.il/
DATA_URL='https://storage.googleapis.com/mamad-time-mako.firebasestorage.app/data_2026.json?v=7'
curl -s "$DATA_URL" \
-H 'Accept: application/json' \
-H 'Referer: https://sheltertime.mako.co.il/' \
-H 'User-Agent: Mozilla/5.0' \
| python3 -c '
import json, sys
from collections import defaultdict
data = json.load(sys.stdin)
# Each top-level key is an operation (e.g. "Iran")
# Each city: [total_time_ms, alert_count, cat1, cat2, days, rank, percentile]
for op, cities in data.items():
print(f"\n=== Operation: {op} ===")
print("Top 5 cities by total shelter time:")
print("-" * 55)
sorted_by_time = sorted(cities.items(), key=lambda x: x[1][0], reverse=True)[:5]
for city, vals in sorted_by_time:
ms = vals[0]
hours = ms / 3600000
alerts = vals[1]
print(f" {hours:>8.1f} hrs ({alerts:>4} alerts) {city}")
print()
print("Top 5 cities by alert count:")
print("-" * 55)
sorted_by_alerts = sorted(cities.items(), key=lambda x: x[1][1], reverse=True)[:5]
for city, vals in sorted_by_alerts:
ms = vals[0]
hours = ms / 3600000
alerts = vals[1]
print(f" {alerts:>5} alerts ({hours:>6.1f} hrs) {city}")
'
נשים לב:
למרות שביקשתי Shell Script קיבלתי קוד פייתון. ה Shell מפעיל פייתון. לא הכי ממושמע מצד glm אבל מצד שני אפשר לראות למה הוא עשה את זה. אולי גם הוא מסתבך עם התחביר של jq.
גלם כן הבין מיד את מבנה הנתונים והוסיף הערה שמסבירה מה יש ברוב העמודות. לא ברור מה זה cat1 ו cat2 אבל כל השאר די מסבירים את עצמם.
לא ברור למה גלם החליט לייבא את defaultdict, בכל מקרה הוא לא בשימוש.