csharp-youtube-explode

Cómo descargar videos de YouTube desde C# con YouTubeExplode

YouTubeExplode es una biblioteca de C# que proporciona una interfaz para consultar los metadatos de los videos, listas de reproducción y canales de YouTube.

Con YoutubeExplode, podemos realizar fácilmente una amplia variedad de tareas, como descargar videos y listas de reproducción, buscar videos por palabras clave, obtener información sobre videos y canales, y mucho más.

La biblioteca está diseñada para ser intuitiva y fácil de entender. Además, hay una gran cantidad de documentación y ejemplos en la página del proyecto.

YoutubeExplode es compatible con .NET Standard 2.0, lo que significa que se puede utilizar en cualquier plataforma que admita esta versión del marco, incluido Windows, Linux y macOs.

Descargar videos de YouTube puede estar en contra de las condiciones de uso y servicio en tu país. Usarla bajo vuestra responsabilidad

Cómo usar YoutubeExplode

Podemos añadir la biblioteca a un proyecto de .NET fácilmente, a través del paquete Nuget correspondiente.

Install-Package YoutubeExplode

Aquí tenéis algunos de cómo utilizar YoutubeExplode extraídos de la documentación de la librería. Por ejemplo, así podemos obtejer los metadatos de un vídeo,

using YoutubeExplode;

var youtube = new YoutubeClient();

var videoUrl = "https://youtube.com/watch?v=u_yIGGhubZs";
var streamManifest = await youtube.Videos.Streams.GetManifestAsync(videoUrl);
var streamInfo = streamManifest.GetMuxedStreams().GetWithHighestVideoQuality();
var stream = await youtube.Videos.Streams.GetAsync(streamInfo);
await youtube.Videos.Streams.DownloadAsync(streamInfo, $"video.{streamInfo.Container}");

Mientras que para descargar el propio stream del vídeo haremos,

using YoutubeExplode;

var youtube = new YoutubeClient();

// You can specify either the video URL or its ID
var videoUrl = "https://youtube.com/watch?v=u_yIGGhubZs";
var video = await youtube.Videos.GetAsync(videoUrl);

var title = video.Title; // "Collections - Blender 2.80 Fundamentals"
var author = video.Author.ChannelTitle; // "Blender"
var duration = video.Duration; // 00:07:20

Y si en lugar de un vídeo quisiéramos trabajar con una playlist, podríamos hacerlo así,

using YoutubeExplode;

var youtube = new YoutubeClient();
var playlistUrl = "https://youtube.com/playlist?list=PLa1F2ddGya_-UvuAqHAksYnB0qL9yWDO6";

await foreach (var video in youtube.Playlists.GetVideosAsync(playlistUrl))
{
    var title = video.Title;
    var author = video.Author;
}

Como vemos es muy sencilla. La biblioteca proporciona muchos más métodos y opciones. Consultar la página del proyecto para más información.