Frequently Asked Question
Contexte
Lorsqu'on utilise Streamer.bot pour piloter OBS, on a parfois envie de charger des fichiers (par exemple des fichiers texte) ou encore de définir des fichiers comme source navigateur ou média à ouvrir, ou encore de définir un fichier son comme étant à lire via une action de type "Play sound"...
Problème
Il n'existe pas de fonction intégrée nativement à Streamer.bot qui permette de savoir avant de l'utiliser si un fichier existe ou non. Résultat : si un fichier n'existe pas, l'action qui va l'utiliser va au mieux ne rien faire... et au pire provoquer une erreur ailleurs. Ce qu'on veut ici, c'est pouvoir être en capacité de déclencher "autre chose" dans le cas où le fichier qu'on souhaite n'existe pas.
Solution
J'ai créé une sub action spécifique qui permet de faire cela. Il suffit d'indiquer dans un argument %cheminComplet% le chemin complet vers le fichier que l'on veut tester, y compris le nom du fichier et son extension. Attention, on utilise des slashs : C:/users/dossier... et non des antislashs C:\users\dossier. On fait appel à l'action que je vous ai préparée en C#. Et le résultat "True" ou "False" s'inscrira dans un nouvel argument nommé %fichierExiste%. Il est alors possible d'enchainer avec un test If sur %fichierExiste% pour faire quelque chose si True, et autre chose si False.
Mise en œuvre de la solution
Directement via l'import de Streamer.bot
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
Utilisation
Conçu notamment pour le streamer kafkalino sur Twitch dont ceux qui le connaissent savent qu'il adore faire participer ses viewers.
En l'espèce, il s'agit à la base d'un fichier texte de 100 lignes contenant des bêtises dont la version audio de certaines a été préparée par des viewers. Moralité, pour chaque numéro de ligne du fichier texte correspond (ou pas) une version audio intitulée 1.mp3 pour la première ligne, 2.mp3 pour la seconde, etc.
Lorsqu'une ligne du fichier est choisie aléatoirement entre 1 et 100, on ne peut pas savoir si le fichier MP3 correspondant a déjà été produit, envoyé, et ajouté au dossier ad-hoc ou s'il n'est pas encore existant. C'est là que l'action présentée intervient, afin d'utiliser le fichier audio s'il existe... et de remplacer par autre chose (par exemple un TTS pour lire ladite ligne de texte) quand le fichier n'existe pas encore.
En effet, déclencher la lecture d'un son qui n'existe pas provoquerait simplement une absence de résultat (il n'y aurait pas de son) et il n'y aurait alors pas d'alternative possible.