Sélectionner Une Page

Automatiser YouTube - 3/4

Publié le 6 avril 2026

Mis à jour le 12 avril 2026

Création d’un script python pour télécharger la vidéo et sa miniature sur YouTube

Lazy Lju

Lazy Lju

Experte en UX/UI design. Copywriter SEO/GEO depuis 5 ans, férue de neurosciences. Adepte du No-Code pour retrouver le temps de faire des trucs passionnants. Moins de clics = plus de plaisir.

Partager :

📍 Ce tuto est le troisième d'une série en 4 étapes détaillées dans le sommaire.

1. Créer les identifiants sur Google Cloud

Retour sur Google Cloud. C’est l’étape la plus technique de cette automatisation.

Comme YouTube n'autorise pas les "comptes de service" pour publier des vidéos, nous devons simuler une connexion humaine pour obtenir un jeton d'accès permanent.

  1. Créer les identifiants : L'API YouTube interdit l'utilisation de comptes de service pour publier des vidéos sur une chaîne standard. Elle exige une authentification OAuth 2.0 pour simuler une connexion humaine réelle.
    1. Dans votre console Google Cloud, allez dans API et services > Identifiants.
    2. Cliquez sur + Créer des identifiants > ID client OAuth, choisissez Application de bureau, nommez-le et téléchargez le fichier JSON obtenu sous le nom credentials.json.
    3. Dans "Type d'application", choisissez impérativement Application de bureau.
    4. Une fois créé, vous verrez votre nouvel identifiant dans la liste "ID client OAuth 2.0".
    5. Le bouton de téléchargement : À l'extrême droite de la ligne correspondant à votre identifiant, vous verrez une petite icône avec une flèche vers le bas (Télécharger le JSON).
    6. Téléchargez ce fichier et renommez-le simplement credentials.json.

2. Générer le token d'authentification

Ouvrir l'éditeur Cloud Shell : Cliquez sur l'icône >_ en haut à droite de votre console Google Cloud, puis sur Ouvrir l'éditeur pour accéder à une interface similaire à Visual Studio Code.

Ensuite :

  1. Glissez-déposez votre fichier credentials.json directement dans l'explorateur de fichiers à gauche.
  2. Créez un nouveau fichier nommé get_token.py et collez-y le code suivant qui force l'utilisation du port 8080. from google_auth_oauthlib.flow import InstalledAppFlow SCOPES = [ '<https://www.googleapis.com/auth/drive.readonly>', '<https://www.googleapis.com/auth/youtube.upload>' ] # On force l'URI de redirection pour correspondre aux attentes de Google flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', scopes=SCOPES, redirect_uri='<http://localhost:8080/>' ) auth_url, _ = flow.authorization_url(access_type='offline', prompt='consent') print(f"\\n1. Ouvrez ce lien dans votre navigateur :\\n{auth_url}\\n") code = input("2. Après avoir validé, copiez le code fourni par Google et collez-le ici : ") flow.fetch_token(code=code) with open('token.json', 'w') as token: token.write(flow.credentials.to_json()) print("\\nFichier token.json généré avec succès !")
  3. Enregistrez le fichier.
  4. Dans le terminal du Cloud Shell, tapez pip install google-auth-oauthlib et installez toutes les librairies nécessaires.
  5. Dans le terminal, tapez python3 get_token.py afin de générer un token qui permettra à votre script d'agir en votre nom de manière permanente.
  6. Ouvrez le lien. Si une alerte de sécurité s'affiche ("Application non validée"), cliquez sur Paramètres avancés puis sur Accéder à [Nom de votre projet] (non sécurisé) pour continuer. Connectez-vous avec votre compte YouTube dans la fenêtre qui apparaît, et validez les accès (tous !). Le token.json sera alors créé automatiquement.
  7. Le script attend un code qui se trouve directement dans la barre d'adresse de votre navigateur, là où ce dernier affiche un message d’erreur tout à fait normal (car le script tourne sur les serveurs de Google (Cloud Shell) et non sur votre ordinateur personnel).
    1. Allez dans la barre d'adresse de l'onglet du navigateur qui affiche l'erreur.
    2. Repérez la partie qui commence après code=. Copiez la longue suite de caractères et arrêtez-vous juste avant le &scope.
    3. Retournez dans votre terminal Cloud Shell où le script est en attente.
    4. Collez le code et appuyez sur Entrée. Le message "Fichier token.json généré avec succès !" devrait apparaître dans le terminal.
    5. Vérifiez que le fichier token.json est bien apparu dans votre explorateur de fichiers : regardez dans l'explorateur de fichiers à gauche de votre éditeur Cloud Shell pour vérifier que le nouveau fichier token.json est bien apparu.

