Add source code
This commit is contained in:
parent
79142076e1
commit
7e9ddc61ac
106
src/encode.py
Normal file
106
src/encode.py
Normal file
@ -0,0 +1,106 @@
|
||||
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 encode():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
"-t", "--track_file",
|
||||
type = str,
|
||||
help = "Path to input track file.",
|
||||
required = True)
|
||||
parser.add_argument(
|
||||
"-id", "--identifier",
|
||||
type = str,
|
||||
help = "Identifier code for the given track.",
|
||||
required = True)
|
||||
parser.add_argument(
|
||||
"-m", "--metadata_file",
|
||||
type=str,
|
||||
help="Path to .csv metadata file.",
|
||||
required=True)
|
||||
parser.add_argument(
|
||||
"-a", "--artwork_dir",
|
||||
type=str,
|
||||
help="Path to directory containing artwork files.",
|
||||
required=True)
|
||||
parser.add_argument(
|
||||
"-o", "--output_file",
|
||||
type=str,
|
||||
help="Path to .csv file to store individual sample metadata.",
|
||||
required=True)
|
||||
args = parser.parse_args()
|
||||
|
||||
metadata_df = pd.read_csv(args.metadata_file)
|
||||
track_metadata = metadata_df[metadata_df["Code"] == args.identifier]
|
||||
|
||||
if track_metadata["File Extension"].item() != ".flac":
|
||||
cmd = [
|
||||
"ffmpeg",
|
||||
"-i", args.track_file,
|
||||
"-vn",
|
||||
"-c:a", "flac",
|
||||
args.output_file
|
||||
]
|
||||
else:
|
||||
cmd = [
|
||||
"cp",
|
||||
args.track_file,
|
||||
args.output_file
|
||||
]
|
||||
|
||||
run_cmd(cmd)
|
||||
|
||||
# Remove any existing metadata.
|
||||
cmd = [
|
||||
"metaflac",
|
||||
"--remove-all-tags",
|
||||
args.output_file
|
||||
]
|
||||
run_cmd(cmd)
|
||||
|
||||
# Remove any existing album artwork.
|
||||
cmd = [
|
||||
"metaflac",
|
||||
"--remove",
|
||||
"--block-type=PICTURE,PADDING",
|
||||
"--dont-use-padding",
|
||||
args.output_file
|
||||
]
|
||||
run_cmd(cmd)
|
||||
|
||||
cmd = [
|
||||
"metaflac",
|
||||
"--remove-tag=COVERART",
|
||||
args.output_file
|
||||
]
|
||||
run_cmd(cmd)
|
||||
|
||||
# Write the new metadata.
|
||||
cmd = [
|
||||
"metaflac",
|
||||
f"--set-tag=ALBUM={track_metadata['Album'].item()}",
|
||||
f"--set-tag=ARTIST={track_metadata['Artist'].item()}",
|
||||
f"--set-tag=TITLE={track_metadata['Title'].item()}",
|
||||
f"--set-tag=TRACKNUMBER={track_metadata['Track'].item()}",
|
||||
f"--set-tag=DATE={track_metadata['Year'].item()}",
|
||||
f"--set-tag=DISCNUMBER={track_metadata['Disc'].item()}",
|
||||
f"--import-picture-from={args.artwork_dir}/{track_metadata['Artwork File'].item()}",
|
||||
args.output_file
|
||||
]
|
||||
run_cmd(cmd)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
encode()
|
70
src/install.py
Normal file
70
src/install.py
Normal file
@ -0,0 +1,70 @@
|
||||
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 album directory (if it does not exist).
|
||||
album_dir = os.path.join(args.dir, track_metadata["Album"].item())
|
||||
cmd = [
|
||||
"mkdir",
|
||||
"-p",
|
||||
album_dir
|
||||
]
|
||||
run_cmd(cmd)
|
||||
|
||||
# Copy song to target directory.
|
||||
disc_number = track_metadata["Disc"].item()
|
||||
track_number = track_metadata["Track"].item()
|
||||
song_title = track_metadata["Title"].item()
|
||||
song_title = song_title.replace("/", " - ")
|
||||
|
||||
track_path = os.path.join(
|
||||
album_dir,
|
||||
f"{disc_number:>02}-{track_number:>02} {song_title}")
|
||||
|
||||
cmd = [
|
||||
"cp",
|
||||
os.path.join(args.track_dir, track),
|
||||
track_path
|
||||
]
|
||||
run_cmd(cmd)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
install()
|
Loading…
x
Reference in New Issue
Block a user