69 lines
1.7 KiB
Python
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()
|