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: