From a950845ec6f2e8498e8c8e12b5188bce852452a4 Mon Sep 17 00:00:00 2001 From: hao Date: Wed, 18 Mar 2026 17:30:05 -0700 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0:=202=20=E4=B8=AA=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20-=202026-03-18=2017:30:05?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/intel/sources/osv_api.py | 6 +++++- scripts/intel/sources/runner.py | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/intel/sources/osv_api.py b/scripts/intel/sources/osv_api.py index f6fc80bc..a910a7c3 100644 --- a/scripts/intel/sources/osv_api.py +++ b/scripts/intel/sources/osv_api.py @@ -7,7 +7,7 @@ import requests from intel.http_client import build_session, request from intel.models import Candidate -from intel.utils import unique +from intel.utils import parse_dt, unique QUERY_BATCH_URL = "https://api.osv.dev/v1/querybatch" @@ -92,6 +92,7 @@ def fetch(system: Dict[str, Any], source: Dict[str, Any]) -> List[Candidate]: packages = system.get("package_names", []) if not packages: return [] + since_dt = source.get("_since_dt") queries = [{"package": {"name": pkg["name"], "ecosystem": pkg["ecosystem"]}} for pkg in packages] session = build_session(source) @@ -113,6 +114,9 @@ def fetch(system: Dict[str, Any], source: Dict[str, Any]) -> List[Candidate]: vuln_id = summary.get("id") if not vuln_id: continue + modified = parse_dt(summary.get("modified")) + if since_dt is not None and modified is not None and modified < since_dt: + continue if vuln_id not in detail_cache: detail_cache[vuln_id] = _fetch_detail(session, vuln_id) vuln = detail_cache[vuln_id] diff --git a/scripts/intel/sources/runner.py b/scripts/intel/sources/runner.py index 118066f6..92e19f76 100644 --- a/scripts/intel/sources/runner.py +++ b/scripts/intel/sources/runner.py @@ -143,7 +143,9 @@ def _collect_source_candidates( }, ) try: - items = handler(system, source) + source_with_context = dict(source) + source_with_context["_since_dt"] = since_dt + items = handler(system, source_with_context) filtered = [item for item in items if _passes_since(item, since_dt, include_undated)] return filtered, None except Exception as exc: