1
0
Files
instrumental-music-collection/src/install.py

69 lines
1.7 KiB
Python

import os
import sys
import argparse
import subprocess
import pandas as pd
def run_cmd(cmd):
try:
subprocess.run(cmd, check = True,
stdout = subprocess.DEVNULL,
stderr = subprocess.DEVNULL)
except subprocess.CalledProcessError:
sys.exit(1)
def install():
parser = argparse.ArgumentParser()
parser.add_argument(
"-td", "--track_dir",
type = str,
help = "Path to directory with processed track files.",
required = True)
parser.add_argument(
"-m", "--metadata_file",
type=str,
help="Path to .csv metadata file.",
required=True)
parser.add_argument(
"-d", "--dir",
type=str,
help="Target directory to install files.",
required=True)
args = parser.parse_args()
metadata_df = pd.read_csv(args.metadata_file)
track_list = os.listdir(args.track_dir)
for track in track_list:
track_metadata = metadata_df[metadata_df["Code"] == track.split(".")[0]]
# Create output directory (if it does not exist).
cmd = [
"mkdir",
"-p",
args.dir
]
run_cmd(cmd)
# Copy song to target directory.
track_number = track_metadata["Track"].item()
album_title = track_metadata["Album"].item().replace("/", " - ")
song_title = track_metadata["Title"].item().replace("/", " - ")
track_path = os.path.join(
args.dir,
f"{track_number:>02} {song_title} [From {album_title}].flac")
cmd = [
"cp",
os.path.join(args.track_dir, track),
track_path
]
run_cmd(cmd)
if __name__ == "__main__":
install()