Commande personnalisée en échec

Je ne sais pas ce qui a déclenché ce problème, une mise à jour du système d’exploitation ou une mise à jour de MCEB, mais dans les builds .7 et .8, les fichiers convertis ne sont plus déplacés vers mon disque réseau.

Cela fonctionnait depuis des années, donc je ne sais pas ce que j’ai pu faire pour tout gâcher.

Comme d’habitude, j’ai mis à jour le service avec un compte utilisateur administrateur. J’ai également essayé d’ajouter le même utilisateur dans les paramètres d’authentification réseau de l’interface utilisateur sous paramètres.

J’ai remarqué ceci dans le journal de conversion, mais je ne comprends pas pourquoi, car il n’y a aucun caractère illégal dans le chemin.

E:\VideoCaptures\Cleaned Files\Zoo Drop It Like Its Hot s03 e05 07-27-2017.ts

INFORMATION> 2017-07-28T16:15:09 MCEBuddy.Engine.ConversionJob → Running custom commands
→ Custom Renaming Command → %showname% %episodename% s%season%## e%episode%## %airmonth%-%airday%-%airyear% %rating%
WARNING> → Cannot find Parental Rating
2017-07-28T16:15:09 MCEBuddy.Transcode.CustomCommand → Custom command parameters read →
PostCustomCommandPath = “e:\videocaptures\cleaned files\mcebpostprocess.bat”
PostCustomCommandParameters = “%convertedfile%” %sourcefile% “%destinationpath%” 1080 .%convertedext% 0 %airmonth% %airday% %airyear% %season%##
PostCustomCommandHangPeriod = 0
PostCustomCommandCritical = False
PostCustomCommandUISession = False
PostCustomCommandShowWindow = True
PostCustomCommandExitCodeCheck = False
ERROR> 2017-07-28T16:15:09 MCEBuddy.Engine.ConversionJob → Unhanded error during conversion, conversion cancelled
System.ArgumentException: Illegal characters in path.
at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
at System.IO.Path.IsPathRooted(String path)
at MCEBuddy.Transcode.CustomCommand.Run()
at MCEBuddy.Engine.ConversionJob.Convert()
INFORMATION> 2017-07-28T16:15:09 MCEBuddy.Engine.ConversionJob →
→ Performance Metrics for the Current Conversion

J’ai téléversé les deux journaux sur le serveur FTP.

C’est parce que votre commande personnalisée génère une commande invalide :

PostCustomCommandPath = “e:\videocaptures\cleaned files\mcebpostprocess.bat”
PostCustomCommandParameters = "%convertedfile% %sourcefile% “%destinationpath%” 1080 .%convertedext% 0 %airmonth% %airday% %airyear% %season%##
PostCustomCommandHangPeriod = 0
PostCustomCommandCritical = False
PostCustomCommandUISession = False
PostCustomCommandShowWindow = True
PostCustomCommandExitCodeCheck = False
ERROR> 2017-07-28T16:15:09 MCEBuddy.Engine.ConversionJob → Unhanded error during conversion, conversion cancelled
System.ArgumentException: Caractères non valides dans le chemin d’accès.
at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
at System.IO.Path.IsPathRooted(String path)
at MCEBuddy.Transcode.CustomCommand.Run()
at MCEBuddy.Engine.ConversionJob.Convert()

Votre commande personnalisée génère des caractères de chemin non valides pour votre fichier batch de commande.

Hmmmm Est-ce que quelque chose a changé dans la build .7 (.8), ou ai-je fait une bêtise ? (je n’ai sciemment rien modifié) J’ai fouillé dans les sauvegardes système, remonté jusqu’à 30 jours, et je ne vois aucune modification dans ce qui suit.

Voici la chaîne de commande telle qu’elle apparaît dans le profil

PostCustomCommandPath=“E:\VideoCaptures\Cleaned Files\MCEBPostProcess.bat”
PostCustomCommandParameters=“%convertedfile%” %sourcefile% “%destinationpath%” 1080 .%convertedext% 0 %airmonth% %airday% %airyear% %season%##
PostCustomCommandHangPeriod=0
PostCustomCommandCritical=false

Voici le fichier .bat appelé :

@ECHO OFF

setlocal EnableDelayedExpansion

SET BatFile=“E:\VideoCaptures\Cleaned Files\TVTransfer.bat”
SET OutputFileName=“%~n1”
SET InputFileName=“%~n2”
SET FolderOutput=“%~3”
SET WideoWidth=“%~4”
SET OutputExtension=“%~5”
SET OutputFileSize=“%~z1”
SET OADMonth=“%~7”
SET OADDay=“%~8”
SET OADYear=“%~9”
SHIFT /4
SET SEASON=%~9
Call %BatFile% %OutputFileName% %InputFileName% %FolderOutput% %WideoWidth% %OutputExtension% %OutputFileSize% %OADMonth% %OADDay% %OADYear% %SEASON%

Voici le fichier .bat où tout le travail est effectué :

