summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2025-02-24 11:52:58 +0100
committerMarc Vertes <mvertes@free.fr>2025-02-24 11:52:58 +0100
commit17d348db1738a536319de62229c233e764766087 (patch)
tree19c57dfb03b05c9a814825d64da73ae253c19bbc /bin
parent9921f42676ea8361ea3d14bc1c9c5e184dfe5e07 (diff)
add mp3 scripts
Diffstat (limited to 'bin')
-rwxr-xr-xbin/cpmp37
-rwxr-xr-xbin/fixmp3name11
-rwxr-xr-xbin/fixnames31
-rwxr-xr-xbin/flac2mp322
-rwxr-xr-xbin/m4a2mp315
5 files changed, 86 insertions, 0 deletions
diff --git a/bin/cpmp3 b/bin/cpmp3
new file mode 100755
index 0000000..49d17cf
--- /dev/null
+++ b/bin/cpmp3
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+find . -name "*.mp3" | while read -r name; do
+ d="../mp3/${name%/*}"
+ mkdir -p "$d"
+ cp "$name" "$d"
+done
diff --git a/bin/fixmp3name b/bin/fixmp3name
new file mode 100755
index 0000000..f2f4053
--- /dev/null
+++ b/bin/fixmp3name
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+case $1 in
+*.flac.mp3) n="${1%.flac.mp3}.mp3" ;;
+*.m4a.mp3) n="${1%.m4a.mp3}.mp3" ;;
+*) n="$1" ;;
+esac
+
+[ "$1" = "$n" ] && exit
+echo "$n"
+mv "$1" "$n"
diff --git a/bin/fixnames b/bin/fixnames
new file mode 100755
index 0000000..dd1c5b3
--- /dev/null
+++ b/bin/fixnames
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+# Fix filenames in music library: no spaces or special chars.
+
+fixname() { echo "$1" | iconv -f utf8 -cs -t ascii//IGNORE; }
+
+# 1: fix directories
+for f in *; do
+ [ -d "$f" ] || continue
+ n=$(fixname "$f")
+ [ "$f" = "$n" ] && continue
+ echo "$n"
+ mv "$f" "$n"
+done
+
+for f in */*; do
+ [ -d "$f" ] || continue
+ n=$(fixname "$f")
+ [ "$f" = "$n" ] && continue
+ echo "$n"
+ mv "$f" "$n"
+done
+
+# 2: fix files
+for f in */*/*; do
+ [ -f "$f" ] || continue
+ n=$(fixname "$f")
+ [ "$f" = "$n" ] && continue
+ echo "$n"
+ mv "$f" "$n"
+done
diff --git a/bin/flac2mp3 b/bin/flac2mp3
new file mode 100755
index 0000000..96e2cde
--- /dev/null
+++ b/bin/flac2mp3
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# This script should be launched from the root dir of music library.
+
+# Use highest quality VBR, preserve metadata:
+# ffmpeg -i "$1" -q:a 0 "${1%.flac}.mp3"
+
+# get all mp3 already here and copy to dest
+# find . -name "*.mp3"
+
+# Convert all flacs into mp3s
+find . -name "*.flac" | while read -r in; do
+ out="../mp3/${in%.flac}.mp3"
+ dir="${out%/*}"
+ test -d "$dir" && continue
+ echo "$dir"
+ mkdir -p "$dir"
+done
+
+find . -name "*.flac" -exec ffmpeg -i {} -c:v copy -q:a 0 ../mp3/{}.mp3 \;
+
+exit
diff --git a/bin/m4a2mp3 b/bin/m4a2mp3
new file mode 100755
index 0000000..bc2584a
--- /dev/null
+++ b/bin/m4a2mp3
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# This script should be launched from the root dir of music library.
+
+find . -name "*.m4a" | while read -r in; do
+ out="../mp3/${in%.m4a}.mp3"
+ dir="${out%/*}"
+ test -d "$dir" && continue
+ echo "$dir"
+ mkdir -p "$dir"
+done
+
+find . -name "*.m4a" -exec ffmpeg -i {} -c:v copy -q:a 0 ../mp3/{}.mp3 \;
+
+exit