index — dotfiles @ 5cfe704458eb11760c70fdd91a790cb5152d5f82

my dotfiles

bin/organize_music (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 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/")