krz/omaha-metro-blotter
Archive of police activity and ALPR surveillance across the Omaha metro.
clone: git clone https://gitbay.org/krz/omaha-metro-blotter.git
ec96b33550d184d453302fb5f73f099889a49b16
signed_unknown_key
author: Christian Cleberg <hello@cleberg.net> · 2026-08-23T19:24:45Z
committer: <noreply@github.com>
.github/workflows/daily-pull.yml | 59 +++++ .gitignore | 1 + README.nfo | 26 ++- build_site.py | 174 ++++++++++++++ fetch_boundaries.py | 74 ++++++ raw_data/boundaries.geojson | 1 + site_template.html | 480 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 814 insertions(+), 1 deletion(-) @@@ -93,21 -115,14 +115,23 @@@ FLOCK SEARCH AUDI cloudflare serves a challenge to every non-browser client, so ingest.py cannot fetch it. collecting is manual: open the portal, - "download csv", save it as raw_data/flock/<slug>_<date>.csv and - commit. loading is not manual -- the flock source runs in the daily - job and picks up whatever is committed. search ids are stable - uuids, so overlapping exports dedupe. + click "download csv", then + + .venv/bin/python ingest.py --import-flock ~/Downloads/public_search_audit.csv + + which checks the columns, files it under the right slug and loads + it. commit what it writes. every export is named + public_search_audit.csv with the agency nowhere inside, so pass + --agency for any portal other than council bluffs. + + loading is not manual -- the flock source runs in the daily job and + picks up whatever is committed. search ids are stable uuids, so + overlapping exports dedupe and re-importing the same window is a + no-op. - the portals keep 30 days. miss a month and that month is gone. + the portals keep 30 days. miss a month and that month is gone, so + the workflow warns at 21 days since the last export and fails the + run at 27, while there is still time to act. as of the first export, 100 of 442 council bluffs searches carried any reason at all, against an access policy stating that all access