Update to an album-based collection
This commit is contained in:
parent
46b18734b3
commit
8a8ef0b3b4
70
Makefile
70
Makefile
@ -1,56 +1,72 @@
|
||||
# ---- Project Settings --------------------------------------------------------
|
||||
|
||||
B2_BUCKET =
|
||||
PROJECT_NAME =
|
||||
|
||||
SSH_LOCATION =
|
||||
CELLAR_BOTTLE =
|
||||
PROJECT_ID =
|
||||
INSTALL_DIR =
|
||||
|
||||
B2_TRACKS = $(B2_BUCKET)/$(PROJECT_NAME)/tracks
|
||||
B2_ARTWORK = $(B2_BUCKET)/$(PROJECT_NAME)/artwork
|
||||
CELLAR_TRACKS = $(CELLAR_BOTTLE)/$(PROJECT_ID)/tracks
|
||||
CELLAR_METADATA = $(CELLAR_BOTTLE)/$(PROJECT_ID)/metadata.csv
|
||||
CELLAR_ARTWORK = $(CELLAR_BOTTLE)/$(PROJECT_ID)/artwork.png
|
||||
|
||||
# ---- Makefile Settings -------------------------------------------------------
|
||||
|
||||
TRACK_LIST := $(notdir $(shell b2 ls $(B2_TRACKS)))
|
||||
TRACK_LIST := $(shell ssh $(SSH_LOCATION) "ls $(CELLAR_TRACKS)")
|
||||
FLAC_FILES := $(addprefix out/, $(addsuffix .flac, $(TRACK_LIST)))
|
||||
|
||||
GREEN = \e[32m
|
||||
CYAN = \e[36m
|
||||
END = \e[0m
|
||||
|
||||
.PHONY: all install
|
||||
.PRECIOUS: out/%.flac
|
||||
.PHONY: all install clean setup
|
||||
|
||||
# ---- Pipeline ----------------------------------------------------------------
|
||||
|
||||
all: $(FLAC_FILES)
|
||||
all: setup install
|
||||
|
||||
install:
|
||||
@mamba run -n Instrumental_Music_Collection python src/install.py \
|
||||
-td out \
|
||||
-m data/metadata.csv \
|
||||
-d "$(INSTALL_DIR)"
|
||||
setup:
|
||||
@printf "%b %s\n" "$(CYAN)[ > ]$(END) Create working directory structure"
|
||||
@mkdir -p data/tracks
|
||||
@mkdir -p out/
|
||||
@printf "%b %s\n" "$(GREEN)[ ✓ ]$(END) Create working directory structure"
|
||||
|
||||
data/tracks/%.track:
|
||||
@printf "%b %s\n" "$(CYAN)[ > ]$(END) Download" "$(notdir $@)"
|
||||
@b2 file download --no-progress \
|
||||
$(B2_BUCKET)/$(PROJECT_NAME)/tracks/$(basename $(notdir $@)) \
|
||||
$@ > /dev/null
|
||||
@rsync -az -s "$(SSH_LOCATION):$(CELLAR_TRACKS)/$(basename $(notdir $@))" "$@"
|
||||
@printf "%b %s\n" "$(GREEN)[ ✓ ]$(END) Download" "$(notdir $@)"
|
||||
|
||||
data/artwork:
|
||||
@printf "%b\n" "$(CYAN)[ > ]$(END) Download Artwork"
|
||||
@mkdir -p $@
|
||||
@b2 sync --no-progress \
|
||||
$(B2_ARTWORK) \
|
||||
$@ > /dev/null
|
||||
@printf "%b\n" "$(GREEN)[ ✓ ]$(END) Download Artwork"
|
||||
data/metadata.csv:
|
||||
@printf "%b %s\n" "$(CYAN)[ > ]$(END) Download" "$(notdir $@)"
|
||||
@rsync -az -s "$(SSH_LOCATION):$(CELLAR_METADATA)" "$@"
|
||||
@printf "%b %s\n" "$(GREEN)[ ✓ ]$(END) Download" "$(notdir $@)"
|
||||
|
||||
out/%.flac: data/tracks/%.track data/metadata.csv | data/artwork
|
||||
data/artwork.png:
|
||||
@printf "%b %s\n" "$(CYAN)[ > ]$(END) Download" "$(notdir $@)"
|
||||
@rsync -az -s "$(SSH_LOCATION):$(CELLAR_ARTWORK)" "$@"
|
||||
@printf "%b %s\n" "$(GREEN)[ ✓ ]$(END) Download" "$(notdir $@)"
|
||||
|
||||
out/%.flac: data/tracks/%.track data/metadata.csv data/artwork.png
|
||||
@printf "%b %s\n" "$(CYAN)[ > ]$(END) Encode" "$(notdir $@)"
|
||||
@mamba run -n Instrumental_Music_Collection python src/encode.py \
|
||||
@python src/encode.py \
|
||||
-t $< \
|
||||
-id $(basename $(notdir $@)) \
|
||||
-m data/metadata.csv \
|
||||
-a data/artwork \
|
||||
-a data/artwork.png \
|
||||
-o $@
|
||||
@printf "%b %s\n" "$(GREEN)[ ✓ ]$(END) Encode" "$(notdir $@)"
|
||||
|
||||
install: $(FLAC_FILES)
|
||||
@printf "%b %s\n" "$(CYAN)[ > ]$(END) Copy files to target directory"
|
||||
@python src/install.py \
|
||||
-td out/ \
|
||||
-m data/metadata.csv \
|
||||
-d "$(INSTALL_DIR)"
|
||||
@printf "%b %s\n" "$(GREEN)[ ✓ ]$(END) Copy files to target directory"
|
||||
|
||||
# ---- Cleanup -----------------------------------------------------------------
|
||||
|
||||
clean:
|
||||
@printf "%b %s\n" "$(CYAN)[ > ]$(END) Clean working directories"
|
||||
@rm -rf out/
|
||||
@rm -rf data/
|
||||
@printf "%b %s\n" "$(GREEN)[ ✓ ]$(END) Clean working directories"
|
||||
|
@ -31,14 +31,14 @@ def encode():
|
||||
help = "Path to .csv metadata file.",
|
||||
required = True)
|
||||
parser.add_argument(
|
||||
"-a", "--artwork_dir",
|
||||
"-a", "--artwork_file",
|
||||
type = str,
|
||||
help="Path to directory containing artwork files.",
|
||||
help = "Path to .png artwork file.",
|
||||
required = True)
|
||||
parser.add_argument(
|
||||
"-o", "--output_file",
|
||||
type = str,
|
||||
help="Path to .csv file to store individual sample metadata.",
|
||||
help = "Path to encoded output .flac file.",
|
||||
required = True)
|
||||
args = parser.parse_args()
|
||||
|
||||
@ -90,13 +90,14 @@ def encode():
|
||||
# Write the new metadata.
|
||||
cmd = [
|
||||
"metaflac",
|
||||
f"--set-tag=ALBUM={track_metadata['Album'].item()}",
|
||||
"--set-tag=ALBUM=Instrumental Music Collection",
|
||||
"--set-tag=ALBUMARTIST=Various Artists",
|
||||
f"--set-tag=ARTIST={track_metadata['Artist'].item()}",
|
||||
f"--set-tag=TITLE={track_metadata['Title'].item()}",
|
||||
f"--set-tag=TITLE={track_metadata['Title'].item()} [From {track_metadata['Album'].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()}",
|
||||
"--set-tag=DISCNUMBER=1",
|
||||
f"--import-picture-from={args.artwork_file}",
|
||||
args.output_file
|
||||
]
|
||||
run_cmd(cmd)
|
||||
|
@ -39,24 +39,22 @@ def install():
|
||||
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())
|
||||
# Create output directory (if it does not exist).
|
||||
cmd = [
|
||||
"mkdir",
|
||||
"-p",
|
||||
album_dir
|
||||
args.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("/", " - ")
|
||||
album_title = track_metadata["Album"].item().replace("/", " - ")
|
||||
song_title = track_metadata["Title"].item().replace("/", " - ")
|
||||
|
||||
track_path = os.path.join(
|
||||
album_dir,
|
||||
f"{disc_number:>02}-{track_number:>02} {song_title}.flac")
|
||||
args.dir,
|
||||
f"{track_number:>02} {song_title} [From {album_title}].flac")
|
||||
|
||||
cmd = [
|
||||
"cp",
|
||||
|
Loading…
x
Reference in New Issue
Block a user