Skip to content

Add Seattle Times Midi crossword support#338

Open
slmingol wants to merge 10 commits intothisisparker:mainfrom
slmingol:feature/seattle-times-midi
Open

Add Seattle Times Midi crossword support#338
slmingol wants to merge 10 commits intothisisparker:mainfrom
slmingol:feature/seattle-times-midi

Conversation

@slmingol
Copy link
Copy Markdown

@slmingol slmingol commented May 2, 2026

…ion)

  • Add SeattleTimesMidiDownloader extending AmuseLabsDownloader
  • Command: stm (Seattle Times Midi)
  • Platform: AmuseLabs PuzzleMe with set 'seattletimes-crossword-midi'
  • URLs are placeholders - need browser inspection to discover actual endpoints
  • See SEATTLE_TIMES_README.md for completion instructions

The implementation structure is complete and follows the same pattern as
LATimesDownloader and NewsdayDownloader. Once the actual API URLs are
discovered via browser dev tools, this should work immediately.

slmingol added 10 commits May 2, 2026 09:47
…ion)

- Add SeattleTimesMidiDownloader extending AmuseLabsDownloader
- Command: stm (Seattle Times Midi)
- Platform: AmuseLabs PuzzleMe with set 'seattletimes-crossword-midi'
- URLs are placeholders - need browser inspection to discover actual endpoints
- See SEATTLE_TIMES_README.md for completion instructions

The implementation structure is complete and follows the same pattern as
LATimesDownloader and NewsdayDownloader. Once the actual API URLs are
discovered via browser dev tools, this should work immediately.
This Selenium-based script automates the process of discovering the
actual AmuseLabs API URLs by loading the page in a headless browser
and capturing network traffic.

Usage: python tools/discover_seattle_times_urls.py
- Discovered working URLs via curl testing
- Picker: https://seattletimes.amuselabs.com/puzzleme/date-picker
- Crossword: https://seattletimes.amuselabs.com/puzzleme/crossword
- Puzzle ID format: midi-crossword-{sequential_number}
- Puzzles use sequential IDs, not date-based IDs
- Implemented date-based lookup by parsing picker JSON
- Puzzle sizes: 9x9 (30 words), 10x10 (36-38 words), 11x11 (42-44 words)
- These are significantly smaller than standard 15x15 (70-80 words)!
- Documents the new Seattle Times Midi downloader
- Installation and usage examples
- Technical details and API endpoints
- Integration with crossword-catastrophe project
- Instructions for contributing back to upstream
Helper script to:
- Verify correct branch
- Check if fork exists
- Push to github.com/slmingol/xword-dl
- Provide next steps
Show available date range when puzzle not found in streakInfo.
The AmuseLabs API only provides ~30-60 days of puzzle metadata
for streak tracking, limiting historical puzzle access.
Puzzles can now be fetched for ANY historical date, not just the
14 days in streakInfo. Implementation:
- Estimates puzzle ID based on daily publication schedule
- Searches ±15 IDs around estimate
- Fetches each puzzle by ID directly (they're accessible even when
  not in streakInfo)
- Decodes puzzle data to extract publication date
- Compares dates directly to avoid timezone issues
- Resets URL template between attempts to prevent token accumulation

This allows backfilling the entire Seattle Times Midi archive going
back months or years, not just recent puzzles.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant