metadata scripts
This commit is contained in:
1 parent
74a3cfe8ed
commit
cff21a4dab
4 files changed
+256
No files matched your search
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
find . \( -iname '*.mp3' -o -iname '*.m4a' -o -iname '*.m4b' \) -print0 |
|
||||
while IFS= read -r -d '' f; do
|
||||
|
||||
comment=$(ffprobe -v error \
|
||||
-show_entries format_tags=comment \
|
||||
-of default=nw=1:nk=1 \
|
||||
-- "$f")
|
||||
|
||||
[[ $comment =~ ^[Rr]ead[[:space:]]+[Bb]y[[:space:]]+(.+) ]] || continue
|
||||
|
||||
composer="${BASH_REMATCH[1]}"
|
||||
echo "Updating: $f"
|
||||
echo " Composer: $composer"
|
||||
|
||||
dir=$(dirname -- "$f")
|
||||
base=$(basename -- "$f")
|
||||
ext="${base##*.}"
|
||||
|
||||
case "${ext,,}" in
|
||||
mp3) format=mp3 ;;
|
||||
m4a|m4b) format=ipod ;;
|
||||
*) continue ;;
|
||||
esac
|
||||
|
||||
tmp=$(mktemp -p "$dir" ".${base}.XXXXXX") || {
|
||||
echo "Couldn't create temporary file in $dir" >&2
|
||||
continue
|
||||
}
|
||||
|
||||
if ffmpeg -nostdin -v error -y \
|
||||
-i "$f" \
|
||||
-map 0 \
|
||||
-map_metadata 0 \
|
||||
-c copy \
|
||||
-metadata composer="$composer" \
|
||||
-metadata comment= \
|
||||
-f "$format" \
|
||||
"$tmp"
|
||||
then
|
||||
mv -f -- "$tmp" "$f"
|
||||
else
|
||||
echo "FAILED: $f" >&2
|
||||
rm -f -- "$tmp"
|
||||
fi
|
||||
done
|
||||
Reference in new issue
Block a user