Ayuda con Nuget Descarga Video

Iniciado por rigorvzla, 31 Enero 2018, 01:02 AM

0 Miembros y 1 Visitante están viendo este tema.

rigorvzla

Hola nuevamente , estoy usando un codigo capaz de bajar videos de youtube y funciona de manera espectacular mi problema es que no se como direccionar el archivo descargado a una carpeta que yo le asigne.
Tyrrrz/YoutubeExplode

Es ese el codigo que uso, y tome de prueba el codigo que tiene de ejemplo llamado "ConsoleDemo"

este se utiliza pegando la direccion del video de youtube pero lo crea en el mismo directorio raiz, si alguien lo ha usado que me pueda ayudar le estare muy agradecido.

Aqui el codigo que plantea

Código (csharp) [Seleccionar]
using System;
using System.IO;
using System.Threading.Tasks;
using Tyrrrz.Extensions;
using YoutubeExplode;
using YoutubeExplode.Models.MediaStreams;

namespace DemoConsole
{
   public static class Program
   {
       /// <summary>
       /// If given a YouTube URL, parses video id from it.
       /// Otherwise returns the same string.
       /// </summary>
       private static string NormalizeId(string input)
       {
           if (!YoutubeClient.TryParseVideoId(input, out var id))
               id = input;
           return id;
       }

       /// <summary>
       /// Turns file size in bytes into human-readable string
       /// </summary>
       private static string NormalizeFileSize(long fileSize)
       {
           string[] units = { "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
           double size = fileSize;
           var unit = 0;

           while (size >= 1024)
           {
               size /= 1024;
               ++unit;
           }

           return $"{size:0.#} {units[unit]}";
       }

       private static async Task MainAsync()
       {
           // Client
           var client = new YoutubeClient();

           // Get the video ID
           Console.Write("YouTube URL: ");
           var id = Console.ReadLine();
           id = NormalizeId(id);

           // Get the video info
           Console.WriteLine("Cargando...");
           var video = await client.GetVideoAsync(id);
           Console.WriteLine('-'.Repeat(100));

           // Print metadata
           Console.WriteLine($"Id: {video.Id} | Title: {video.Title} | Author: {video.Author}");

           // Get media stream info set
           var streamInfoSet = await client.GetVideoMediaStreamInfosAsync(id);

           // Get the most preferable stream
           Console.WriteLine("Buscando la mejor calidad de video...");
           var streamInfo = streamInfoSet.Muxed.WithHighestVideoQuality();
           var normalizedFileSize = NormalizeFileSize(streamInfo.Size);
           Console.WriteLine($"Quality: {streamInfo.VideoQualityLabel} | Container: {streamInfo.Container} | Size: {normalizedFileSize}");

           // Compose file name, based on metadata
           var fileExtension = streamInfo.Container.GetFileExtension();
           var fileName = $"{video.Title}.{fileExtension}";

           // Replace illegal characters in file name
           fileName = fileName.Replace(Path.GetInvalidFileNameChars(), '_');

           // Download video
           Console.WriteLine($"Descargando [{fileName}]...");
           Console.WriteLine('-'.Repeat(100));

           var progress = new Progress<double>(p => Console.Title = $"Gestor de Descarga YouTube [{p:P0}]");
           await client.DownloadMediaStreamAsync(streamInfo, fileName, progress);

           Console.WriteLine("Descarga completa!");
           Console.ReadKey();
       }

       public static void Main(string[] args)
       {
           // This demo prompts for video ID, gets video info and downloads one media stream
           // It's intended to be very simple and straight to the point
           // For a more complicated example - check out the WPF demo

           Console.Title = "Gestor de Descarga YouTube";

           // Main method in consoles cannot be asynchronous so we run everything synchronously
           MainAsync().GetAwaiter().GetResult();
       }
   }
}