3. Créer les fichiers app.py, requirements.txt et le Dockerfile

  1. Toujours dans l'éditeur Cloud Shell, créez les trois fichiers suivants nécessaires au fonctionnement de votre programme :
    1. app.py : C’est le cœur du programme qui reçoit l'ordre de Make.com, télécharge la vidéo et sa miniature depuis Drive et les envoie sur YouTube par morceaux (resumable upload) pour éviter les erreurs. import os from flask import Flask, request, jsonify from google.oauth2.credentials import Credentials from googleapiclient.discovery import build from googleapiclient.http import MediaIoBaseDownload, MediaFileUpload app = Flask(__name__) SCOPES = ['<https://www.googleapis.com/auth/drive.readonly>', '<https://www.googleapis.com/auth/youtube.upload>'] @app.route('/upload', methods=['POST']) def upload_video(): data = request.json creds = Credentials.from_authorized_user_file('token.json', SCOPES) # 1. Téléchargement depuis Google Drive drive_service = build('drive', 'v3', credentials=creds) request_drive = drive_service.files().get_media(fileId=data['drive_id']) temp_path = '/tmp/video.mp4' with open(temp_path, 'wb') as f: downloader = MediaIoBaseDownload(f, request_drive) done = False while not done: _, done = downloader.next_chunk() # 2. Envoi vers YouTube youtube_service = build('youtube', 'v3', credentials=creds) body = { 'snippet': { 'title': data.get('title', 'Vidéo automatique'), 'description': data.get('desc', 'Publié via automation') }, 'status': {'privacyStatus': data.get('privacy', 'private')} } media = MediaFileUpload(temp_path, chunksize=1024*1024*5, resumable=True) request_yt = youtube_service.videos().insert(part=','.join(body.keys()), body=body, media_body=media) response = None while response is None: _, response = request_yt.next_chunk() os.remove(temp_path) # Nettoyage de la mémoire return jsonify({"success": True, "youtube_id": response['id']}), 200 if __name__ == '__main__': app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 8080)))
    2. requirements.txt : Listez simplement les bibliothèques Flask, google-api-python-client, google-auth-oauthlib et google-auth-httplib2 avec leurs versions respectives.
    3. Dockerfile : Collez le code suivant dans un nouveau fichier type Dockerfile pour expliquer à Google comment construire l'ordinateur virtuel pour votre script: FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "app.py"]

4. Déploiement sur Google Cloud Run

Une fois que vous avez vos 5 fichiers (credentials.json, token.json, app.py, requirements.txt, Dockerfile) dans le même dossier, vous allez pouvoir lancer le déploiement.

Mais avant celà, une dernière configuration critique est nécessaire. Il est impératif d'augmenter le Request timeout à 60 minutes (3600 secondes) et d'allouer au moins 1 ou 2 Go de RAM pour que les vidéos lourdes ne fassent pas planter le système.

  1. Accédez à Google Cloud Run en vous assurant que le bon projet est bien actif.
  2. Sélectionnez Services dans le menu de navigation Cloud Run, puis cliquez sur Modifier et déployer la nouvelle révision.Cliquez sur l'onglet Conteneur.
  3. Dans le champ Délai avant expiration de la requête, saisissez 3600 secondes.
  4. Dans le champ Limite de mémoire, appliquez la valeur d’1 GiB.
  5. Cliquez sur Déployer.

ℹ️ Passons dès à présent à la dernière étape : Automatisation YouTube : le scenario Make.com complet.

    Vous en voulez encore ?

    Abonnez-vous à ma newsletter et ne ratez plus mes mots doux (et des scénarios Make gratuits).

    Pas de spam, promis. Vous ne recevrez que les derniers articles de mon blog. Un e-mail par semaine max, et c’est tout !

    * Si t’as capté la ref, coeur sur toi ❤️.
    Tutoyons-nous céans, entre bonnes gens !

    0 commentaire

    Envoyer un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *