Tracking listings at Gables Queen Anne
  • Python 98%
  • Shell 2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-05-14 17:17:15 -05:00
.claude/tsc-cache first -- xfer 2026-05-14 17:17:15 -05:00
.omc first -- xfer 2026-05-14 17:17:15 -05:00
data first -- xfer 2026-05-14 17:17:15 -05:00
.gitignore first -- xfer 2026-05-14 17:17:15 -05:00
db.py first -- xfer 2026-05-14 17:17:15 -05:00
fetch.py first -- xfer 2026-05-14 17:17:15 -05:00
gables.db first -- xfer 2026-05-14 17:17:15 -05:00
main.py first -- xfer 2026-05-14 17:17:15 -05:00
models.py first -- xfer 2026-05-14 17:17:15 -05:00
parser.py first -- xfer 2026-05-14 17:17:15 -05:00
README.md first -- xfer 2026-05-14 17:17:15 -05:00
run.sh first -- xfer 2026-05-14 17:17:15 -05:00

gables_goggles

Tracks unit availability at a Gables apartment property over time by polling the Knock Rentals public API and snapshotting observations into a local SQLite database.

What it does

Each run:

  1. Fetches the current units listing from the property API.
  2. Upserts layouts and a dated unit observation into gables.db.
  3. Computes per-unit lifecycles (first seen, last seen, active today).
  4. Prints a JSON report of available units, units introduced today, and units that fell off the listing.

Usage

./run.sh

The script creates a .venv/ on first run and executes main.py. The project uses only the Python 3 standard library — no dependencies.

Files

  • fetch.py — HTTP client for the property units endpoint.
  • parser.py — Maps raw JSON into typed dataclasses.
  • models.py — Layout, Unit, UnitsData dataclasses.
  • db.py — SQLite schema, upserts, and lifecycle query.
  • main.py — Entry point: fetch → ingest → report.
  • gables.db — SQLite store (created on first run).