Skip to content

Instantly share code, notes, and snippets.

@CptSpaceToaster
Created January 31, 2016 20:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CptSpaceToaster/0f4e35b2d15d01ddcacb to your computer and use it in GitHub Desktop.
Save CptSpaceToaster/0f4e35b2d15d01ddcacb to your computer and use it in GitHub Desktop.
#!/bin/bash
function get_artist() {
if [[ ! -z "$ARTIST" ]]; then
return
fi
ARTIST=$(mid3v2 "$1" -l | awk -F"=" '/TPE1/ {print $2}')
if [[ ! -z "$ARTIST" ]]; then
return
fi
ARTIST=$(mid3v2 "$1" -l | awk -F"=" '/TPE2/ {print $2}')
if [[ ! -z "$ARTIST" ]]; then
return
fi
ARTIST=$(mid3v2 "$1" -l | awk -F"=" '/TPE3/ {print $2}')
if [[ ! -z "$ARTIST" ]]; then
return
fi
ARTIST=$(mid3v2 "$1" -l | awk -F"=" '/TPE4/ {print $2}')
if [[ ! -z "$ARTIST" ]]; then
return
fi
if [[ -z "$ARTIST" ]]; then
read -p "Author: " ARTIST
fi
}
function get_album() {
if [[ ! -z "$ALBUM" ]]; then
return
fi
ALBUM=$(mid3v2 "$1" -l | awk -F"=" '/TALB/ {print $2}')
if [[ ! -z "$ALBUM" ]]; then
return
fi
ALBUM=$(mid3v2 "$1" -l | awk -F"=" '/TOAL/ {print $2}')
if [[ ! -z "$ALBUM" ]]; then
return
fi
ALBUM=$(mid3v2 "$1" -l | awk -F"=" '/TIT1/ {print $2}')
if [[ ! -z "$ALBUM" ]]; then
return
fi
if [[ -z "$ALBUM" ]]; then
read -p "Album: " ARTIST
fi
}
if [[ ! -e "$1" ]]; then
echo "Please gib me zip feil"
exit 1
fi
TMP=$(mktemp -dt "sXXXXXXXX")
ZIP=$1
shift
ALBUM=$1
shift
ARTIST=$1
shift
# Extract files to a temporary directory
unzip "$ZIP" -d "$TMP"
if [[ $? -ne 0 ]]; then
echo "Can't find zipper"
exit 1
fi
for i in $TMP/*.mp3; do
# Get author
get_artist "$i"
# Get artist
get_album "$i"
# Set song attributes for nefarious CMUS porpoises
mid3v2 "$i" -a "$ARTIST"
mid3v2 "$i" -A "$ALBUM"
# Get the base filename
BASE=$(basename "$1")
mkdir -p "$HOME/Music/$ARTIST/$ALBUM"
mv "$i" "$HOME/Music/$ARTIST/$ALBUM/$BASE"
# echo $i
# echo "$HOME/Music/$ARTIST/$ALBUM/$BASE"
echo "Installing: $BASE"
done
# Clean up temp directory
rm -rf $TMP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment