Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - rigorvzla

#121
Buenas noches amigos, eh estado trabajando con la libreria SevenZip y me ah resultado tremenda, cree mi proyecto para probar el codigo aparte y me funciono de maravilla pero a la hora de aplicarlo a mi codigo base me da un error que no le encuentro razon de ser y me gustaria otras opiniones.

Este es el codigo de mi proyecto independiente.
Código (csharp) [Seleccionar]

public void sevenZipCompresorD()
       {
           System.Threading.Tasks.Task.Run(() =>
           {
               System.Windows.Forms.FolderBrowserDialog ofd = new System.Windows.Forms.FolderBrowserDialog();
               ofd.Description = "Seleccione la carpeta a comprimir";
               ofd.RootFolder = Environment.SpecialFolder.Desktop;

               Dispatcher.Invoke(() =>
               {

                   if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                   {
                       string folderToZip = ofd.SelectedPath;

                       System.Threading.Tasks.Task.Run(() =>
                       {
                           var tmp = new SevenZipCompressor();
                           tmp.ArchiveFormat = OutArchiveFormat.SevenZip;
                           tmp.CompressionMethod = CompressionMethod.Lzma;
                           tmp.CompressionLevel = CompressionLevel.Ultra;
                               tmp.FileCompressionStarted += (s, e) =>
                               {
                                   Dispatcher.Invoke(() => lblPorcentage.Content = (String.Format("Comprimiendo... [{0}%] {1}",
                                       e.PercentDone, e.FileName)));
                               };
                           tmp.CompressionFinished += (s, e) => { Dispatcher.Invoke(() => lblPorcentage.Content = ("Finished!")); };
                           tmp.CompressDirectory(folderToZip, @"test.7z");
                       });
                   }
               });
           });
       }

       private void SevenZipCompresorA()
       {
           System.Threading.Tasks.Task.Run(() =>
           {
               Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
           ofd.Title = "Archivos a Comprimir";
           ofd.Filter = "Archivos a Comprimir|*.*";
           ofd.Multiselect = true;
           if ((ofd.ShowDialog() == true))
           {
               //StreamWriter sw = new StreamWriter("listfile.lst");
               //foreach (string n in ofd.FileNames)
               //{
               //    sw.WriteLine(n);
               //}
               //sw.Close();

               System.Threading.Tasks.Task.Run(() =>
               {
                   var tmp = new SevenZipCompressor();
                   tmp.ArchiveFormat = OutArchiveFormat.SevenZip;
                   tmp.CompressionMethod = CompressionMethod.Lzma;
                   tmp.CompressionLevel = CompressionLevel.Ultra;
                   tmp.FileCompressionStarted += (s, e) =>
                   {
                       Dispatcher.Invoke(() => lblPorcentage.Content = (String.Format("Comprimiendo... [{0}%] {1}",
                           e.PercentDone, e.FileName)));
                   };
                   tmp.CompressionFinished += (s, e) => { Dispatcher.Invoke(() => lblPorcentage.Content = ("Finished!")); };
                   tmp.CompressFiles(@"test.7z", ofd.FileName);
               });

           }
           });
       }


Aclaro ambos funcionan de manera exitosa y pueden probarlo.

este es el codigo de mi proyecto base.
Código (csharp) [Seleccionar]

