{"record":{"id":"1528d80dfd3b7a71","repo":"calesthio/OpenMontage","slug":"candidate-candidate-clip-id-has-no-download-url-1528d8","errorCode":null,"errorMessage":"Candidate {candidate.clip_id} has no download_url","messagePattern":"Candidate (.+?) has no download_url","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"tools/video/stock_sources/nasa.py","lineNumber":123,"sourceCode":"        data = r.json()\n        items = ((data.get(\"collection\") or {}).get(\"items\") or [])\n\n        out: list[Candidate] = []\n        for item in items:\n            cand = self._hydrate_candidate(item, filters)\n            if cand is not None:\n                out.append(cand)\n        return out\n\n    def download(self, candidate: Candidate, out_path: Path) -> Path:\n        \"\"\"Stream the candidate's file to `out_path`.\n\n        Same pattern as the other adapters.\n        \"\"\"\n        import requests  # lazy\n\n        if not candidate.download_url:\n            raise ValueError(\n                f\"Candidate {candidate.clip_id} has no download_url\"\n            )\n\n        out_path = Path(out_path)\n        out_path.parent.mkdir(parents=True, exist_ok=True)\n\n        with requests.get(\n            candidate.download_url, stream=True, timeout=300\n        ) as r:\n            r.raise_for_status()\n            with open(out_path, \"wb\") as f:\n                for chunk in r.iter_content(chunk_size=1 << 16):\n                    if chunk:\n                        f.write(chunk)\n        return out_path\n\n    # ------------------------------------------------------------------\n    # Internals","sourceCodeStart":105,"sourceCodeEnd":141,"githubUrl":"https://github.com/calesthio/OpenMontage/blob/95e1c3d0ab93482159818560f6a8c8e866b9139f/tools/video/stock_sources/nasa.py#L105-L141","documentation":"Error \"Candidate {candidate.clip_id} has no download_url\" thrown in calesthio/OpenMontage.","triggerScenarios":"A NASA stock-footage candidate is selected for download but its metadata has no download_url.","commonSituations":"See trigger scenarios.","solutions":["Filter this candidate out and select another search result that has a download_url.","Re-run the search with different keywords; NASA collection entries sometimes lack direct file links."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"95e1c3d0ab93482159818560f6a8c8e866b9139f","analyzedAt":"2026-08-15T06:31:20.014Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}