fr2026-03-14

Astuce : télécharger des vidéos YouTube en Python (avec yt-dlp)

En ce moment je bosse sur Hyperclip, un petit SaaS pour les YouTubeurs qui veulent produire des clips de leurs vidéos YouTube. L'idée est simple : tu colles l'URL de ta vidéo, tu choisis les moments forts, et hop, tu récupères des clips prêts à poster sur TikTok, Instagram Reels ou YouTube Shorts.

La première brique du projet, c'est de télécharger la vidéo source. Et pour ça, il y a yt-dlp, un fork de youtube-dl qui est activement maintenu. Le truc cool, c'est qu'il a un binding Python natif. Pas besoin de subprocess, pas de shell. Tout se fait en quelques lignes.

Setup du projet

J'utilise uv pour gérer mes projets Python. C'est rapide, c'est propre, je recommande.

bash
uv init hyperclip
cd hyperclip
uv add yt-dlp

C'est tout. Le pyproject.toml généré ressemble à ça :

toml
[project]
name = "hyperclip"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "yt-dlp>=2026.3.13",
]

Le script

20 lignes, pas une de plus :

python
import sys

import yt_dlp


def download_video(url: str, output_dir: str = ".") -> None:
    """Download a YouTube video from the given URL."""
    opts = {
        "outtmpl": f"{output_dir}/%(title)s.%(ext)s",
        "format": "bestvideo+bestaudio/best",
        "merge_output_format": "mp4",
    }
    with yt_dlp.YoutubeDL(opts) as ydl:
        ydl.download([url])


def main():
    if len(sys.argv) < 2:
        print("Usage: uv run main.py <youtube-url>")
        sys.exit(1)
    download_video(sys.argv[1])


if __name__ == "__main__":
    main()

Ce qui se passe

  • outtmpl : le template du nom de fichier. %(title)s sera remplacé par le titre de la vidéo, %(ext)s par l'extension.
  • format : on demande la meilleure qualité vidéo + audio. Si les deux flux sont séparés (ce qui est souvent le cas sur YouTube), yt-dlp les merge automatiquement.
  • merge_output_format : on force le résultat en MP4.

Utilisation

bash
uv run main.py https://www.youtube.com/watch?v=dQw4w9WgXcQ

Et voilà, la vidéo se télécharge dans le dossier courant. Pas besoin d'activer un venv, uv run gère tout.

La suite pour Hyperclip

C'est la première étape. L'idée maintenant c'est d'enchaîner avec la détection des moments forts (transcription + analyse), puis le découpage automatique des clips. Stay tuned ;)