*добавлен 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
@@ -9,7 +9,7 @@ import utils
@[inline]
fn decode_bytes(bytes []u8) string {
format := if utils.is_utf8(bytes) { "UTF-8" } else { "CP1251" }
text := iconv.encoding_to_vstring(bytes, format) or { "Can't decode" }
text := (iconv.encoding_to_vstring(bytes, format) or { "Can't decode" }).all_before('\x00')
return text
}
@@ -106,7 +106,7 @@ pub fn (mut id3v1 ID3v1) insert(mut audio File, position i8) []u8 {
// Положение указателя
size := audio.tell() or { panic(err) }
// Чтение всех байта, кроме последних 128
mut all_bytes := audio.read_bytes(int(size))#[..position]
mut all_bytes := audio.read_bytes(int(size))#[..position].clone()
all_bytes << bytes_tag
// }