78fcf5f08f
- Move all sync I/O (id3::Tag, mp3_duration) into spawn_blocking via extract_metadata_blocking() to avoid stalling Tokio worker threads - Replace fetch_all with streaming .fetch() in reextract_all_audio_metadata for O(1) memory usage regardless of audio file count - Consolidate get_duration_secs into extract_metadata_blocking, eliminating redundant file open (tag was read twice before)