diff --git a/Makefile b/Makefile index 5700142..fb3d51c 100644 --- a/Makefile +++ b/Makefile @@ -1,56 +1,72 @@ # ---- Project Settings -------------------------------------------------------- -B2_BUCKET = -PROJECT_NAME = +SSH_LOCATION = +CELLAR_BOTTLE = +PROJECT_ID = +INSTALL_DIR = -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" diff --git a/src/encode.py b/src/encode.py index 4b4a5e5..c9ceac2 100644 --- a/src/encode.py +++ b/src/encode.py @@ -27,19 +27,19 @@ def encode(): required = True) parser.add_argument( "-m", "--metadata_file", - type=str, - help="Path to .csv metadata file.", - required=True) + 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) + "-a", "--artwork_file", + type = str, + 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.", - required=True) + type = str, + help = "Path to encoded output .flac file.", + required = True) args = parser.parse_args() metadata_df = pd.read_csv(args.metadata_file) @@ -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) diff --git a/src/install.py b/src/install.py index be0daab..6d48c7e 100644 --- a/src/install.py +++ b/src/install.py @@ -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",