*добавлен 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:
1 parent
078e68efa8
commit
8a03ad3cd4
5 files changed
+791
-7
No files matched your search
+2
-2
@@ -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]
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user