abuse: классификатор ловит панели/github/hn и мульти-теги, реальный total из индекса, кап API поднят до 3000
This commit is contained in:
@@ -30,9 +30,17 @@ def _clean(v, n=0):
|
||||
|
||||
# ---------- обзор ----------
|
||||
|
||||
def timeline(days=30, cat=None):
|
||||
"""Записей по дням + отдельно уязвимости и сливы. Пустые дни заполняются нулями."""
|
||||
BUCKET_SEEN = "date(seen,'unixepoch')"
|
||||
|
||||
|
||||
def timeline(days=30, cat=None, mode="pub"):
|
||||
"""Записей по дням + отдельно уязвимости и сливы. Пустые дни заполняются нулями.
|
||||
|
||||
mode="pub" — по дате публикации (или дате попадания в базу, если публикации нет);
|
||||
mode="seen" — строго по времени импорта: «что комбайн принёс за день».
|
||||
"""
|
||||
days = max(1, min(365, int(days or 30)))
|
||||
bucket = BUCKET_SEEN if mode == "seen" else BUCKET
|
||||
names = [s.name for s in sources.all_sources() if s.category == cat] if cat not in (None, "", "all") else None
|
||||
where, args = "", []
|
||||
if names is not None:
|
||||
@@ -40,7 +48,7 @@ def timeline(days=30, cat=None):
|
||||
args = list(names)
|
||||
sql = ("SELECT b, COUNT(*), SUM(CASE WHEN types LIKE '%,cve,%' THEN 1 ELSE 0 END),"
|
||||
" SUM(CASE WHEN types LIKE '%,leak,%' OR types LIKE '%,cve,%' THEN 1 ELSE 0 END)"
|
||||
" FROM (SELECT " + BUCKET + " AS b, types FROM items" + where + ") GROUP BY b ORDER BY b")
|
||||
" FROM (SELECT " + bucket + " AS b, types FROM items" + where + ") GROUP BY b ORDER BY b")
|
||||
got = {}
|
||||
with store.db() as c:
|
||||
for b, n, cve, sev in c.execute(sql, args):
|
||||
@@ -52,8 +60,9 @@ def timeline(days=30, cat=None):
|
||||
d = (today - _dt.timedelta(days=i)).isoformat()
|
||||
n, cve, sev = got.get(d, (0, 0, 0))
|
||||
out.append({"day": d, "n": n, "cve": cve, "sev": sev})
|
||||
return {"ok": True, "days": days, "points": out,
|
||||
return {"ok": True, "days": days, "mode": mode, "points": out,
|
||||
"total": sum(p["n"] for p in out),
|
||||
"last24": (out[-1] or {}).get("n", 0),
|
||||
"max": max([p["n"] for p in out] or [0])}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user