From 586e8746bef7164d9d94e59b2f987fbcf996a8b4 Mon Sep 17 00:00:00 2001 From: Princess Pi Date: Fri, 25 Sep 2026 17:34:01 -0600 Subject: [PATCH] media conversion powershell added --- Windows-Scripts/checksum-todo.txt | 4 +- Windows-Scripts/media_convert_ffmpreg.ps1 | 85 +++++++++++++++++++++++ 2 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 Windows-Scripts/media_convert_ffmpreg.ps1 diff --git a/Windows-Scripts/checksum-todo.txt b/Windows-Scripts/checksum-todo.txt index 8451136..b2f21a1 100644 --- a/Windows-Scripts/checksum-todo.txt +++ b/Windows-Scripts/checksum-todo.txt @@ -1,5 +1,5 @@ -1. recursive verify error: `FAILED open or read` -2. recursive progress set to count total number of files recursively first for progress bar +1. recursive verify error: `FAILED open or read` RIGHT NOW GENERATES RELATIVE PATH/FILENAME IN CHECKSUMS FILES IN SUBDIRS, SHOULD JUST BE FOR THE FILES IN DAT DIR (for linux compatability) +2. recursive progress set to count total number of files recursively first for progress bar. 3. paralell processing 4. Princess Pi ascii art magenta 5. princess pi bubble text ascii art blue diff --git a/Windows-Scripts/media_convert_ffmpreg.ps1 b/Windows-Scripts/media_convert_ffmpreg.ps1 new file mode 100644 index 0000000..538380e --- /dev/null +++ b/Windows-Scripts/media_convert_ffmpreg.ps1 @@ -0,0 +1,85 @@ +param ( + [Parameter(Mandatory = $true, Position = 0)] + [string]$Ext1, + + [Parameter(Mandatory = $true, Position = 1)] + [string]$Ext2, + + [int]$Jobs = 4 # Number of simultaneous conversions +) + +$sourceExt = $Ext1.TrimStart('.') +$targetExt = $Ext2.TrimStart('.') +$audioExts = @('opus', 'ogg', 'flac', 'wav') + +$files = Get-ChildItem -File -Recurse -Filter "*.$sourceExt" + +if ($files.Count -eq 0) { + Write-Host "No files matching *.$sourceExt found." -ForegroundColor Yellow + return +} + +Write-Host "Starting conversion using $Jobs parallel jobs..." -ForegroundColor Green + +$files | ForEach-Object -Parallel { + $file = $_ + $targetExt = $using:targetExt + $audioExts = $using:audioExts + + $outputPath = Join-Path -Path $file.DirectoryName -ChildPath "$($file.BaseName).$targetExt" + $relativePath = Resolve-Path -Path $file.FullName -Relative + + Write-Host "Processing: $relativePath" -ForegroundColor Cyan + + if ($audioExts -contains $targetExt.ToLower()) { + ffmpeg -y -i $file.FullName -c:a libopus -b:a 128k -vbr on $outputPath 2>$null + } else { + # -preset 8 drastically speeds up SVT-AV1 while maintaining high quality + ffmpeg -y -i $file.FullName -c:v libsvtav1 -crf 26 -preset 8 -c:a libopus -b:a 128k $outputPath 2>$null + } +} -ThrottleLimit $Jobs + +Write-Host "Finished processing $($files.Count) file(s)." -ForegroundColor Green + +# ------------------------------------------------------------------------- +# Step 1: Recursively delete all existing .sha256 files +# ------------------------------------------------------------------------- +Write-Host "Deleting existing .sha256 files recursively..." -ForegroundColor Yellow +Get-ChildItem -Path . -Recurse -Filter "*.sha256" -File | Remove-Item -Force + +# ------------------------------------------------------------------------- +# Step 2: Run checksums in current directory and every subdirectory +# ------------------------------------------------------------------------- +Write-Host "Generating checksums in each subfolder..." -ForegroundColor Cyan + +# Gather current working directory and all child directories +$allDirs = @((Get-Item .).FullName) + (Get-ChildItem -Path . -Recurse -Directory | Select-Object -ExpandProperty FullName) + +foreach ($dir in $allDirs) { + Push-Location $dir + try { + Write-Host "Updating checksums in: $dir" -ForegroundColor Gray + checksum * -o + } finally { + Pop-Location + } +} + +# ------------------------------------------------------------------------- +# Step 3: Recursively verify checksums in each directory +# ------------------------------------------------------------------------- +Write-Host "Verifying checksums in each subfolder..." -ForegroundColor Cyan + +foreach ($dir in $allDirs) { + Push-Location $dir + try { + if (Test-Path "checksums.sha256") { + Write-Host "Verifying: $dir" -ForegroundColor Gray + checksum -c checksums.sha256 + } + } finally { + Pop-Location + } +} + +Write-Host "All conversions, checksum creations, and verifications completed successfully." -ForegroundColor Green \ No newline at end of file