diff options
| -rwxr-xr-x | bin/organize_music | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/bin/organize_music b/bin/organize_music new file mode 100755 index 0000000..de21327 --- /dev/null +++ b/bin/organize_music @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 + +import os +import sys +import eyed3 +import shutil + +def sanitize_filename(name): + return "".join(c for c in name if c.isalnum() or c in (' ', '-', '_')).rstrip() + +def organize_mp3s(directory): + if not os.path.isdir(directory): + print(f"Directory '{directory}' does not exist.") + return + + for filename in os.listdir(directory): + if not filename.lower().endswith(".mp3"): + continue + + filepath = os.path.join(directory, filename) + audiofile = eyed3.load(filepath) + + title = sanitize_filename(audiofile.tag.title) + artist = sanitize_filename(audiofile.tag.album_artist) + album = sanitize_filename(audiofile.tag.album) + + new_filename = f"{title} - {artist}.mp3" + target_dir = os.path.join(directory, artist, album) + + os.makedirs(target_dir, exist_ok=True) + + new_path = os.path.join(target_dir, new_filename) + + shutil.move(filepath, new_path) + +if len(sys.argv) < 2: + print("Usage: python organize_mp3s.py <directory_path>") +else: + organize_mp3s(sys.argv[1]) + os.system(f"rsync -avz {sys.argv[1]}/* admin@krinitsin.com:/var/music/") |