2

У меня обширная музыкальная коллекция, и я хочу сделать из нее резервные копии только тегов (поэтому позже, если я потеряю ее, я смогу найти ее снова). Он состоит из файлов .m4a и .mp3. Как я могу это сделать?

2 ответа2

2

Это действительно зависит от системы, которую вы используете, для портативного решения - см., Например, http://nedbatchelder.com/code/modules/id3reader.html.

1

Вот мой простой сценарий, который решает эту проблему для меня. Спасибо за подсказки.

# coding=utf-8
"""Backs up tags from all m4a and mp3 files in a directory, recursively
and stores them as JSON file."""
import os
import json
import logging
from mutagen.easyid3 import EasyID3
from mutagen.easymp4 import EasyMP4


def backup_tags(directory, outfile):
    """Back up tags from all m4a & mp3 files from 'directory' into 'outfile'"""
    logging.info('Saving started.')
    filenames = []
    for root, _, files in os.walk(directory):
        filenames.extend([os.path.join(root, x) for x in files])

    def tags_dict(filename):
        """Return tags from file 'filename' as python dictionary"""
        _, extension = os.path.splitext(filename)
        if extension == '.mp3':
            return dict(EasyID3(filename))
        elif extension == '.m4a':
            return dict(EasyMP4(filename))
        else:
            raise Exception('Not supported file type: %s' % filename)

    with open(outfile, 'w') as out:
        json.dump([tags_dict(x) for x in filenames], out, indent=1)

    logging.info('Tags from %d file(s) saved.', len(filenames))

if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO)
    backup_tags(u'F:\\Music', 'backup.json')

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .