1.7 KiB
1.7 KiB
45. Implement Audio Integration (System/External Player)
meta: id: podcast-tui-app-45 feature: podcast-tui-app priority: P0 depends_on: [44] tags: [audio, integration, player, solidjs]
objective:
- Implement audio playback integration
- Support system audio player
- Support external player
- Handle audio events
deliverables:
src/utils/audio-player.tswith audio integrationsrc/components/AudioSettings.tsxwith audio player settingssrc/hooks/useAudio.tswith audio hook
steps:
- Create
src/utils/audio-player.ts:playWithSystemPlayer(audioUrl: string): voidplayWithExternalPlayer(audioUrl: string): voidgetSupportedPlayers(): string[]- Detect available players
- Create
src/components/AudioSettings.tsx:- Player selection dropdown
- System player options
- External player options
- Default player selection
- Create
src/hooks/useAudio.ts:- Manage audio state
- Handle player selection
- Handle audio events
- Update progress
tests:
- Unit: Test audio player detection
- Unit: Test player selection
- Integration: Test audio playback
acceptance_criteria:
- Audio plays correctly
- Multiple player options available
- Player selection persists
- Audio events handled
validation:
- Run application and test audio
- Select different player options
- Play episode and verify audio
- Test progress tracking with audio
notes:
- System player: macOS Terminal, iTerm2, etc.
- External player: VLC, QuickTime, etc.
- Use
opencommand for macOS - Use
xdg-openfor Linux - Use
startfor Windows - Handle audio errors gracefully
- Add player selection in settings
- Default to system player
- Store player preference