# --- SYSTEM-EINSTELLUNGEN --- [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 # --- EINSTELLUNGEN --- $quellOrdnerListe = @( "M:\TV\Arena (1993)", "M:\TV\Einstein (2007)", "M:\TV\Kassensturz (1974)" ) function Start-VideoTagging { param([string]$quellOrdner) if (!(Test-Path $quellOrdner)) { Write-Host "Ordner nicht gefunden: $quellOrdner" -ForegroundColor Red return } Write-Host "`n>>> Durchsuche Ordner: $quellOrdner" -ForegroundColor Cyan $files = Get-ChildItem -Path $quellOrdner -Filter "*.mp4" -Recurse foreach ($file in $files) { # --- SCHRITT 1: DATEINAMEN REINIGEN --- # Wir definieren, welche Zeichen wir nicht wollen $altName = $file.Name $neuName = $altName -replace '[»«–—−]',' ' # Ersetzt Sonderzeichen durch Leerzeichen $neuName = $neuName -replace '\s+', ' ' # Verhindert doppelte Leerzeichen $aktuelleDatei = $file if ($altName -ne $neuName) { Write-Host " Umbenennen: '$altName' -> '$neuName'" -ForegroundColor Magenta $neuerPfad = Join-Path $file.DirectoryName $neuName Rename-Item -Path $file.FullName -NewName $neuName -ErrorAction SilentlyContinue $aktuelleDatei = Get-Item $neuerPfad } # --- SCHRITT 2: TAGGING LOGIK --- $parts = $aktuelleDatei.BaseName -split " - " if ($parts.Count -ge 3) { $targetAlbum = $parts[0].Trim() $rawDate = $parts[1].Trim() $targetTitle = $parts[2].Trim().TrimEnd("_") $targetDate = $rawDate.Replace(".", ":") # Smart Read (jetzt mit dem sauberen Namen) $metaJSON = & exiftool -n -j -charset filename=utf8 "$($aktuelleDatei.FullName)" 2>$null $meta = $metaJSON | ConvertFrom-Json $existingTitle = if ($meta.Title) { $meta.Title.ToString().Trim() } else { "" } $existingAlbum = if ($meta.Album) { $meta.Album.ToString().Trim() } else { "" } $existingYear = if ($meta.Year) { $meta.Year.ToString().Trim() } else { "" } if ($existingTitle -eq $targetTitle -and $existingAlbum -eq $targetAlbum -and $existingYear -eq $targetDate) { Write-Host " Skip: $($aktuelleDatei.Name)" -ForegroundColor DarkGray } else { Write-Host " Tagging: $($aktuelleDatei.Name)" -ForegroundColor Yellow & exiftool -overwrite_original -n -charset filename=utf8 ` -Title="$targetTitle" ` -Album="$targetAlbum" ` -Year="$targetDate" ` -ContentCreateDate="$targetDate" ` -CreationDate="$targetDate" ` "$($aktuelleDatei.FullName)" 2>$null if ($LASTEXITCODE -eq 0) { Write-Host " -> Erfolg!" -ForegroundColor Green } else { Write-Host " -> FEHLER: Trotz Umbenennung kein Zugriff möglich." -ForegroundColor Red } } } } } # --- HAUPTPROGRAMM --- Remove-Item *.mp4_exiftool_tmp -Recurse -ErrorAction SilentlyContinue foreach ($ordner in $quellOrdnerListe) { Start-VideoTagging -quellOrdner $ordner } Write-Host "`n--- ALLE ORDNER VERARBEITET! ---" -ForegroundColor Green