From 995a3dc70990c5e0f0148b09cc1eacd388cdf1c9 Mon Sep 17 00:00:00 2001 From: cbrand Date: Fri, 31 Mar 2023 00:23:48 -0700 Subject: [PATCH] Add 'moviedrop.ps1' --- moviedrop.ps1 | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 moviedrop.ps1 diff --git a/moviedrop.ps1 b/moviedrop.ps1 new file mode 100644 index 0000000..383160f --- /dev/null +++ b/moviedrop.ps1 @@ -0,0 +1,43 @@ +$charA = [int][char]'A' +$charL = [int][char]'L' +$charM = [int][char]'M' +$charZ = [int][char]'Z' +$rangeFirst = $charA..$charL +$rangeSecond = $charM..$charZ +$pathRoot = "/zfs/data/videos/Movies" +$pathFrom = "/zfs/data/videos/MovieDrop" +$movies = Get-ChildItem -Path $pathFrom +foreach ($movie in $movies) { + $name = $movie.Name.Trim() + + if ($name -match "^A ") { + $name = $name.Substring(2).Trim() + } elseif ($name -match "^An ") { + $name = $name.Substring(3).Trim() + } elseif ($name -match "^The ") { + $name = $name.Substring(4).Trim() + } + $letter = $name[0] + $nameSecondChar = [int][char]($name.ToUpper()[1]) + $letterPair1 = "$letter-$($letter)L" + $letterPair2 = "$($letter)M-$($letter)Z" + + $targetFolder = $null + + if ($nameSecondChar -in $rangeFirst) { + $targetFolder = $letterPair1 + } elseif ($nameSecondChar -in $rangeSecond) { + $targetFolder = $letterPair2 + } else { + # handle the case where the title is like "I, Robot" or "O.M.G." or similar + $targetFolder = $letterPair1 + } + if ($letter -match '\d') { + # The title starts with a numeric character + $targetFolder = "00-99" + } + + $targetPath = Join-Path -Path $pathRoot -ChildPath $targetFolder + + Move-Item -Path $movie.FullName -Destination $targetPath -Force -ErrorAction Continue | Out-Null +} \ No newline at end of file