RotateMusic/rotateMusic.py

51 lines
1.4 KiB
Python
Raw Permalink Normal View History

2023-10-22 20:55:35 +02:00
import os
import random
import shutil
2023-10-22 21:01:33 +02:00
import argparse
2023-10-22 20:55:35 +02:00
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():
2023-10-22 21:01:33 +02:00
parser = argparse.ArgumentParser()
parser.add_argument("--library")
parser.add_argument("--playerStorage")
parser.add_argument("--maxBytes")
args = parser.parse_args()
library = args["library"]
player = args["playerStorage"]
amount = int(args["maxBytes"])
2023-10-22 20:55:35 +02:00
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()