Skip to content

Instantly share code, notes, and snippets.

@wecing
Created August 8, 2016 03:44
Show Gist options
  • Save wecing/d43af7f8db7c4bfaa308dffaea86416c to your computer and use it in GitHub Desktop.
Save wecing/d43af7f8db7c4bfaa308dffaea86416c to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# -*- encoding: UTF-8 -*-
# example:
#
# python mp3tag.py --title-pattern '[0-9]+ - (.*)\.mp3' --artist "王菲" --album "王菲(2001)" --genre "" ~/Downloads/王菲.-.\[王菲2001\].专辑.\(MP3\)/*.mp3
import argparse
import taglib
import chardet
import re
import os
parser = argparse.ArgumentParser()
parser.add_argument('files', type=str, nargs='*')
parser.add_argument('--artist')
parser.add_argument('--album')
parser.add_argument('--genre')
parser.add_argument('--title-pattern')
parser.add_argument('--write', action='store_true',
help='write change sto disk')
args = parser.parse_args()
for file_name in args.files:
print
f = taglib.File(file_name)
if args.artist is not None:
f.tags['ARTIST'] = [args.artist]
if args.album is not None:
f.tags['ALBUM'] = [args.album]
if args.genre is not None:
f.tags['GENRE'] = [args.genre]
if args.title_pattern is not None:
m = re.search(args.title_pattern, os.path.basename(file_name))
f.tags['TITLE'] = [m.group(1)]
if args.write:
f.save()
for k in f.tags:
print k
for v in f.tags[k]:
print ' ', v
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment