абстрагируя преобразование между тегами id3, m4a теги, flac теги

Вдохновленный Таплером, небольшая модификация - вот мой ответ.

var elements = [1, 2, 3, 4, 5,6,7,8];

(function appendTyping(elements, index) {
                var element = elements[index];

                if (++index <= elements.length) {
                    if (element == 3 || element == 6) {
                        $('div').append('typing....');
                        console.log(element);
                        setTimeout(function () { appendTyping(elements, index); }, 2000);
                    }
                    else {
                        $('div').append(index);
                        console.log(element);
                        appendTyping(elements, index);
                    }
                }


            })(elements, 0);
14
задан fholo 30 March 2009 в 15:49
поделиться

4 ответа

Мне была нужна эта точная вещь, и я также понял быстро, что мутаген не является достаточно удаленной абстракцией, чтобы сделать такого рода вещь. К счастью, авторам мутагена был нужен он для их медиаплеера QuodLibet.

Я должен был вырыть через источник QuodLibet, чтобы узнать, как использовать его, но после того как я понял это, я записал утилиту, названную sequitur, который предназначается, чтобы быть командной строкой, эквивалентной ExFalso (компонент меток QuodLibet). Это использует этот механизм абстракции и обеспечивает некоторую добавленную абстракцию и функциональность.

Если Вы хотите проверить источник, вот ссылка на последний tarball. Пакет является на самом деле рядом трех сценариев командной строки и модуля для взаимодействия через интерфейс с QL. Если Вы хотите установить все это, можно использовать:

easy_install QLCLI

Одна вещь иметь в виду о exfalso/quodlibet (и следовательно sequitur) состоит в том, что они на самом деле реализуют аудио метаданные правильно, что означает, что все теги поддерживают несколько значений (если тип файла не запрещает его, который нет многих, которые делают). Так, выполнение чего-то как:

print qllib.AudioFile('foo.mp3')['artist']

Не произведет единственную строку, но произведет список строк как:

[u'The First Artist', u'The Second Artist']

Путем Вы могли бы использовать его для копирования тегов, будет что-то как:

import os.path
import qllib  # this is the module that comes with QLCLI

def update_tags(mp3_fn, flac_fn):
    mp3 = qllib.AudioFile(mp3_fn)
    flac = qllib.AudioFile(flac_fn)
    # you can iterate over the tag names
    # they will be the same for all file types
    for tag_name in mp3:
        flac[tag_name] = mp3[tag_name]
    flac.write()

mp3_filenames = ['foo.mp3', 'bar.mp3', 'baz.mp3']

for mp3_fn in mp3_filenames:
    flac_fn = os.path.splitext(mp3_fn)[0] + '.flac'
    if os.path.getmtime(mp3_fn) != os.path.getmtime(flac_fn):
        update_tags(mp3_fn, flac_fn)
9
ответ дан 1 December 2019 в 14:33
поделиться

Можно просто записать простое приложение с отображением каждого имени тега в каждом формате к "абстрактному тегу" тип и затем его легкое для преобразования от одного до другого. Вы не должны даже знать все доступные типы - просто те, которыми Вы интересуетесь.

Кажется мне как тип проекта выходными инвестиций времени, возможно меньше. Весело проведите время, и я не буду возражать посмотреть на Вашу реализацию и даже использовать ее - если Вы не будете возражать выпускать ее, конечно, :-).

0
ответ дан 1 December 2019 в 14:33
поделиться

Есть также tagpy, который, кажется, хорошо работает.

0
ответ дан 1 December 2019 в 14:33
поделиться

Вот пример кода, сценарий, который я написал для копирования тегов между файлы, использующие классы музыкального формата Quod Libet (не мутагены!). Бежать это, просто сделайте copytags.py src1 dest1 src2 dest2 src3 dest3 , и он скопирует теги из sec1 в dest1 (после удаления любых существующих тегов на dest1!) и так далее. Обратите внимание на черный список, который вы должны настроить ваше собственное предпочтение. Черный список не только предотвращает определенные теги от копирования, это также предотвратит их затирание в файл назначения.

Чтобы было ясно, не зависящие от формата теги Quod Libet не являются особенностью мутагена; он реализован поверх мутагена . Поэтому, если вы хотите использовать теги без привязки к формату, вам нужно использовать quodlibet.formats.MusicFile для открытия файлов вместо mutagen.File .

Код теперь можно найти здесь: https://github.com/DarwinAwardWinner/copytags

Если вы также хотите одновременно выполнять перекодировку, используйте это: https://github.com/DarwinAwardWinner/transfercoder

One Важной деталью для меня было то, что уроки музыкального формата Quod Libet ожидаем загрузки конфигурации QL, поэтому строка config.init в моем сценарий. Без этого я получаю всевозможные ошибки при загрузке или сохранении файлы.

Я тестировал этот скрипт для копирования между flac, ogg и mp3 со «стандартными» тегами, а также с произвольными тегами. До сих пор он работал отлично.

Что касается причины того, что я не использовал QLLib, у меня это не сработало. Я подозреваю, что он получал те же ошибки, связанные с конфигурацией, что и я, но молча игнорировал их и просто не мог писать теги.

2
ответ дан 1 December 2019 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: