UCLA Daily: Hammer Fetch
Hammer Museum events, dated automatically for today
- ucla_data
- ucla_data
- segment_text
The Hammer is UCLA's contemporary art museum, its exhibitions are free to the public, and its events page is server-rendered HTML - which is exactly why UCLAHammerFetch can scrape it with nothing but the standard library. It's one of the UCLA Daily pack's scraper-style fetchers, and it has one neat trick: if you leave the URL alone, it builds the URL with today's date baked in, so the page it scrapes is always showing current and upcoming programs.
The pack, by Jeffrey A. Brick, aggregates UCLA campus events and news into lobby-display cards. All fetchers share the same contract - UCLA_DATA in, UCLA_DATA plus segment_text out - so Hammer Fetch chains with any other fetcher between UCLADailyDataInit and the card, narrator, or pulse nodes.
How it works
By default it scrapes hammer.ucla.edu/programs-events/ with a start_date query parameter set to today, so you're always pulling the forward-looking view rather than the museum's full archive. Event detail URLs follow a {year}/{event-slug} pattern that the deep-dive card uses for enrichment and QR codes. HTTP goes through the shared http_utils helper - requests preferred, urllib fallback - and any scrape failure is recorded in errors[] instead of aborting the graph. IS_CHANGED forces a re-fetch on every queue run.
The custom_url input is the escape hatch for the one thing that breaks this design: a site redesign. If the Hammer rebuilds their events page as a JS app - the fate that already befell cinema.ucla.edu and arts.ucla.edu in this pack - the auto-generated URL stops being scrapable, and you'll be glad there's an override field to paste a working URL into.
The inputs
- ucla_data - required pipeline dict from
UCLADailyDataInit. - max_items - 1–30, default 10.
- custom_url - optional override; leave blank to auto-generate with today's date.
Outputs
Two: ucla_data (enriched, chainable) and segment_text - the plain-text event list for UCLALobbyCard or UCLANarrator.
Install
ComfyUI Manager → search UCLA Daily, or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/jbrick2070/ComfyUI-UCLADaily.git
pip install qrcode pillow requests
Restart ComfyUI. No keys, no models.
Common issues
Same scraper family as CS, Fowler, and SEIS: it lives and dies by the museum's HTML staying put. And remember every queue run is a live scrape - if you're iterating on card layout, don't leave Hammer Fetch (plus four siblings) hammering their servers on every run. Pull once, render, iterate.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| ucla_data | UCLA_DATA | — | |
| max_items | INT | 101–30 | Maximum number of events to extract. |
| custom_urlopt | STRING | Override URL. Leave blank to auto-generate with today's date. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| ucla_data | UCLA_DATA | — |
| segment_text | STRING | — |