@ECHO ON
setlocal EnableDelayedExpansion

SET sPAT=“\SERVER\Recorded TV\Other Shows”
SET OUTPUT_NAME=“%~1”
SET INPUT_NAME=%~2
SET OUTPUT_FOLDER=%~3
SET VIEDO_WIDTH=%~4
SET OUTPUT_Ext=%~5
SET OUTPUT_FILE_SIZE_MB=%~6
SET OAD_MONTH=%~7
SET OAD_DAY=%~8
SET OAD_YEAR=%~9
SHIFT /4
SET SEASON=%~9
SET SEARCHNAME=

If “%OAD_MONTH%” == “” (
SET OAD_MONTH=NA
)
If “%OAD_DAY%” == “” (
SET OAD_MONTH=NA
)
If “%OAD_YEAR%” == “” (
SET OAD_MONTH=NA
)
If “%SEASON%” == “” (
SET SEASON=NA
)

echo.%OAD_MONTH%

echo.%OUTPUT_FILE_SIZE_MB%

::Date du jour
FOR %%A IN (%Date%) DO (
FOR /F “tokens=1-3 delims=/- " %%B in (”%%~A") DO (
SET MMDDYYYY=%%B-%%C-%%D
)
)

If %OAD_MONTH% NEQ NA (
SET MMDDYYYY=%OAD_MONTH%-%OAD_DAY%-%OAD_YEAR%
)

echo.%MMDDYYYY%

:: Ne traiter que les fichiers vidéo, sinon simplement supprimer
If %OUTPUT_FILE_SIZE_MB% LEQ 200000000 (
DEL /q “%OUTPUT_FOLDER%%~1%OUTPUT_Ext%”
EXIT
)

:: Supprimer les espaces du nom de recherche
set HAYSTACK=%INPUT_NAME%
set HAYSTACK=%HAYSTACK: =%

echo.%HAYSTACK%

:: Récupérer la chaîne avant le premier « - ».
for /f “delims=-” %%i in (“%HAYSTACK%”) do set string=%%i
SET SEARCHNAME=%string%

echo.%SEARCHNAME%

:: Obtenir les paramètres de l’émission
for /f “tokens=2-3 delims=;” %%A in (‘findstr /b /i “%SEARCHNAME%” “C:\FTPSyncFiles\Bat Files\SHOWPARMS.txt”’) do (

SET sPAT=%%A
)

echo This is the program path %sPAT%

:: Copier vers le serveur
If %sPAT% NEQ “” (

IF %SEASON% NEQ NA (
:: Vérifier si le dossier existe déjà
if NOT EXIST %sPAT%\SEASON-%SEASON% (
MD %sPAT%\SEASON-%SEASON%
)

    	:: Suppression de l’utilisation de OUTPUT_NAME à cause des caractères spéciaux ; utilisation de %~1 (qui enlève les guillemets) à la place
  	START "MCE Move" /b cmd /c move /y "%OUTPUT_FOLDER%\%~1%OUTPUT_Ext%" %sPAT%\SEASON-%SEASON%
  	:: Mettre à jour le répertoire racine avec la date actuelle via Touch.exe
  	touch -m %sPAT%
) ELSE (
  :: Vérifier si le dossier existe déjà
  if NOT EXIST %sPAT%\%MMDDYYYY% (
	   MD %sPAT%\%MMDDYYYY%
    )
  	:: Suppression de l’utilisation de OUTPUT_NAME à cause des caractères spéciaux ; utilisation de %~1 (qui enlève les guillemets) à la place
  	START "MCE Move" /b cmd /c move /y "%OUTPUT_FOLDER%\%~1%OUTPUT_Ext%" %sPAT%\%MMDDYYYY%
  	:: Mettre à jour le répertoire racine avec la date actuelle via Touch.exe
  	touch -m %sPAT%
 )

:: Supprimer les fichiers .properties s’ils existent
DEL /q “E:\VideoCaptures\QSF%INPUT_NAME%.ts.properties”
DEL /q “E:\VideoCaptures\QSF%INPUT_NAME%.mpg.properties”
)

Commencez par afficher les variables transmises à votre commande personnalisée. Les variables proviennent de vos métadonnées. Consultez vos journaux pour voir quelles métadonnées sont transmises à MCEBuddy et vous aurez la réponse à la raison pour laquelle il y a un caractère illégal dans votre chemin quelque part.

Comment puis-je voir les variables transmises par MCE en .7 ou .8 ? Les anciennes versions enregistraient la sortie de MCE dans un journal de débogage, mais il semble que ce ne soit plus le cas. La seule chose que je trouve, ce sont les noms de variables réelles utilisées, enregistrés.

J’ai confirmé que MCEBPostProcess.bat et TVTransfer.bat fonctionnent lorsque je construis manuellement une session CMD en utilisant le nom de fichier produit par MCE.

Modifiez simplement votre fichier batch pour afficher les variables d’entrée et mettez-les entre guillemets afin de voir les espaces blancs ou écrivez-les dans un fichier texte.

