Start stop radio stations by schedule or menu in MacOS.
Used AI-assisted development, all code AI generated.
npm start
# or
./start-all.shnpm stop
# or
./stop-all.shStart Scheduler Only:
npm run scheduler
# or
./service.sh startStart Menubar Only:
Option 1: Double-click (macOS)
- First time only - make the file executable:
chmod +x menubar/start-menubar.command
- Double-click
menubar/start-menubar.commandin Finder
Option 2: Terminal
npm run menubar
# or
cd menubar && npm startnpm run status
# or
./service.sh statusImportant: Amazon cookies are valid for 14 days and are automatically refreshed by the application every 7 days. You should rarely need to manually refresh!
Only refresh manually if:
- The app hasn't run for more than 14 days (cookie expired)
- You're setting up for the first time
- You see persistent "Error: no JSON" authentication failures
npm run refreshThis will:
- Start a proxy server at
http://localhost:3456 - Open that URL in your browser
- Log in to your Amazon account (amazon.com or amazon.de)
- Automatically save the new cookie and registration data
How automatic refresh works:
- Cookie is valid for 14 days
- App refreshes it automatically every 7 days
- Uses OAuth tokens (no manual login needed after initial setup)
- Refresh happens in the background without interruption
Note: One-time authentication errors are usually network issues or Amazon rate-limiting. The app will retry automatically. Only use manual refresh if errors persist for days.
- Scheduler Service: Automated radio playback based on schedule.json (runs as background daemon)
- Menubar App: Manual control UI in system tray (Electron app)
- Both services run independently and can be started/stopped separately
The system uses unified log files with errors marked inline:
logs/scheduler.log- All scheduled task activity and errorslogs/menubar.log- All menubar app activity and errors
Errors are marked with ERROR: prefix in the same file. No separate error logs needed.
View logs:
# Watch scheduler logs in real-time
tail -f logs/scheduler.log
# Watch menubar logs in real-time
tail -f logs/menubar.log
# Search for errors
grep ERROR logs/scheduler.log
grep ERROR logs/menubar.logFirst-time setup or after updating:
# Clean up old log files (output.log, error.log, menubar-error.log)
./cleanup-logs.sh # macOS/Linux
cleanup-logs.cmd # Windows
# Reinstall scheduler service to use new logging configuration
./service.sh stop
./service.sh install
./service.sh startAll activity is logged to logs/scheduler.log and logs/menubar.log. Errors are marked with ERROR: prefix.
Old log files still being created: You need to reinstall the scheduler service after updating:
./service.sh stop
./service.sh install
./service.sh startScheduler not running:
npm run status
# If not running: npm run schedulerAuthentication errors: Only refresh if errors persist:
npm run refreshView active schedules:
Check logs/scheduler.log for the schedule list printed at startup.