1
0
mirror of synced 2025-02-02 12:27:20 +01:00
jujube/utils/test_songs_generator.py

70 lines
1.9 KiB
Python
Raw Normal View History

import argparse
from path import Path
from PIL import Image
import json
from faker import Faker
fake = Faker()
parser = argparse.ArgumentParser()
parser.add_argument("input_folder", type=Path)
parser.add_argument("output_folder", type=Path)
parser.add_argument("--music-folder-mode", action="store_true", dest="music_folder_mode")
parser.add_argument("--clean", action="store_true")
parser.add_argument("--random-name", action="store_true", dest="random_name")
args = parser.parse_args()
def create_song_folder_from_image(image: Path):
song_name = fake.sentence().strip(".") if args.random_name else image.stem
2020-02-15 20:50:47 +01:00
song_artist = fake.name()
song_folder = args.output_folder / song_name
song_folder.mkdir()
output_image = song_folder / f"{song_name}.jpg"
Image.open(str(image)).save(str(output_image))
memon = {
"version": "0.1.0",
"metadata": {
"song title": song_name,
2020-02-15 20:50:47 +01:00
"artist": song_artist,
"music path": "",
"album cover path": output_image.name,
"BPM": 120,
"offset": 0,
},
"data": {
"BSC" : {
"level": 1,
"resolution": 4,
"notes": []
}
}
}
json.dump(
memon,
open(song_folder/f"{song_name}.memon", "w"),
indent=4,
sort_keys=True,
)
if args.clean:
args.output_folder.rmtree_p()
args.output_folder.mkdir()
def walk_music_folder(folder: Path):
for album in folder.dirs():
yield from album.files()
files = walk_music_folder(args.input_folder) if args.music_folder_mode else args.input_folder.files()
for file in files:
try:
Image.open(str(file))
except IOError as e:
print(f"{file} : {e}")
try:
create_song_folder_from_image(file)
except Exception as e:
print(f"{file} : {e}")
print(f"{file} : ok")