From 07e1388b7b06e5f8e7c745eff55689baa9aa0695 Mon Sep 17 00:00:00 2001 From: Cassandra de la Cruz-Munoz Date: Sun, 22 Oct 2023 20:55:35 +0200 Subject: [PATCH] Add rotateMusic.py --- rotateMusic.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 rotateMusic.py diff --git a/rotateMusic.py b/rotateMusic.py new file mode 100644 index 0000000..8dc30c3 --- /dev/null +++ b/rotateMusic.py @@ -0,0 +1,47 @@ +import os +import random +import shutil +import sys + + +def get_dir_size(path): + total = 0 + with os.scandir(path) as it: + for entry in it: + if entry.is_file(): + total += entry.stat().st_size + elif entry.is_dir(): + total += get_dir_size(entry.path) + return total + + +def main(): + if len(sys.argv) != 4: + return + library = sys.argv[1] + player = sys.argv[2] + amount = int(sys.argv[3]) + libraryArtists = os.listdir(library) + playerArtists = os.listdir(player) + librarySpace = {} + for item in libraryArtists: + librarySpace[item] = get_dir_size(library+"/"+item) + shutil.rmtree(player) + os.mkdir(player) + cumulativeTotal = 0 + chosenArtists = [] + while True: + artist = random.choice(libraryArtists) + libraryArtists.remove(artist) + if artist in playerArtists: + continue + if cumulativeTotal + librarySpace[artist] >= amount: + break + cumulativeTotal += librarySpace[artist] + shutil.copytree(library+"/"+artist, player+"/"+artist) + chosenArtists.append(artist) + print(100 * cumulativeTotal / amount) + + +if __name__ == "__main__": + main()