Il ne semble rien être transmis.

Le fichier texte est vide (j’écris les variables dans un fichier texte), mais si j’exécute manuellement le fichier .bat avec :

“e:\videocaptures\cleaned files\mcebpostprocess.bat” “E:\VideoCaptures\Cleaned Files\Cops Dirty Laundry s30 e07 07-29-2017.ts” E:\VideoCaptures\Cops-S30E07-DirtyLaundry-62792569-0.ts “E:\VideoCaptures\Cleaned Files” 1080 .ts 2.500.852 07 28 2017 05

j’obtiens :

BatFileName “E:\VideoCaptures\Cleaned Files\TVTransfer.bat”
VideoOutPut “Cops Dirty Laundry s30 e07 07-29-2017”
VideoInPut “Cops-S30E07-DirtyLaundry-62792569-0”
FolderOutPut “E:\VideoCaptures\Cleaned Files”
VideoWidth “1080”
OutputExt “.ts”
FileSize “2.500.852”
Month “07”
Year “2017”
Season 05

Voici le mcebpostprocess.bat modifié :

ECHO ON

setlocal EnableDelayedExpansion

SET BatFile=“E:\VideoCaptures\Cleaned Files\TVTransfer.bat”
SET OutputFileName=“%~n1”
SET InputFileName=“%~n2”
SET FolderOutput=“%~3”
SET WideoWidth=“%~4”
SET OutputExtension=“%~5”
SET OutputFileSize=“%~6”
SET OADMonth=“%~7”
SET OADDay=“%~8”
SET OADYear=“%~9”
SHIFT /4
SET SEASON=%~9

echo BatFileName %BatFile% >> C:\Users\Wolverine\Desktop\MCEVARS.txt
echo VideoOutPut %OutputFileName% >> C:\Users\Wolverine\Desktop\MCEVARS.txt
echo VideoInPut %InputFileName% >> C:\Users\Wolverine\Desktop\MCEVARS.txt
echo FolderOutPut %FolderOutput% >> C:\Users\Wolverine\Desktop\MCEVARS.txt
echo VideoWidth %WideoWidth% >> C:\Users\Wolverine\Desktop\MCEVARS.txt
echo OutputExt %OutputExtension% >> C:\Users\Wolverine\Desktop\MCEVARS.txt
echo FileSize %OutputFileSize% >> C:\Users\Wolverine\Desktop\MCEVARS.txt
echo Month %OADMonth% >> C:\Users\Wolverine\Desktop\MCEVARS.txt
echo Year %OADYear% >> C:\Users\Wolverine\Desktop\MCEVARS.txt
echo Season %SEASON% >> C:\Users\Wolverine\Desktop\MCEVARS.txt

Call %BatFile% %OutputFileName% %InputFileName% %FolderOutput% %WideoWidth% %OutputExtension% %OutputFileSize% %OADMonth% %OADDay% %OADYear% %SEASON%

Votre fichier ne contient pas de métadonnées. Parcourez votre journal de conversion pour voir quelles métadonnées sont extraites de votre fichier ou joignez votre journal de conversion.

Je ne sais pas quoi rechercher, donc je l’ai joint.

Cops-S30E07-DirtyLaundry-62792569-0.ts-TS-2017-08-02T16-01-23.2099867-04-00.zip (36,3 Ko)

Je ne comprends pas comment MCE peut renommer le fichier avec la plupart des mêmes informations demandées dans les variables et échouer quand même. Je suppose que les informations proviennent de 2 endroits différents ?

Je ne sais pas, mais cela me donne le tournis.

Je suppose que le fichier bat est vraiment configuré à SET sPAT=\"\\\\SERVER\\Recorded TV\\Other Shows\" pour le serveur et que le logiciel du forum l’a transformé en SET sPAT="\SERVER\Recorded TV\Other Shows" dans le commentaire ci-dessus.

Oui, c’est correct.

Je l’ai complètement manqué, c’est là le problème. Vous avez mis votre exécutable entre guillemets, et lorsqu’il est transmis à Windows, cela génère une erreur de chemin illégal car le chemin ou le nom de fichier ne doit pas contenir le caractère \". Supprimez-le et cela fonctionnera, cela devrait ressembler à :

PostCustomCommandPath=E:\\VideoCaptures\\Cleaned Files\\MCEBPostProcess.bat

Note : vous voudrez peut-être passer à la version BETA 2.4.8 d’aujourd’hui, j’ai remarqué un problème avec la correspondance des métadonnées IMDB que nous avons corrigé et cela devrait également vous fournir le classement parental manquant.

EDIT : dans la version d’aujourd’hui, nous avons également ajouté une vérification pour ce caractère \" invalide et MCEBuddy le supprimera de CustomCommandPath s’il est rencontré afin d’éviter cet échec.

C’était ça, j’ai enlevé les guillemets et magie, ça a marché comme sur des roulettes !

Merci d’avoir corrigé le problème de classification parentale si rapidement !