Created
June 13, 2017 20:58
-
-
Save Rycieos/65696bc04088cd718392f9503a073d8d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
from mutagen.id3 import ID3, TPE2 | |
from mutagen.mp4 import MP4 | |
import os | |
import sys | |
def remove_tag(mp4, tag): | |
try: | |
mp4.__delitem__(tag) | |
except Exception: | |
pass | |
def main(): | |
for filename in sys.argv[1:]: | |
name, file_extension = os.path.splitext(filename) | |
print("File: %s" % filename) | |
if (file_extension == '.mp3'): | |
audio = ID3(filename, v2_version=3) | |
# Remove Google tags | |
audio.delall("PRIV") | |
# Remove copyright tag | |
audio.delall("TCOP") | |
# Remove iTunes tags | |
audio.delall("COMM") | |
# Remove general blobs | |
audio.delall("GEOB") | |
# Remove unique file ID | |
audio.delall("UFID") | |
# Remove extra text fields | |
audio.delall("TXXX") | |
# Remove genre if bad | |
#audio.delall("TCON") | |
# Check for empty album artist tag | |
if (audio.getall("TPE2") == []): | |
try: | |
artist = audio.getall("TPE1")[0].text[0] | |
audio.add(TPE2(text=artist)) | |
except Exception: | |
pass | |
print(audio.pprint()) | |
# Check for bad (0) tags | |
try: | |
date = audio.getall("TDRC")[0].text[0].text | |
if (date == u'0000'): | |
print("Bad date: %s" % date) | |
audio.delall("TDRC") | |
except Exception: | |
pass | |
try: | |
track = audio.getall("TRCK")[0].text[0] | |
if (track == u'0/0'): | |
print("Bad track number: %s" % track) | |
audio.delall("TRCK") | |
except Exception: | |
pass | |
try: | |
disk = audio.getall("TPOS")[0].text[0] | |
if (disk == u'0/0'): | |
print("Bad disk number: %s" % disk) | |
audio.delall("TPOS") | |
except Exception: | |
pass | |
audio.save(v2_version=3) | |
elif (file_extension == '.m4a'): | |
audio = MP4(filename) | |
# Remove sorting tags | |
remove_tag(audio, "soal") | |
remove_tag(audio, "soaa") | |
remove_tag(audio, "soar") | |
remove_tag(audio, "sorn") | |
remove_tag(audio, "sorm") | |
remove_tag(audio, "soco") | |
# Remove iTunes tags | |
remove_tag(audio, "----:com.apple.iTunes:iTunMOVI") | |
remove_tag(audio, "----:com.apple.iTunes:iTunSMPB") | |
remove_tag(audio, "----:com.apple.iTunes:iTunNORM") | |
remove_tag(audio, "----:com.apple.iTunes:tool") | |
remove_tag(audio, "----:com.apple.iTunes:Encoding Params") | |
remove_tag(audio, "----:com.apple.iTunes:UFIDhttp://www.cddb.com/id3/taginfo1.html") | |
remove_tag(audio, "----:com.apple.iTunes:iTunes_CDDB_IDs") | |
remove_tag(audio, "----:com.apple.iTunes:iTunes_CDDB_1") | |
remove_tag(audio, "----:com.apple.iTunes:iTunes_CDDB_TrackNumber") | |
remove_tag(audio, "apID") | |
remove_tag(audio, "plID") | |
remove_tag(audio, "cnID") | |
remove_tag(audio, "geID") | |
remove_tag(audio, "atID") | |
remove_tag(audio, "sfID") | |
remove_tag(audio, "cmID") | |
remove_tag(audio, "akID") | |
# Remove other junk tags | |
remove_tag(audio, "xid ") | |
remove_tag(audio, "purd") | |
remove_tag(audio, "cprt") | |
remove_tag(audio, "gnre") | |
remove_tag(audio, "\xa9too") | |
# Check for empty album artist tag | |
try: | |
audio.__getitem__("aART") | |
except KeyError: | |
try: | |
artist = audio.__getitem__("\xa9ART")[0] | |
audio.__setitem__("aART", artist) | |
except Exception: | |
pass | |
print(audio.pprint()) | |
audio.save() | |
else: | |
continue | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment