*исправлена запись новых тегов и apic
This commit is contained in:
1 parent
abab08f133
commit
c06ef69c67
3 files changed
+63
-41
No files matched your search
+4
-30
@@ -70,39 +70,13 @@ pub fn (id3v24 ID3v24) to_v1() ID3v1 {
|
||||
}
|
||||
}
|
||||
|
||||
// Формируем полный полный тэг в байтах
|
||||
pub fn (mut id3v24 ID3v24) get_full_embed_tag() {
|
||||
// Проход по всем полям стуктуры
|
||||
mut tag_bytes := []u8{}
|
||||
|
||||
id3v24.size = 0
|
||||
|
||||
$for field in ID3v24.fields {
|
||||
$if field.typ is Frame {
|
||||
// Читаются только заполненные тэги
|
||||
if id3v24.$(field.name).cur_size > 0 {
|
||||
id3v24.size += id3v24.$(field.name).cur_size
|
||||
id3v24.size += 10
|
||||
|
||||
if id3v24.$(field.name).name.to_lower() != "apic" {
|
||||
// Кодируем значения полей
|
||||
tag_bytes << id3v24.$(field.name).get_encoded_frame_tag(id3v24.version)
|
||||
} else {
|
||||
// Картинка не трогается
|
||||
tag_bytes << id3v24.$(field.name).apic or { []u8{len: 4}}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
encode_header(mut id3v24)
|
||||
id3v24.encoded_header << tag_bytes
|
||||
}
|
||||
|
||||
|
||||
pub fn (mut id3v24 ID3v24) insert_tags_into_audio(mut audio File) {
|
||||
full_part := read_all(reader: audio) or { [u8(0), u8(0), u8(0), u8(0)] }
|
||||
full_part := read_all(reader: audio) or { panic(err) }
|
||||
|
||||
sound_part := full_part[int(id3v24.size) + 10 .. ]
|
||||
// Размер старого тэга берётся из файла, id3v24.size уже хранит размер нового
|
||||
old_size := get_size_v24(full_part[6..10])
|
||||
sound_part := full_part[int(old_size) + 10 .. ]
|
||||
|
||||
id3v24.encoded_header << sound_part
|
||||
}
|
||||
Reference in new issue
Block a user