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