add encode all, fix a bit of tags with split_tracks
This commit is contained in:
parent
05030e709b
commit
831034bd14
55
encode_all
Executable file
55
encode_all
Executable file
@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
# encode_all encodes the whole library into specified format
|
||||
#
|
||||
. env_parallel.bash
|
||||
|
||||
src_library="${HOME}/flac"
|
||||
output_dir="${HOME}/opus"
|
||||
|
||||
function encode() {
|
||||
file="$1"
|
||||
|
||||
# file is full original path + filename
|
||||
src_dir="$(dirname "$file")"
|
||||
file_name="$(basename "$file")"
|
||||
final_dir="$(sed "s_${HOME}/flac_${HOME}/opus_" <<< "$src_dir")"
|
||||
final_opus="$(sed -e 's/\.flac$/.opus/' -e "s_${HOME}/flac_${HOME}/opus_" <<< "$file")"
|
||||
unset tags
|
||||
unset dest_dir
|
||||
|
||||
declare -A tags
|
||||
while read -r line; do
|
||||
tag_type="$(cut -d= -f1 <<< "$line")"
|
||||
tag_type="${tag_type^^}"
|
||||
tag_val="$(cut -d= -f2- <<< "$line")"
|
||||
tags["$tag_type"]="$tag_val"
|
||||
done < <(metaflac --list --block-type=VORBIS_COMMENT "$file" | grep 'comment\[' | cut -d: -f2- | sed 's/^ //')
|
||||
album="$(basename "$final_dir")"
|
||||
if [[ "$file_name" =~ ^D[0-9]+ ]]; then
|
||||
disk="$(cut -d\ -f1 <<< "$file_name")"
|
||||
tags[DISK]="${disk#D}"
|
||||
fi
|
||||
declare -a tag_ensure
|
||||
tag_ensure=( TRACKNUMBER TITLE DATE ALBUM ARTIST )
|
||||
for tag_type in "${tag_ensure[@]}"; do
|
||||
if [[ -z "${tags[$tag_type]}" ]]; then
|
||||
tags[$tag_type]="missing $tag_type"
|
||||
fi
|
||||
done
|
||||
|
||||
[[ -d "$final_dir" ]] || mkdir -p "$final_dir"
|
||||
if [[ -n "${tags[DISK]}" ]]; then
|
||||
opusenc \
|
||||
--title "${tags[TITLE]}" --artist "${tags[ARTIST]}" \
|
||||
--album "${tags[ALBUM]}" --tracknumber "${tags[TRACKNUMBER]}" \
|
||||
--date "${tags[DATE]}" --comment "DISK=${tags[DISK]}" "$file" "$final_opus"
|
||||
else
|
||||
opusenc \
|
||||
--title "${tags[TITLE]}" --artist "${tags[ARTIST]}" \
|
||||
--album "${tags[ALBUM]}" --tracknumber "${tags[TRACKNUMBER]}" \
|
||||
--date "${tags[DATE]}" "$file" "$final_opus"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
time find "$src_library" -type f -name '*.flac' -print0 | env_parallel -P 0 -0 --bar encode {}
|
17
split_tracks
17
split_tracks
@ -90,16 +90,19 @@ find "$src_library" -type f -name '*.flac' | while read file; do
|
||||
declare -A tags
|
||||
echo tag time
|
||||
while read -r line; do
|
||||
echo line: $line
|
||||
tag_type="$(cut -d= -f1 <<< "$line")"
|
||||
tag_type="${tag_type^^}"
|
||||
tag_val="$(cut -d= -f2- <<< "$line")"
|
||||
tags[$tag_type]="${tag_val^^}"
|
||||
tags["$tag_type"]="$tag_val"
|
||||
done < <(metaflac --list --block-type=VORBIS_COMMENT "$file" | grep 'comment\[' | cut -d: -f2- | sed 's/^ //')
|
||||
|
||||
|
||||
declare -a ensure
|
||||
ensure=( TRACKNUMBER TITLE DATE ALBUM ARTIST )
|
||||
for tag_type in "${ensure[@]}"; do
|
||||
album="$(basename "$final_dir")"
|
||||
if [[ "$file_name" =~ ^D[0-9]+ ]]; then
|
||||
disk="$(cut -d\ -f1 <<< "$file_name")"
|
||||
tags[DISK]="${disk#D}"
|
||||
fi
|
||||
declare -a tag_ensure
|
||||
tag_ensure=( TRACKNUMBER TITLE DATE ALBUM ARTIST )
|
||||
for tag_type in "${tag_ensure[@]}"; do
|
||||
if [[ -z "${tags[$tag_type]}" ]]; then
|
||||
tags[$tag_type]="missing $tag_type"
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user