[R] Automatiser l'upload de vidéos sur Youtube

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
clark17
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 23 sept. 2011 02:12
Status : Hors ligne

[R] Automatiser l'upload de vidéos sur Youtube

#1

Message par clark17 »

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.
Modifié en dernier par clark17 le lun. 12 mars 2018 09:45, modifié 1 fois.
clark17
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 23 sept. 2011 02:12
Status : Hors ligne

Re: [..] Automatiser l'upload de vidéos sur Youtube

#2

Message par clark17 »

Voilà où j'en suis actuellement:
#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é.")
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é:
Image
Le fichier vidéo que je tente d'uploader est nommé comme ceci: 2018-12-27 (blabla) - blabla2 - titre.avi
Avatar du membre
orax
Modérateur
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  

#3

Message par orax »

À 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)
clark17
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 23 sept. 2011 02:12
Status : Hors ligne

Re: [..] Automatiser l'upload de vidéos sur Youtube

#4

Message par clark17 »

Effectivement, je n'avais pas fait attention à cela. Il faut juste passer le paramètre à Youtubeuploader avec avec les "".
Voici le code corrigé:
RunWait(@ComSpec & " /k " & 'youtubeuploader.exe -filename "' & $listevideos[1] & '" -metaJSON "' & $fichierjson & '" -thumbnail "' & $thumbnail & '"')

Merci à vous!
clark17
Niveau 4
Niveau 4
Messages : 70
Enregistré le : ven. 23 sept. 2011 02:12
Status : Hors ligne

Re: [..] Automatiser l'upload de vidéos sur Youtube

#5

Message par clark17 »

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:
Image

Aurais-je zapper un paramètre avec RunWait ou alors une autre commande existe?
Avatar du membre
orax
Modérateur
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

#6

Message par orax »

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)
Répondre