public void metodoDirectorio()
       {

           SpeechSynthesizer habla = new SpeechSynthesizer();
           AvisoVisual aviso = new AvisoVisual();
           aviso.Top = 1;
           aviso.Left = 600;
           aviso.Visibility = Visibility.Visible;

           System.Threading.Tasks.Task.Run(() =>
           {
               System.Windows.Forms.FolderBrowserDialog ofd = new System.Windows.Forms.FolderBrowserDialog();
               ofd.Description = "Seleccione la carpeta a comprimir";
               ofd.RootFolder = Environment.SpecialFolder.Desktop;

               Dispatcher.Invoke(() =>
               {
                   if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                   {
                       string folderToZip = ofd.SelectedPath;

                       System.Threading.Tasks.Task.Run(() =>
                       {
                           var tmp = new SevenZipCompressor();
                           tmp.ArchiveFormat = OutArchiveFormat.SevenZip;
                           tmp.CompressionMethod = CompressionMethod.Lzma;
                           tmp.CompressionLevel = CompressionLevel.Ultra;
                           tmp.FileCompressionStarted += (s, e) =>
                           {
                               Dispatcher.Invoke(() => aviso.Content = (String.Format("Comprimiendo... [{0}%] {1}",
                                   e.PercentDone, e.FileName)));
                           };
                           tmp.CompressionFinished += (s, e) => Dispatcher.Invoke(() => aviso.Close());
                           tmp.CompressDirectory(folderToZip, File.Create(Settings.Default.directorioComprimidos));
                       });
                   }
                   else
                   {
                       aviso.Close();
                   }
               });
           });            
       }
       public void metodoArchivo()
       {
           AvisoVisual aviso = new AvisoVisual();
           aviso.Top = 1;
           aviso.Left = 600;
           aviso.Visibility = Visibility.Visible;

           System.Threading.Tasks.Task.Run(() =>
           {
               Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
               ofd.Title = "Archivos a Comprimir";
               ofd.Filter = "Archivos a Comprimir|*.*";
               ofd.Multiselect = true;
               if ((ofd.ShowDialog() == true))
               {
                   System.Threading.Tasks.Task.Run(() =>
                   {
                       var tmp = new SevenZipCompressor();
                       tmp.ArchiveFormat = OutArchiveFormat.SevenZip;
                       tmp.CompressionMethod = CompressionMethod.Lzma;
                       tmp.CompressionLevel = CompressionLevel.Ultra;

                       tmp.FileCompressionStarted += (s, e) =>
                       {
                           Dispatcher.Invoke(() => aviso.Content = (String.Format("Comprimiendo... [{0}%] {1}",
                               e.PercentDone, e.FileName)));
                       };
                       tmp.CompressionFinished += (s, e) => { Dispatcher.Invoke(() => aviso.Close()); };
                       tmp.CompressFiles(Settings.Default.directorioComprimidos, ofd.FileName);
                   });
               }
               else
               {
                   Dispatcher.Invoke(() => aviso.Close());
               }
           });            
       }


como se podran fijar la unica diferencia es el cambio de direccion en la parte de salida del archivo.

El error del codigo 2 es: "acceso denegado a la ruta de acceso 'C:\'.' en realidad a la ruta que le ponga da ese error y no enteindo ni se por que, espero pueda alguien ayudarme.

PD. Despues de buscar solucion ahora me envia el archivo a el lugar que quiera pero sin nombre alguno y eso asigno un nombre.
#122
Buenas noches amigos, me gustaria que me opinaran en algo simple que no le encuentro solucion.

Eh creado un Slider para a mi aplicacion poder cambiar su opacidad, el valor se guarda en una settings, y no hay problema, pero quice que el valor a medida que uno lo cambia se mostrara en un label y es aqui donde eh fallado no encuentro como.

Lo que inicial mente logre es mostrar en la carga inicial del programa el valor que esta en el momento actual guardado en la setting.

        private void Window_Activated(object sender, EventArgs e)
        {
            lblOpaValor.Content = Settings.Default.opacidad;           
        }


mas no poder mostrar el valor a medida que uno lo cambie.

Intente asi pero falle entro otras muchas formas y nada.
        private void sldOpa_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            double valorOpacidad = e.NewValue;
            lblOpaValor.Content = valorOpacidad.ToString();
        }


Agradeceria sus ayudas , gracias por el tiempo.
#123
si pero no funciona por lo siguiente, inicialmente carga el microfono que tiene por default el sistema operativo, y asi se queda, la cosa es que al yo seleccionar el del combobox , deberia cargar ese microfono pero para eso, se debe cancelar el que ya se cargo y volver a cargar el "nuevo" . Pienso que es asi mas , en caso que fuera asi no se como lograrlo.

Gracias por la respuesta y espero puedas ayudarme
#124
utilizo el SpeechRecognitionEngine
con el la propiedad de "SetInputToDefaultAudioDevice" necesito que me ayuden a realizar una busqueda de los microfonos activos por medio de un foreach
aqui muestro dos metodos con los que me resulta la obtencion de los dispositivos pero ninguno resulta al yo seleccionar el microfono no me lo cambia, algo falta pero no se que es, segun es recargar el SetInputToDefaultAudioDevice luego de un Disposed pero no se como hacerlo.

private void CargaMicro()
       {
           ManagementObjectSearcher mo = new ManagementObjectSearcher("select * from Win32_SoundDevice");

           foreach (ManagementObject soundDevice in mo.Get())
           {
               //Console.WriteLine(soundDevice.GetPropertyValue("DeviceId"));
               //Console.WriteLine(soundDevice.GetPropertyValue("Manufacturer"));
               mic.Items.Add(soundDevice.GetPropertyValue("Name"));              
           }
           //MMDeviceEnumerator names = new MMDeviceEnumerator();
           //var devices = names.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active);
           //foreach (var device in devices)
           //{
           //    mic.Items.Add(device.FriendlyName);
           //}
       }

ya que por defecto me toma el microfono predeterminado, espero puedan ayudarme, estoy usando estos codigos ambos me dan en el combobox la lista de los dispositivoos de captura de sonido, pero no encuentro la forma que al yo seleccionarlo funcionen

antes de eso cargo este metodo

private void ActivarEscucha()
       {
           escucha.SetInputToDefaultAudioDevice();
           escucha.RecognizeAsync(RecognizeMode.Multiple);
           escucha.SpeechRecognized += Escucha_SpeechRecognized;
           escucha.AudioLevelUpdated += Escucha_AudioLevelUpdated;
       }
#125
Gracias elektro, partire de ahi entonces, creia que seria mas simple asi como lo mensionaste, asi como escribir en un txtbox pero al parecer es mas laborioso, investigare al respecto.
#126
la idea seria que al yo colocar el promt en cualquier lugar donde sea posible escribir, pueda dictar y que copie , sea ya en bloc de notas, en la barra de direccion del explorador web o un cuadro de consola.
#127
Eh creado este codigo con la finalidad de poder copiar todo lo que hable en un cuadro de texto, pero quiero que se pueda hacer fuera del cuadro de texto.

Aqui el codigo que implemente
Código (csharp) [Seleccionar]
using System.Windows;
using System.Speech.Synthesis;
using System.Speech.Recognition;

namespace Test
{
    public partial class MainWindow : Window
    {       
        PromptBuilder dictado = new PromptBuilder();
        SpeechSynthesizer habla = new SpeechSynthesizer();
        SpeechRecognitionEngine escucha = new SpeechRecognitionEngine();
        string speech;
        public MainWindow()
        {
            InitializeComponent();
            ActivarEscucha();
        }

 
        private void ActivarEscucha()
        {
            escucha.SetInputToDefaultAudioDevice();
            escucha.LoadGrammar(new DictationGrammar());
            escucha.RecognizeAsync(RecognizeMode.Multiple);
            escucha.SpeechRecognized += Escucha_SpeechRecognized;
            habla.SpeakAsync("Esperando Dictado");
        }

        private void Escucha_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            speech = e.Result.Text;
    // dictado.AppendText(speech);       
        textbox.AppendText(speech); <-- si yo coloco esta linea, me escribe lo que hable en el textbox, yo necesito es que lo escriba fuera del textbox

        }
    }
}


Espero puedan ayudarme a solventar este problema , gracias.
#128
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();
       }
   }
}
#129
resuelto todo muchas gracias por la ayuda brindada.
#130
mira elektro me da el mismo error, creia que era una falla mia, no nunca me ha funcionado solamente lo vi y me parecio interesanta crear un programa para bajar el mp3 de los videos de youtube, voy a revisar la libreria que me recomiendas, aunque en lo personal youtube como que ha tomado sus precauciones para evitar estas descargas con el cuento de copyright y demas. Gracias nuevamente, hay una libreria que si funciona a la perfeccion y creo es la version mas actualizada de este y se llama, Tyrrrz/YoutubeExplode

este si lo eh probado (su ejemplo ya compilado) y funciona solo que no me eh metido con el.

REEDITO: si sirve lo acabod e hacer funcionar , es necesario copiar tambies las dll donde estan los exes, ahora debo asignar la ruta de salida por que como dices tu lo pone en la misma carpeta , creando una nueva llamada OUTPUT y no encuentro donde cambiar eso, gracias nuevamente por ese dato