Bonjour à tous,
Je suis un utilisateur très occasionnel de Autoit, excusez moi d'avance pour mes questions de débutant.
Je souhaite réaliser un petit script afin d'automatiser l'upload de vidéos sur youtube. A cette fin j'utilise l'excellent Youtube Uploader (https://github.com/porjo/youtubeuploader) programmé en Go. Aucun problème avec ce petit logiciel il fait bien son boulot.
Pour ce faire mon script devra effectuer les actions suivantes:
- Lister les fichiers avi, mp4, mkv
- Pour chaque fichier générer un fichier json contenant différentes informations comme le titre la date etc... provenant du nom de la vidéo
- lancer l’exécutable youtubeuploader avec les bons paramètres pour uploader les vidéos
- renommer le fichier traité en .bak ou modifier son titre
Déjà ce script vous parait-il faisable avec Autoit?
Ensuite dans le "design" de mon script j'imagine traité les fichiers 1 par 1 et attendre la fin de l'upload avant de passer au suivant, mais est-ce la bonne façon de faire?
Merci de votre aide.
[R] Automatiser l'upload de vidéos sur Youtube
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Automatiser l'upload de vidéos sur Youtube
Modifié en dernier par clark17 le lun. 12 mars 2018 09:45, modifié 1 fois.
Re: [..] Automatiser l'upload de vidéos sur Youtube
Voilà où j'en suis actuellement:
Pour le moment je tente l'upload de la première vidéo seulement. La génération du Json est ok, par contre le lancement de youtubeuploader ne fonctionne pas. Voici le message affiché:
Le fichier vidéo que je tente d'uploader est nommé comme ceci: 2018-12-27 (blabla) - blabla2 - titre.avi
#Include <Array.au3>
#Include <File.au3>
#Include <Date.au3>
;Renseignement sur le programme
Local $boite = MsgBox(1, "YoutubeUpload", "Placez vos vidéos dans le même répertoire puis OK.")
If $boite = 2 Then Exit
;Chargement de la liste des fichiers dans un tableau
Local $listevideos = _FileListToArrayRec(@ScriptDir, "*.avi;*.mp4;*.mkv")
;Découpage du nom du fichier
Local $tableaunom = StringSplit($listevideos[1], "-")
;Nettoyage du tableau
$tableaunom[1] = StringLeft($tableaunom[1], 4) ;Année
$tableaunom[2] = StringLeft($tableaunom[2], 2) ;Mois
$tableaunom[3] = StringLeft($tableaunom[3], 2) ;Jour
$tableaunom[5] = StringTrimLeft($tableaunom[5], 1) ;Nom de la vidéo
$tableaunom[5] = StringTrimRight($tableaunom[5], 4) ;Nom de la vidéo
;Affectation des variables utiles
Local $dateUS = $tableaunom[1] & "-" & $tableaunom[2] & "-" & $tableaunom[3]
Local $dateFR = $tableaunom[3] & "." & $tableaunom[2] & "." & $tableaunom[1]
Local $titrevideo = $tableaunom[5]
;Génére le fichier JSON
Local $fichierjson = StringTrimRight($listevideos[1], 3) & "json"
Filewrite($fichierjson, "{")
Local $hfichierjson = FileOpen($fichierjson, $FO_APPEND)
FileWriteLine($hfichierjson, ' "title": "' & $titrevideo & '",')
FileWriteLine($hfichierjson, ' "description": "",')
FileWriteLine($hfichierjson, ' "tags": ["tag1", "tag2", "tag3", "tag4", "tag5", "tag6"],')
FileWriteLine($hfichierjson, ' "privacyStatus": "private",')
FileWriteLine($hfichierjson, ' "embeddable": true,')
FileWriteLine($hfichierjson, ' "publicStatsViewable": true,')
FileWriteLine($hfichierjson, ' "recordingdate": "' & $dateUS & '",')
FileWriteLine($hfichierjson, ' "playlistIds": ["xxxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyyyyyyyy"],')
FileWriteLine($hfichierjson, ' "language": "fr"')
FileWriteLine($hfichierjson, "}")
FileClose($hfichierjson)
;Lance youtubeuploader avec les bons paramètres
Local $thumbnail = StringTrimRight($listevideos[1], 3) & "jpg"
MsgBox(0, "YoutubeUpload", " /k " & "youtubeuploader.exe -filename " & $listevideos[1] & " -metaJSON " & $fichierjson & " -thumbnail " & $thumbnail)
RunWait(@ComSpec & " /k " & "youtubeuploader.exe -filename " & $listevideos[1] & " -metaJSON " & $fichierjson & " -thumbnail " & $thumbnail)
;Message de réussite
MsgBox(0, "YoutubeUpload", "Upload vers Youtube terminé.")
#Include <File.au3>
#Include <Date.au3>
;Renseignement sur le programme
Local $boite = MsgBox(1, "YoutubeUpload", "Placez vos vidéos dans le même répertoire puis OK.")
If $boite = 2 Then Exit
;Chargement de la liste des fichiers dans un tableau
Local $listevideos = _FileListToArrayRec(@ScriptDir, "*.avi;*.mp4;*.mkv")
;Découpage du nom du fichier
Local $tableaunom = StringSplit($listevideos[1], "-")
;Nettoyage du tableau
$tableaunom[1] = StringLeft($tableaunom[1], 4) ;Année
$tableaunom[2] = StringLeft($tableaunom[2], 2) ;Mois
$tableaunom[3] = StringLeft($tableaunom[3], 2) ;Jour
$tableaunom[5] = StringTrimLeft($tableaunom[5], 1) ;Nom de la vidéo
$tableaunom[5] = StringTrimRight($tableaunom[5], 4) ;Nom de la vidéo
;Affectation des variables utiles
Local $dateUS = $tableaunom[1] & "-" & $tableaunom[2] & "-" & $tableaunom[3]
Local $dateFR = $tableaunom[3] & "." & $tableaunom[2] & "." & $tableaunom[1]
Local $titrevideo = $tableaunom[5]
;Génére le fichier JSON
Local $fichierjson = StringTrimRight($listevideos[1], 3) & "json"
Filewrite($fichierjson, "{")
Local $hfichierjson = FileOpen($fichierjson, $FO_APPEND)
FileWriteLine($hfichierjson, ' "title": "' & $titrevideo & '",')
FileWriteLine($hfichierjson, ' "description": "",')
FileWriteLine($hfichierjson, ' "tags": ["tag1", "tag2", "tag3", "tag4", "tag5", "tag6"],')
FileWriteLine($hfichierjson, ' "privacyStatus": "private",')
FileWriteLine($hfichierjson, ' "embeddable": true,')
FileWriteLine($hfichierjson, ' "publicStatsViewable": true,')
FileWriteLine($hfichierjson, ' "recordingdate": "' & $dateUS & '",')
FileWriteLine($hfichierjson, ' "playlistIds": ["xxxxxxxxxxxxxxxx", "yyyyyyyyyyyyyyyyyyyyy"],')
FileWriteLine($hfichierjson, ' "language": "fr"')
FileWriteLine($hfichierjson, "}")
FileClose($hfichierjson)
;Lance youtubeuploader avec les bons paramètres
Local $thumbnail = StringTrimRight($listevideos[1], 3) & "jpg"
MsgBox(0, "YoutubeUpload", " /k " & "youtubeuploader.exe -filename " & $listevideos[1] & " -metaJSON " & $fichierjson & " -thumbnail " & $thumbnail)
RunWait(@ComSpec & " /k " & "youtubeuploader.exe -filename " & $listevideos[1] & " -metaJSON " & $fichierjson & " -thumbnail " & $thumbnail)
;Message de réussite
MsgBox(0, "YoutubeUpload", "Upload vers Youtube terminé.")
Le fichier vidéo que je tente d'uploader est nommé comme ceci: 2018-12-27 (blabla) - blabla2 - titre.avi
- orax
- Modérateur
- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Automatiser l'upload de vidéos sur Youtube
À première vue, je dirais que c'est à cause des espaces dans le nom du fichier.
Code : Tout sélectionner
RunWait(@ComSpec & " /k " & "youtubeuploader.exe -filename """ & $listevideos[1] & """ -metaJSON " & $fichierjson & " -thumbnail " & $thumbnail)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: [..] Automatiser l'upload de vidéos sur Youtube
Effectivement, je n'avais pas fait attention à cela. Il faut juste passer le paramètre à Youtubeuploader avec avec les "".
Voici le code corrigé:
Merci à vous!
Voici le code corrigé:
RunWait(@ComSpec & " /k " & 'youtubeuploader.exe -filename "' & $listevideos[1] & '" -metaJSON "' & $fichierjson & '" -thumbnail "' & $thumbnail & '"')
Merci à vous!
Re: [..] Automatiser l'upload de vidéos sur Youtube
Petite question au passage, le fonctionnement de Runwait n'est pas exactement celui que j'attendais. Il ouvre bien une fenêtre de commande et lance youtubeuploader, mais une fois l'upload terminé je dois fermer cette fenêtre pour continuer le script:
Aurais-je zapper un paramètre avec RunWait ou alors une autre commande existe?
Aurais-je zapper un paramètre avec RunWait ou alors une autre commande existe?
- orax
- Modérateur
- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Automatiser l'upload de vidéos sur Youtube
Ce n'est pas lié à RunWait. Soit tu mets
@ComSpec & " /c " &
soit tu supprimes cette partie facultative.
Code : Tout sélectionner
RunWait('youtubeuploader.exe -filename "' & $listevideos[1] & '" -metaJSON "' & $fichierjson & '" -thumbnail "' & $thumbnail & '"')
Code : Tout sélectionner
C:\>cmd /?
Démarre une nouvelle instance de l’interpréteur de commandes de Windows
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
[[/S] [/C | /K] chaîne]
/C Exécute la commande donnée par la chaîne de caractères puis se termine.
/K Exécute la commande donnée par la chaîne de caractères et reste actif.
...
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)