If PyTubeFix fails → tries yt-dlp If yt-dlp fails → tries YouTube API You get consistent results regardless of which backend succeeds ...