etc
home
default
.config
.fonts
.local
scripts
append-urls-to-titles
booksplit
create-playlist
del-macos-folders
generate-playlists
git_log_alias
hash-filenames
list-packages
mp3-to-opus
package-list
proverb
record-screen
remove-exif
restart-bluetooth
screenshot
scrub-ufw
sort-by-length
tag
titles-to-youtube-playlist
update-mirrors
update-nonsystem
wget-titles-from-urls
youtube-archive
youtube-archive-audio
youtube-audio
.bashrc
.profile
.tool-versions
.xprofile
.gitignore
packages.txt
preview.png
readme.md
add bashrc ignore xauthority add autounlocking keepass desktop entry add fonts for waybar add alacritty config move scripts location and adjust bashrc use materia theme sway and lockscreen add list packages script add ranger desktop item add mpd config add indicator ring to swaylock remove mpd password add global asdf tool versions add mako config update keys add swaylock theme add suspend to lock config move ssh commands to aliases tweak mpd section in waybar add kanshi config for work update bashrc
47 lines
2.1 KiB
Bash
Executable File
47 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Requires ffmpeg (audio splitting) and my `tag` wrapper script.
|
|
|
|
[ ! -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"
|
|
|
|
# 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")"
|
|
escbook="$(echo "$booktitle" | 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#*.}"
|
|
|
|
# Get the total number of tracks from the number of lines.
|
|
total="$(wc -l < "$2")"
|
|
|
|
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") - $author - $esctitle.$ext"
|
|
[ -n "$start" ] && echo "Splitting \"$title\"..." && ffmpeg -nostdin -y -loglevel -8 -i "$inputaudio" -ss "$start" -to "$end" -vn "$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")"
|
|
esctitle="$(echo "$title" | 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"
|
|
file="$escbook/$track - $author - $esctitle.$ext"
|
|
echo "Splitting \"$title\"..." && ffmpeg -nostdin -y -loglevel -8 -i "$inputaudio" -ss "$start" -vn "$file" &&
|
|
echo "Tagging \"$title\"..." && tag -a "$author" -A "$booktitle" -t "$title" -n "$track" -N "$total" -d "$year" "$file"
|