49 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#!/bin/bash
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								parser="$(echo $PWD | rev)"
							 | 
						||
| 
								 | 
							
								IFS="
							 | 
						||
| 
								 | 
							
								"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								partist="$(echo $parser | cut -f 2 -d '/' | rev)"
							 | 
						||
| 
								 | 
							
								palbum="$(echo $parser | cut -f 1 -d '/' | rev)"
							 | 
						||
| 
								 | 
							
								pgenre="$(echo $parser | cut -f 3 -d '/' | rev)"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ "$partist" == "" ] || [ "$palbum" == "" ] || [ "$pgenre" == "" ]; then
							 | 
						||
| 
								 | 
							
								    echo "This script expects a format of "'$MUSICBASEPATH'"/Genre/Artist/Album/Song.ext"
							 | 
						||
| 
								 | 
							
								    exit;
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								echo Expected metadata:
							 | 
						||
| 
								 | 
							
								echo Artist: $partist
							 | 
						||
| 
								 | 
							
								echo Album: $palbum
							 | 
						||
| 
								 | 
							
								echo Genre: $pgenre
							 | 
						||
| 
								 | 
							
								echo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								for i in $@; do
							 | 
						||
| 
								 | 
							
								    if [ ! -f "$i" ]; then
							 | 
						||
| 
								 | 
							
								        echo File doesn\'t exist. $i
							 | 
						||
| 
								 | 
							
								        continue;
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								    ffartist="$(ffprobe -hide_banner -i $i 2>&1 | grep artist | grep -v 'album_artist' | cut -f 2 -d ':' | sed -e 's/^[[:space:]]*//' | sed -e 's/*[[:space:]]$//')"
							 | 
						||
| 
								 | 
							
								    ffalbum="$(ffprobe -hide_banner -i $i 2>&1 | grep album | grep -v 'album_artist' | cut -f 2 -d ':' | sed -e 's/^[[:space:]]*//' | sed -e 's/*[[:space:]]$//')"
							 | 
						||
| 
								 | 
							
								    ffgenre="$(ffprobe -hide_banner -i $i 2>&1 | grep genre | head -n 1 | cut -f 2 -d ':' | sed -e 's/^[[:space:]]*//' | sed -e 's/*[[:space:]]$//')"
							 | 
						||
| 
								 | 
							
								    echo For \[$i\]...
							 | 
						||
| 
								 | 
							
								    unset tags
							 | 
						||
| 
								 | 
							
								    echo Found artist \[$ffartist\]
							 | 
						||
| 
								 | 
							
								    if [ "$partist" != "$ffartist" ]; then
							 | 
						||
| 
								 | 
							
								        export tags=$tags" -metadata artist=\"$partist\""
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								    echo Found album \[$ffalbum\]
							 | 
						||
| 
								 | 
							
								    if [ "$ffalbum" != "$palbum" ]; then
							 | 
						||
| 
								 | 
							
								        export tags=$tags" -metadata album=\"$palbum\""
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								    echo Found genre \[$ffgenre\]
							 | 
						||
| 
								 | 
							
								    if [ "$ffgenre" != "$pgenre" ]; then
							 | 
						||
| 
								 | 
							
								        export tags=$tags" -metadata genre=\"$pgenre\""
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								    if [ "$tags" != "" ]; then
							 | 
						||
| 
								 | 
							
								        bash -c "ffmpeg -hide_banner -i \"$i\"$tags \"$i.ffmpeg.mp3\""
							 | 
						||
| 
								 | 
							
								        mv "$i.ffmpeg.mp3" "$i"
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								    echo
							 | 
						||
| 
								 | 
							
								done
							 |