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