Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: FLAC To WavPack PowerShell script (Read 5151 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

FLAC To WavPack PowerShell script

This is my FLAC To WavPack PowerShell script. It is probably not very good, but I thought I would share it with the community anyway. A couple of things:

1. PowerShell seems to have issues with piping the output of flac.exe directly to wavpack.exe, so I use a temporary .wav file to get things done. This is something that I real programmer probably could have got around.

2. Windows, by default, does not allow the execution of PowerShell scripts, so if you decide to use or create one of your own, you will have to alter a security setting.

3. This script assumes FLAC and WavPack are in your execution path.

So anyway, here it is!


Code: [Select]
# Flac2WavPack by Agent69 (2010)
# This script assumes that FLAC and WavPack are in your command path.
#
#
# THIS SCRIPT ACCEPTS ONE COMMAND LINE ARGUMENT. CHECK TO MAKE SURE:
if ($args.count -ne 1)
{
Write-Host "This script excepts only a single arguement. If you wish to convert all"
Write-Host "the .flac files in the current directory, you can use the * character."
Write-Host
exit;
}

# GET ONLY THE FLAC FILES (TO PREVENT TRYING TO PROCESS NON-FLAC FILES) AND GET THE PROCESS LOOP STARTED:
$tempt=get-childitem -Include *.flac $args[0]
foreach ($file in $tempt)
{

# CAPTURE THE METADATA INFO FROM THE SOURCE FLAC FILE USING FLAC'S METAFLAC COMMAND:
$DAT = metaflac --show-tag=DATE $file
$TOT = metaflac --show-tag=TOTALTRACKS $file
$TRK = metaflac --show-tag=TRACKNUMBER $file
$ALB = metaflac --show-tag=ALBUM $file
$ART = metaflac --show-tag=ARTIST $file
$TIT = metaflac --show-tag=TITLE $file

# REMOVE THE UNWANTED CHARACTERS FROM THE BEGINNING OF METAFLAC'S STRING OUTPUT:
$DAT = $DAT.Substring(5)
$TOT = $TOT.Substring(12)
$TRK = $TRK.Substring(12)
$ALB = $ALB.Substring(6)
$ART = $ART.Substring(7)
$TIT = $TIT.Substring(6)

# CREATE VARIABLES FOR THE WORKING (OUTPUT) DIRECTORY AND THE TEMP WAV FILE:
$workdir = "Z:\Repository\Audio--Working"
$temptwav = $file.BaseName+".wav"

# OUTPUT NOTICE TO THE USER:
Write-Host Converting $file to Wavpack format ...

# DECODE .FLAC FILE TO A TEMP .WAV FILE AND REENCODE TO WAVPACK:
flac -d $file -o $workdir\$temptwav
wavpack -d -m -w "ALBUM=$ALB" -w "ARTIST=$ART" -w "DATE=$DAT" -w "TITLE=$TIT" -w "TOTALTRACKS=$TOT" -w "TRACKNUMBER=$TRK" $workdir\$temptwav $workdir
}

# OUT OF THE PROCESSING LOOP. LET THEM KNOW YOU'RE DONE:
Write-Host Conversion complete!
Write-Host