v0.5.0
Pre-release
Pre-release
What's Changed
- Add a CI workflow running gofmt, vet, and race tests in #16
- Keep raw Gracenote fields on channels and programs, with an XMLTV golden test in #17
- Add a lineup model that retains every provider position in #18
- Serve the provider lineup at
/api/lineup.jsonin #19 - Move the grid download loop into an importable
scrapepackage in #20 - Landed together on main via #21. Closes #15.
New for consumers
GET /api/lineup.jsonreturns every channel position in the active lineup, sorted by number, with station ID, callsign, affiliate, Gracenote station filters, and the resolved logo. A station carried at two numbers appears twice. See the README for the response shape.- Library use.
scrape.Fetch(ctx, prefs, opts)downloads a lineup's listings and returns aguide.TVGuidewithout running the server. See "Using as a Library" in the README. - Programs now carry the TMS ID, release year, generic flag, and the raw Gracenote filter list separately from XMLTV categories.
Upgrade notes
- One rescrape on first start. The guide cache now has a schema version. A cache from 0.4.0 or earlier is rebuilt once so the new lineup data is populated.
- Empty results are no longer written. If every grid request fails, the scrape is treated as a failure, the previous guide stays live, and the normal 15-minute retry applies. Previously an empty guide would have been written.
- Stable channel order. XMLTV channels are now emitted in first-seen order instead of Go map order, so the file is stable between runs. Program content is unchanged.
- Tag naming. Tags now carry a
vprefix so the module can be pinned withgo get github.com/daniel-widrick/GraceNoteScraper@v0.5.0. Earlier tags are unchanged.
Full Changelog: 0.4.0...v0.5.0