WallpaperMachine
The wallpapers you love. A new home on your Mac.
Park on the street near USC? See which weeks your street is swept, the next sweep dates, and how often meters are checked. Updated weekly.
LifestylePython · HTMLGitHub @citinaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
When parking enforcement comes by, from LADOT's own tickets — every block in the City of Los Angeles (LA Street Rules), and in more depth around USC (USC Street Parking)
Taken from the repository README
Loading the full README.
Read the full README ↗LA Street Rules is a map of the City of Los Angeles that answers, for any block:
Most LA streets have been swept every other week since 2021, like the 2nd & 4th Thursdays of the month, but many signs still say just "No parking Thursday". LADOT's tickets show when enforcement actually comes, one ticket at a time. LA Street Rules reads the last two years of them (about 3.9 million), matches most of them by address to one of about 48,000 blocks, and takes each side's sweeping weeks and times from StreetsLA's posted routes. It's rebuilt every week.
USC Street Parking (called USC Ticket Clock until October 2026) is where it started: the streets around campus, in more detail, down to when the sweeping officer usually shows up.
Search a block and the card shows each side's sweeping sign and next dates. Then open its meters and what gets ticketed there, and tap a kind of ticket to see what time of day it's written.
S Mariposa Ave, 600 block, in Koreatown: the east side is swept on the 2nd & 4th Thursdays and the west side on the 2nd & 4th Wednesdays. It has 47 metered spaces, and the card gives the chance of a meter ticket by day.
Find a block by searching a street, an address or a neighborhood, by picking a neighborhood on the map and tapping a block, or with "Show blocks near me". The card shows:
The north side of the 11100 block of W Weddington St in North Hollywood. The sign on the street reads "No parking 10 AM to 12 noon Friday", without saying which Fridays. The grid below it has one square per Friday for two years: the sweeping tickets came on the 2nd & 4th Fridays, the weeks StreetsLA posts for this street.
After a search, a one-line answer shows above the map (each side's weeks and next sweep day), with a link down to the card.
36th Pl, 1100 block, next to campus. On the map, each side of each street is colored by its sweeping day.
USC Street Parking covers a 2.5 × 2.5 km box around University Park, with about 318,000 tickets since 2014. Pick a block and it shows:
28th St, 500 block. A meter officer who finds every meter paid writes no ticket, so those visits are missing from the data: "estimate" adds them back, and "at least" counts only the visits that wrote a ticket.
Below the map, a summary for the whole area: every-other-week sweeping, when the officers arrive, and the three waves of meter patrols a day.
Everything here is built automatically from LADOT's tickets and StreetsLA's posted routes, which can be late or miss changes, so always read the posted signs. It isn't a guide to parking illegally: past tickets don't predict the next one, an officer can come by at any time, and a quiet hour in the data can still end in a ticket. A ticket only shows up when someone broke a rule, so quiet blocks look less enforced than they are. Each page explains its numbers under "How this was measured".
Sweeping signs. LA has swept each street every other week since March 2021 (the 1st & 3rd or the 2nd & 4th time its weekday comes up in a month), but many signs were never updated and still show only the day. LADOT says parking is legal on a street's off weeks (Larchmont Chronicle, March 2025), and when the change began it said officers would enforce street sweeping only on days that sweeping happens (LADOT, March 2021). The days, weeks and times on both pages come from StreetsLA's list of posted routes; only which side of a street gets which day is worked out from the tickets. To check your own street, look it up at streets.lacity.gov.
Two hand-written pages with no map library: the maps are SVG over OpenStreetMap tiles.
docs/streets/index.html, with no build step. fetch_city.py
downloads two years of city-wide tickets, the city's street centerlines, LADOT's meter inventory and StreetsLA's
posted sweeping routes. analyze_city.py matches each ticket's address to a block and side, works out each block's
rules, and splits the blocks into small map cells that load as you zoom in, plus a search index.
neighborhoods.py writes docs/streets/hoods.json, the LA Times' neighborhood outlines (committed; rerun it only if
they change). Search engines can't see the map's blocks (they're # links), so hood_pages.py writes a plain page
for each neighborhood under docs/streets/neighborhoods/, listing every block's sweeping days with a link into the
map, plus docs/sitemap.xml. It runs on every Pages deploy from that week's data and its pages aren't committed.template.html. analyze.py writes every number it shows to
data/bundle.json, basemap.py stitches the OpenStreetMap basemap, and build.py puts them together into one
self-contained docs/index.html (never edit that file by hand).citations.py holds what both share: address parsing, street-name cleanup, holidays, USC term dates, the posted
sweeping routes, ticket-kind names, and the street centerlines (matching an address to its street, and which compass
side of a block has the even house numbers).On LA Street Rules, the map images come from OpenStreetMap and the block data from GitHub Pages, one small area at a time, so both can tell roughly which part of the city you're looking at. "Show blocks near me" only moves the map; the page doesn't send or save your location.
Weekly update. Every Monday, .github/workflows/weekly.yml reruns both pipelines
on GitHub Actions. LA Street Rules' data (about 16 MB of JSON) isn't committed: it goes to the city-data release,
overwritten each week, and pages.yml unpacks it into docs/streets/data/ when it publishes. The raw downloads are
kept in the city-downloads release, so a run refreshes only the recent ticket months, a few older ones, and the
street centerlines once a month; if a city server is down, it keeps the older copy. The USC job commits the new
data/bundle.json and docs/index.html. If the ticket count falls more than 10% (city) or 1% (USC), that job stops
and last week's page stays up. USC term dates in citations.py run through fall 2027; the run log warns once the newest
ticket is past them. To rebuild by hand, run gh workflow run weekly.yml.
./fetch_city.py # data/city/: two years of city-wide tickets (~450 MB), street centerlines, meter inventory, posted sweeping routes
./analyze_city.py # docs/streets/data/ (~16 MB of JSON, not committed); serve docs/ and open /streets/
./neighborhoods.py # docs/streets/hoods.json (committed; only rerun if the city updates the outlines)
./hood_pages.py # docs/streets/neighborhoods/ and docs/sitemap.xml, from docs/streets/data/ (not committed)
./fetch_citations.py # data/citations_usc.csv, data/meters_usc.csv, data/sweep_routes.geojson, data/centerlines_usc.json
./basemap.py # docs/basemap.jpg (36 OpenStreetMap tiles at zoom 16, cached in .tilecache/)
./analyze.py # data/bundle.json (every number the USC page shows)
./build.py # docs/index.html
then python3 -m http.server 8766 --directory docs and open http://localhost:8766/streets/ (or / for USC Ticket
Clock). Python 3 with pandas, numpy, scipy and Pillow. The raw downloads and the tile cache aren't committed; they
regenerate from the commands above.
Citina Liang, a PhD candidate in Industrial & Systems Engineering at USC Viterbi who models how people behave and how diseases spread, with Claude Code, from first commit to every block in the city in about a week (9–16 Sep 2026). Say hi on LinkedIn or at [email protected].
Its sisters are SF Streets, San Francisco block by block, and Curb Log, available parking on Vermont Ave by W 36th St from LADOT's parking sensors.
Map © OpenStreetMap contributors. Data: LADOT Parking Citations and Metered Parking Inventory (data.lacity.org), StreetsLA's Posted Street Sweeping Routes, and the City of LA's street centerlines and the LA Times' neighborhood outlines (LA GeoHub).