Steenderen.NET

Thuisbasis en digitale zandbak

Converteren van FLAC naar MP3 op een Synology NAS – Deel 1

Ik was vanavond gisteravond en vanavond een beetje aan het stoeien met het automatiseren van een klusje wat ik tot nu toe handmatig deed. Script krijgt wellicht komende tijd nog wel een update of wat ter verbetering, maar het resultaat van vanavond na twee avondjes stoeien vind je hieronder.

Wat het script concreet doet;

  • Aflopen van alle bestanden in de folder /volume1/music (standaard folder om muziek op te staan op een Synology NAS).
  • Controleren of van de FLAC bestanden die in deze folder staan er een MP3 versie aanwezig is in de folder /volume1/MP3s
  • Als dit niet het geval is, dan wordt het FLAC-bestand geconverteerd naar een MP3-bestand en in de MP3-folder opgeslagen.
  • Als alle bestanden zijn geconverteerd wordt er een eenvoudig rapportje weggeschreven in de folder waarin ook het script-bestand staat.
  • Tot slot wordt een e-mail verstuurd ter notificatie met hierin het totaal aantal bestanden dat is geconverteerd en een verwijzing naar het rapport-bestand.
# Script to convert FLAC-files in one folder to MP3 in another folder.
# Install FFMPEG on Synology NAS via package from https://synocommunity.com/package/ffmpeg

IFS="`printf '\n\t'`"     # Remove 'space', so filenames with spaces work well.

FLAC_MAP="/volume1/music" # Folder with original FLAC-files
MP3S_MAP="/volume1/MP3s"  # Folder to store the converted MP3-files

# Notification mail variables
MAIL_FROM="mail@provider.com"
MAIL_TO="mail@provider.com"
MAIL_SUBJECT="Synology NAS: MP3 conversie is voltooid"
MAIL_BODY="Beste gebruiker,\n\nDe conversie van FLAC-bestanden naar MP3-bestanden is voltooid."
MAIL_COUNTER="Totaal aantal geconverteerde bestanden: "
MAIL_REPORT="Bekijk de details in het conversie-rapport: "
MAIL_SIGNATURE="Met vriendelijke groeten,\nSynology DiskStation"

REPORT_FILE=$(cd -P -- "$(dirname -- "$0")" && pwd -P)"/convert_mp3_"$(date +%Y-%m-%d)."txt" # Define report filename

ECHO_OUT="Following MP3-files created:"
COUNTER=0

cd $FLAC_MAP
for a in `find . -name '*.flac' -print | sort`; do  
	if [ -e "$a" ] ; then   # Check if string from find is a file (should be the case)
		OUTF=${a%.flac}.mp3 # Generate name of MP3-file
		OUTF="${OUTF:2}"    # Remove trailing ./ from the path
		
		if [[ ! -f "$MP3S_MAP/$OUTF" ]]; # Check if MP3-file does not already exists (if so, no conversion needed)
		then
			if [[ ${OUTF} != *"@eaDir"* ]]; then # Ignore @eaDir, this are folders with thumbnails & metadata.
				path=$( echo ${OUTF%/*} )
				file=$( echo ${OUTF##/*/} )

				if [[ ! -e $MP3S_MAP/$path ]]; then
    				mkdir -p $MP3S_MAP/$path # Create folder if it does not yet exist in MP3-folder.
				fi
				echo "Converting $a" # Show which FLAC-file is being converted to MP3
				ffmpeg -loglevel warning -i $a -acodec libmp3lame -q:a 1 "$MP3S_MAP/$file" # Convert to MP3-file with quality Q:A 1 setting
				ECHO_OUT+=$'\n'"- $MP3S_MAP/$file" # Add MP3-filename to logging
				COUNTER=$((COUNTER+1))
			fi
		fi
	fi
done

if test "$ECHO_OUT" != "Following MP3-files created:"; then
	echo $(date +%Y-%m-%d_%H:%M) - $"$ECHO_OUT" >> $REPORT_FILE
	/usr/bin/php -r 'mail("'$MAIL_TO'", "'$MAIL_SUBJECT'", "'$MAIL_BODY'\n\n'$MAIL_COUNTER$COUNTER'\n\n'$MAIL_REPORT$REPORT_FILE'\n\n'$MAIL_SIGNATURE'", "From: '$MAIL_FROM'");';
else
	echo $"No FLAC-files needed to be converted."
fi

En voor wie zich afvraagt waarom je deze conversie uberhaupt zou willen doen… binnenkort wat verdere uitleg  😉

Verder Bericht

Vorige Bericht

Laat een reactie achter

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

© 2019 Steenderen.NET

Thema door Anders Norén