Wie man Pre- und Post-Process-Skripte schreibt

Ich habe Hinweise und Erwähnungen zu Pre- und Post-Processing-Skripten gesehen. Aber ich kann keine eindeutige Dokumentation dazu finden. Jede Hilfe wird geschätzt. Danke im Voraus

Hier ist die maßgebliche Quelle für benutzerdefinierte Befehle

Meines Wissens gibt es mehrere Dinge, die man aufrufen könnte, z. B. eine Windows-Batch-Datei. Ich persönlich rufe ein PowerShell-Skript für eine Nachbearbeitung auf, das ein benutzerdefiniertes Umbenennen enthält, das mcebuddy mir nicht erlaubt, und es kümmert sich auch darum, die konvertierten Dateien in die von mir gewünschte Ordnerstruktur zu verschieben und behandelt Überschreiben/Löschen, falls bereits vorhanden.

Grundsätzlich rufst du das Skript in der profiles.conf auf, indem du die gewünschten Skripte im jeweiligen Profil definierst.
In meinem Fall ist z. B. eines meiner Profile:

[MP4 Unprocessed]
Description=Sehr schnell, aber funktional begrenzt. Verwende dieses Profil, wenn das Originalvideo H.264/MPEG-Video enthält und du die Werbung entfernen sowie das Dateiformat in MP4 konvertieren (z. B. WTV → MP4) willst, ohne weitere Bearbeitung (Deinterlace, Skalierung, Lautstärke, Zuschneiden usw.). Das Originalvideo und ‑audio werden unverändert in ein MP4-Containerformat übernommen.
order=ffmpeg
ffmpeg-general=-threads 0
ffmpeg-video=-ss 0 -vcodec copy -sn
ffmpeg-audio=-acodec copy
ffmpeg-audioac3=-acodec copy
ffmpeg-ext=.mp4
ffmpeg-audiodelay=skip
PreConversionCommercialRemover=true
FixedResolution=true
SkipCropping=true
AutoDeinterlace=false
PostCustomCommandPath = C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
PostCustomCommandParameters = -windowstyle hidden -file “f:\transfer\mcebuddy_postprocess.ps1” -newname “"%convertedfile%"” -destpath “"%destinationpath%"” -series “"%seriesid%"” -imdb “"%imdbmovieid%"” -ismovie “"%ismovie%"” -taskname “"%taskname%"” -season “"%season%##"” -origName “"%originalfilename%"”
PostCustomCommandHangPeriod = 0
PostCustomCommandCritical = False
PostCustomCommandUISession = False
PostCustomCommandShowWindow = True
PostCustomCommandExitCodeCheck = False

PostCustomCommandPath sagt mcebuddy, dass PowerShell aufgerufen wird, und PostCustomCommandParameters teilt mit, welches PowerShell-Skript ausgeführt werden soll und liefert zugleich eine Reihe von Werten, die mcebuddy zur Verfügung stellt – z. B. der Dateiname.

Mein tatsächliches PowerShell-Skript ist recht lang, aber eine seiner Aufgaben ist es, diese übergebenen Werte auszuwerten und die Ordnernamen so anzupassen, dass sie je nachdem die IMDb-ID oder die TVDb-ID enthalten – je nachdem, ob es sich um einen Film oder eine Serie handelt. Die eingebaute Umbenennungsfunktion von mcebudy scheint diese Werte nicht als Parameter zu bieten.

FYI – Die öffentliche IMDB-API ist tot. Nachdem Amazon sie gekauft hat, wurde sie hinter eine kostenpflichtige API-Abo-Mauer gestellt.

Ich glaube, MCEBuddy ist auf https://www.themoviedb.org/ (TMDB) als Ersatz umgestiegen. Vielleicht möchtest du dein PowerShell-Skript entsprechend anpassen.

Ich muss nachschauen, was Plex macht, aber ich habe einigen Dokumenten gefolgt, die vorschlagen, Elemente so zu benennen, um die Identifikation zu erleichtern
TV-Serien – Übergeordneter Ordner:
z. B. CSI Vegas (2021) {tvdb-400248}
und Filme – Übergeordneter Ordner:
The Mortal Storm (1940) {imdb-tt0032811}

Das Problem war, dass ich bei der Umbenennung keinen Platzhalter für die Serien-ID von TVDB fand, aber es gibt einen Platzhalter dafür in der Nachbearbeitung, also übergebe ich einfach das Argument von MCEBuddy an PowerShell, um den ursprünglichen Ordner umzubenennen von

CSI Vegas (2021)
auf
CSI Vegas (2021) {tvdb-400248}

In letzter Zeit kam es jedoch gelegentlich vor, dass die Serien-ID nicht abgerufen wurde, und ich weiß nicht warum.

Wie auch immer, meine PowerShell-Skripte kümmern sich um die Umbenennung der übergeordneten Ordner und verschieben dann die Elemente auf meinen Plex-Server und entscheiden, ob sie in einen vorhandenen Ordner kopiert werden sollen (bei TV-Serien) oder überschrieben werden sollen (im Falle von Filmen).