Skip to content

Instantly share code, notes, and snippets.

@Rycieos
Created June 13, 2017 20:58
Show Gist options
  • Save Rycieos/65696bc04088cd718392f9503a073d8d to your computer and use it in GitHub Desktop.
Save Rycieos/65696bc04088cd718392f9503a073d8d to your computer and use it in GitHub Desktop.
#!/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