*добавлен API для аудиокниг (metadata/audiobook.v): TCOM, TIT1, COMM, TXXX, APIC, запись в файл без ID3v2, cp1251, потоковая перезапись

*публичные функции перехватывают панику (recover) и возвращают ошибку, проверка размера тэга
*совместимость с V master: iconv больше не обрезает NUL, у Frame убран @[heap] (баг кодогенерации)
*тесты test/audiobook_test.v

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
K1ndWha1eandClaude Opus 5.5 committed 2026-10-08 15:17:53 +03:00
1 parent 078e68efa8
commit 8a03ad3cd4
5 files changed
+791 -7

No files matched your search

+2 -2
View File
@@ -2,7 +2,7 @@ module metadata
import encoding.iconv
@[heap]
// Без @[heap]: на V master `tag.others << frame` для heap-структуры кладёт в []Frame указатель
pub struct Frame {
pub mut:
data string
@@ -71,7 +71,7 @@ fn (mut frame Frame) fill(bytes []u8, start_position u64, idv3_version u8) {
}
// Замыкающие нули не относятся к данным
frame.data = (iconv.encoding_to_vstring(bytes[data_start..frame.end], frame.encoding_name) or { "" }).trim_right('\x00')
frame.data = (iconv.encoding_to_vstring(bytes[data_start..frame.end], frame.encoding_name) or { "" }).all_before('\x00')
frame.addition = bytes[frame.start..frame.start + 10]
}