Написать / изменить необработанные теги ID3?

У меня есть файл MP3:

B{
    255 251 144 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 73 110 102 111 0 0 0 15
    0 0 30 161 0 50 3 66 0 3 5 8 10 13 15 18 20 24 26 28
    31 33 36 38 41 43 47 49 52 54 56 59 61 64 66 69 72
    75 77 79 82 84 87 89 92 95 98 100 103 105 107 110
    112 115 118 ~3277535 more~
}

И у меня есть некоторые метаданные, которые я хочу вставить в это:

H{
    { "title" "Superstar (feat. Krewella)" }
    { "artist" "Pegboard Nerds & NGHTMRE" }
    { "num" 1 }
}

У Factor нет словаря для записи тегов ID3 ​​(пока), но у меня есть необработанные данные файла и некоторые данные, которые я хотел бы написать.

Википедия не помогает, и источник mpg123 тоже ничего не проясняет.

Как поместить данные из хеш-таблицы в заголовок ID3v2?

1 ответ

Решение

У нас пока нет поддержки для написания тегов id3. Но у Python есть и у нас есть поддержка для упаковки модулей Python. Так что если вы хотите быть прагматичными в первую очередь sudo pip install mutagen затем:

USING: kernel python python.syntax sequences ;
IN: examples.python.mutagen

PY-QUALIFIED-FROM: mutagen.easyid3 => EasyID3 ( name -- obj ) ;
PY-METHODS: mutagen:easyid3:EasyID3 =>
    __setitem__ ( self key value -- )
    save ( self -- ) ;

: <EasyID3> ( str -- easyid3 )
    >py mutagen.easyid3:EasyID3 ;

: setitem ( obj key val -- )
    [ >py ] bi@ __setitem__ ;

: update-tags ( easyid3 assoc -- )
    dupd [ first2 setitem ] with each save ;

Затем вы можете написать теги ID3, как это:

[
    "/path/to/mp3-file.mp3" <EasyID3>  
    { 
        { "title" "Superstar (feat. Krewella)" }
        { "artist" "Pegboard Nerds & NGHTMRE" }
    } update-tags
] with-destructors

Конечно, делать это в чистом виде не невозможно. Но вам придется изучить спецификации mp3 и id3v1-2.

Другие вопросы по тегам