Artem Akymenko
|
d8634f812d
|
refactor(domain): extract audio sink abstraction to domain layer
- New domain/audio_sink.py: AudioSink context manager + open_audio_sink() factory
- Supports WAV/FLAC (soundfile) and MP3/Opus/M4B (ffmpeg pipe)
- cancel_check, extra_ffmpeg_args, ffmpeg_cmd parameters
- 17 tests in test_domain_audio_sink.py
- WebUI: replaced local AudioSink + _open_audio_sink with domain module
- Removed 35 lines, 3 call sites now use open_audio_sink()
- PyQt: replaced 3 inline audio output setups with domain module
- New _open_merged_sink() helper encapsulates m4b cover art logic
- ExitStack for automatic cleanup in main conversion
- Removed ~140 lines of duplicated ffmpeg/soundfile boilerplate
|
2026-07-18 14:12:01 +03:00 |
|