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
..
2026-07-12 16:20:42 +03:00
2025-12-15 15:41:41 -08:00
2026-07-16 10:02:01 +03:00
2026-01-10 00:09:04 +03:00
2025-12-15 17:27:08 -08:00
2026-07-15 20:26:31 +03:00
2026-07-15 13:28:21 +00:00
2026-01-09 01:36:14 +03:00
2026-07-12 16:20:42 +03:00
2026-01-09 08:44:33 +08:00
2026-01-10 00:09:04 +03:00
2025-12-21 08:12:48 -08:00
2026-01-09 01:36:14 +03:00
2026-07-16 08:13:37 +00:00
2026-07-15 15:19:01 +00:00
2026-01-09 01:36:14 +03:00
2026-07-14 10:17:20 +00:00
2026-07-15 11:00:18 +00:00
2026-07-15 11:00:18 +00:00
2026-07-15 11:00:18 +00:00
2026-07-15 14:29:29 +00:00
2026-01-09 01:36:14 +03:00
2026-07-12 16:20:42 +03:00
2026-01-09 01:36:14 +03:00
2026-01-09 01:36:14 +03:00
2026-07-18 14:12:01 +03:00
2026-07-16 10:19:01 +03:00
2026-07-16 08:53:15 +00:00
2026-07-16 09:31:26 +00:00
2026-01-09 01:36:14 +03:00
2026-07-08 17:16:33 +00:00
2026-01-09 01:36:14 +03:00
2026-01-09 01:36:14 +03:00
2026-01-09 01:36:14 +03:00
2026-01-09 01:36:14 +03:00
2026-01-09 01:36:14 +03:00
2026-07-14 10:09:27 +00:00
2026-07-14 10:09:27 +00:00
2026-07-16 10:02:01 +03:00
2025-12-21 08:12:48 -08:00
2026-07-15 20:44:19 +03:00
2026-07-16 07:34:58 +00:00
2026-07-14 10:26:05 +00:00
2025-12-21 08:12:48 -08:00
2026-07-15 11:56:06 +00:00
2026-01-10 00:09:04 +03:00
2026-01-09 01:36:14 +03:00
2026-07-16 10:19:01 +03:00
2026-07-14 18:27:22 +00:00
2026-01-09 01:36:14 +03:00
2026-07-15 14:45:38 +00:00
2026-01-09 01:36:14 +03:00
2025-12-21 08:12:48 -08:00
2026-01-09 01:36:14 +03:00
2026-07-14 10:11:52 +00:00
2026-07-15 20:26:31 +03:00
2026-07-14 10:06:51 +00:00
2026-07-12 16:20:42 +03:00
2026-07-16 10:19:01 +03:00
2026-01-10 00:09:04 +03:00
2026-01-09 01:36:14 +03:00
2026-07-14 10:27:48 +00:00
2025-10-10 18:07:18 -07:00
2026-07-12 16:20:42 +03:00
2026-07-15 15:01:17 +00:00
2026-07-15 20:20:18 +03:00
2026-07-05 19:07:57 +00:00
2026-07-15 10:20:58 +00:00
2026-07-14 11:02:34 +00:00
2026-07-14 08:51:40 +08:00