summaryrefslogtreecommitdiffstats
path: root/.local/bin
diff options
context:
space:
mode:
authorLuke Smith <luke@lukesmith.xyz>2022-04-30 14:35:10 -0400
committerLuke Smith <luke@lukesmith.xyz>2022-04-30 14:35:10 -0400
commit58b06ee021ca27bb87ed1390c1436ee9871ea8cc (patch)
tree6c45f3d89127da40e28be6b8fdc5c27c964f7d9c /.local/bin
parent002f0deae342e8f468014c91c08231c551db34cf (diff)
downloadeibhear-58b06ee021ca27bb87ed1390c1436ee9871ea8cc.tar.gz
eibhear-58b06ee021ca27bb87ed1390c1436ee9871ea8cc.tar.zst
eibhear-58b06ee021ca27bb87ed1390c1436ee9871ea8cc.zip
booksplit faster, fix #919, fix #943, fix #954
Diffstat (limited to '.local/bin')
-rwxr-xr-x.local/bin/booksplit45
1 files changed, 21 insertions, 24 deletions
diff --git a/.local/bin/booksplit b/.local/bin/booksplit
index 7730ac2..69e4f36 100755
--- a/.local/bin/booksplit
+++ b/.local/bin/booksplit
@@ -1,46 +1,43 @@
#!/bin/sh
-# Requires ffmpeg (audio splitting) and my `tag` wrapper script.
+# Requires ffmpeg
[ ! -f "$2" ] && printf "The first file should be the audio, the second should be the timecodes.\\n" && exit
echo "Enter the album/book title:"; read -r booktitle
-
echo "Enter the artist/author:"; read -r author
-
echo "Enter the publication year:"; read -r year
inputaudio="$1"
+ext="${1#*.}"
# Get a safe file name from the book.
escbook="$(echo "$booktitle" | iconv -cf UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g")"
-! mkdir -p "$escbook" && echo "Do you have write access in this directory?" && exit 1
-
-# As long as the extension is in the tag script, it'll work.
-ext="opus"
-#ext="${1#*.}"
+! mkdir -p "$escbook" &&
+ echo "Do you have write access in this directory?" &&
+ exit 1
# Get the total number of tracks from the number of lines.
total="$(wc -l < "$2")"
+cmd="ffmpeg -i \"$inputaudio\" -nostdin -y"
+
while read -r x;
do
- end="$(echo "$x" | cut -d' ' -f1)"
-
- [ -n "$start" ] &&
- echo "From $start to $end; $track $title"
- file="$escbook/$(printf "%.2d" "$track")-$esctitle.$ext"
- [ -n "$start" ] && echo "Splitting \"$title\"..." &&
- ffmpeg -nostdin -y -loglevel -8 -i "$inputaudio" -ss "$start" -to "$end" -vn -c copy "$file" &&
- echo "Tagging \"$title\"..." && tag -a "$author" -A "$booktitle" -t "$title" -n "$track" -N "$total" -d "$year" "$file"
- title="$(echo "$x" | cut -d' ' -f 2-)"
- esctitle="$(echo "$title" | iconv -cf UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g")"
- track="$((track+1))"
- start="$end"
+ end="$(echo "$x" | cut -d' ' -f1)"
+ file="$escbook/$(printf "%.2d" "$track")-$esctitle.$ext"
+ if [ -n "$start" ]; then
+ cmd="$cmd -metadata artist=\"$author\" -metadata title=\"$title\" -metadata album=\"$booktitle\" -metadata year=\"$year\" -metadata track=\"$track\" -metadata total=\"$total\" -ss \"$start\" -to \"$end\" -vn -c:a copy \"$file\" "
+ fi
+ title="$(echo "$x" | cut -d' ' -f2-)"
+ esctitle="$(echo "$title" | iconv -cf UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g")"
+ track="$((track+1))"
+ start="$end"
done < "$2"
-# The last track must be done outside the loop.
-echo "From $start to the end: $title"
+
+# Last track must be added out of the loop.
file="$escbook/$(printf "%.2d" "$track")-$esctitle.$ext"
-echo "Splitting \"$title\"..." && ffmpeg -nostdin -y -loglevel -8 -i "$inputaudio" -ss "$start" -vn -c copy "$file" &&
- echo "Tagging \"$title\"..." && tag -a "$author" -A "$booktitle" -t "$title" -n "$track" -N "$total" -d "$year" "$file" \ No newline at end of file
+cmd="$cmd -metadata artist=\"$author\" -metadata title=\"$title\" -metadata album=\"$booktitle\" -metadata year=\"$year\" -metadata track=\"$track\" -ss \"$start\" -vn -c copy \"$file\""
+
+eval "$cmd"