Skip to content

Instantly share code, notes, and snippets.

@fischgeek
Created February 19, 2019 17:39
Show Gist options
  • Save fischgeek/af584af4274075260aa19ffa2f99b32c to your computer and use it in GitHub Desktop.
Save fischgeek/af584af4274075260aa19ffa2f99b32c to your computer and use it in GitHub Desktop.

Revisions

  1. fischgeek created this gist Feb 19, 2019.
    54 changes: 54 additions & 0 deletions plex_maker.ps1
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,54 @@
    Clear-Host

    # Point to the makemkvcon.exe (https://www.makemkv.com/download/)
    Set-Alias makemkv "C:\Program Files (x86)\MakeMKV\makemkvcon.exe"

    # Point to the HandBrakeCLI.exe (https://handbrake.fr/downloads2.php)
    Set-Alias handbrake "C:\Program Files\Handbrake\HandBrakeCLI.exe"

    # Define where your Plex library is (final resting place)
    $plex = "\\server\plex\movies"

    # Define a temporary directory to store the MKV files in
    $dir = "C:\makemkv"

    # --------------------------------------------------
    $title = Read-Host -Prompt "Enter movie title"
    $start = (Get-Date)

    "Running MakeMKV process...";
    makemkv mkv disc:0 all c:\makemkv

    "Finding the largest file..."
    $file = Get-ChildItem $dir | Sort-Object Length -Descending | Select-Object -First 1
    $baseName = $title #$file.BaseName
    $outFile = "$dir\$baseName".ToLower() #-replace ".{4}$"
    $outFile = $outFile.Replace("_", " ")
    $outFile += ".mp4"

    #"Deleting unnecessary files..."
    #Get-ChildItem $dir | Where-Object{$_.Name -cne $file.Name} | Where-Object{Remove-Item $_.FullName -WhatIf}

    "Running Handbrake process..."
    handbrake -i $file.FullName -o $outFile

    "Moving file to Plex..."
    Move-Item "$outFile" "$plex"

    "Cleaning up the directory..."
    Get-ChildItem $dir | Remove-Item

    $v = [math]::Round(((Get-Date) - $start).TotalMinutes, 2)

    "Process complete."
    "Total process execution time: $v minutes"

    try {
    $d = New-Object -ComObject IMAPI2.MsftDiscMaster2
    $dr = New-Object -ComObject IMAPI2.MsftDiscRecorder2
    $dr.InitializeDiscRecorder($d)
    $dr.EjectMedia()
    } catch { }

    " "
    Read-Host