Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: 70N1 en 24 Marzo 2010, 18:59 pm



Título: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: 70N1 en 24 Marzo 2010, 18:59 pm
Pues lo que dice mi titulo.

Quiero descargar un archivo diciendole en que parte del archivo ahi que empezar a descargar.

Alguna informacion?


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: elmaro en 25 Marzo 2010, 01:53 am
Te quieres hacer un administrador de descargas?
A mi también me serviría el code jeje


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: MANULOMM en 25 Marzo 2010, 13:34 pm
Primero deberas crear un hilo por cada parte, segundo es obtener el tamaño total del archivo, dividirlo por el numero de partes y empizas a descargar simultaneamente (Correr los  Hilos) cuando los hilos terminan tendras por cada hilo un memorystream, deberas unirlos... ya hasta me dieron ganas de hacerlo... jejejeje

Atentamente,


Juan Manuel Lombana
Medellín - Colombia


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: [D4N93R] en 25 Marzo 2010, 14:03 pm
Jeje si verdad, debe ser bien interesante!!


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: raul338 en 25 Marzo 2010, 14:36 pm
Emm... creo yo o el tipo pregunto otra cosa :huh: jaja

Lo que yo entendi como pregunta es como decirle al servidor desde que punto descargar el archivo. Eso hay que hacerlo aun con los hilos, sino descargas tantas veces como hilos tengas :P va a ser totalmente al pedo.

Como iniciar una descarga a partir de X punto? creo que esa fue la pregunta :P (o si no lo era, es algo importante para hacer esto)


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: Novlucker en 25 Marzo 2010, 14:43 pm
Yo entendí lo mismo :P

:http://www.geekpedia.com/tutorial196_Creating-an-advanced-download-manager-in-Csharp.html
:http://www.codeproject.com/KB/vb/downloadFileswProgressbar.aspx

Saludos


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: 70N1 en 25 Marzo 2010, 15:17 pm
Mi intencion es bajar una pelicula de megavideo con extensión flv.
Como megavideo pone un limite de tiempo...  pues e pensado en descargar el archivo partiendolo en partes y luego unirlas para tener la pelicula completa.

Estoy mirando las paginas que me as dado...


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: Novlucker en 25 Marzo 2010, 15:28 pm
Entonces si es eso :P
El primero es en C# y el segundo en VB.net, y por lo que parece es sencillo :D

Saludos


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: 70N1 en 25 Marzo 2010, 15:35 pm
Código:

  Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

        'Creating the request and getting the response
        Dim theResponse As HttpWebResponse
        Dim theRequest As HttpWebRequest
        Try 'Checks if the file exist

            theRequest = WebRequest.Create(Me.txtFileName.Text)
            theResponse = theRequest.GetResponse
        Catch ex As Exception

            MessageBox.Show("An error occurred while downloading file. Possibe causes:" & ControlChars.CrLf & _
                            "1) File doesn't exist" & ControlChars.CrLf & _
                            "2) Remote server error", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

            Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)

            Me.Invoke(cancelDelegate, True)

            Exit Sub
        End Try
        Dim length As Long = theResponse.ContentLength 'Size of the response (in bytes)

        Dim safedelegate As New ChangeTextsSafe(AddressOf ChangeTexts)
        Me.Invoke(safedelegate, length, 0, 0, 0) 'Invoke the TreadsafeDelegate

        Dim writeStream As New IO.FileStream(Me.whereToSave, IO.FileMode.Create)

        'Replacement for Stream.Position (webResponse stream doesn't support seek)
        Dim nRead As Integer

        'To calculate the download speed
        Dim speedtimer As New Stopwatch
        Dim currentspeed As Double = -1
        Dim readings As Integer = 0

        Do

            If BackgroundWorker1.CancellationPending Then 'If user abort download
                Exit Do
            End If

            speedtimer.Start()

            Dim readBytes(4095) As Byte
            Dim bytesread As Integer = theResponse.GetResponseStream.Read(readBytes, 0, 4096) ******AYUDA********

            nRead += bytesread
            Dim percent As Short = (nRead * 100) / length

            Me.Invoke(safedelegate, length, nRead, percent, currentspeed)

            If bytesread = 0 Then Exit Do

            writeStream.Write(readBytes, 0, bytesread)

            speedtimer.Stop()

            readings += 1
            If readings >= 5 Then 'For increase precision, the speed it's calculated only every five cicles
                currentspeed = 20480 / (speedtimer.ElapsedMilliseconds / 1000)
                speedtimer.Reset()
                readings = 0
            End If
        Loop

        'Close the streams
        theResponse.GetResponseStream.Close()
        writeStream.Close()

        If Me.BackgroundWorker1.CancellationPending Then

            IO.File.Delete(Me.whereToSave)

            Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)

            Me.Invoke(cancelDelegate, True)

            Exit Sub

        End If

        Dim completeDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)

        Me.Invoke(completeDelegate, False)

    End Sub



Código:
theResponse.GetResponseStream.Read(readBytes, 0, 4096) ******AYUDA********
Donde 0 es el numero donde empieza la descarga?


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: Novlucker en 25 Marzo 2010, 15:39 pm
Citar
Resume Downloads

It is possible to modify the code to allow resuming downloads. Add this code before the first use of the HttpWebRequest object.
Código
  1. theRequest.AddRange(whereYouWantToStart) '<- add this

You'll also need to set the Position property of the FileStream instance to the position where you want to resume the download. So be sure you also save this before the download is cancelled.
Código
  1. Dim writeStream As New IO.FileStream(Me.whereToSave, IO.FileMode.Open)
  2. writeStream.Position = whereYouWantToStart

Para revisar donde comenzar debes de leer el archivo anterior para ver hasta donde guardaste

Saludos


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: 70N1 en 25 Marzo 2010, 15:49 pm
Gracias, no me fije en eso.

Estoy mirando como implementarlo.


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: [D4N93R] en 25 Marzo 2010, 17:41 pm
Ah! jajaja xD

Así si! Y bueno aprovechen y pongan un listView para así puedas descargar varias al mismo tiempo.

Una colección de "Descargadores" que corren asíncronos dentro de un proceso aparte de el del formulario.

Aparte, Yo tengo una pregunta, cómo haces para saber el archivo FLV que consume flash? Porque dentro del Object de Megavideo esta:

Código:
<param name="movie" value="http://www.megavideo.com/v/3L3WGH0Q5e18db4c3db265345495b25ce9c8c7ea"></param>

Y si abres: http://www.megavideo.com/v/3L3WGH0Q5e18db4c3db265345495b25ce9c8c7ea (http://www.megavideo.com/v/3L3WGH0Q5e18db4c3db265345495b25ce9c8c7ea) Es flash.

Como sacas la dirección del archivo?


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: [D4N93R] en 25 Marzo 2010, 17:48 pm
Hay una página http://clipnabber.com/ (http://clipnabber.com/) que saca el video FLV, pero no se como lo hacen, sería interesante saberlo.


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: [D4N93R] en 25 Marzo 2010, 18:10 pm
Se me ocurrió una idea! Que tal si se conecta a la dirección http://www.megavideo.com/v/3L3WGH0Q5e18db4c3db265345495b25ce9c8c7ea y se comienza a descargar el Flash, seguro el flash apunta al flv y por medio de esto se puede saber de donde se está descargando.. Creo xD


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: 70N1 en 25 Marzo 2010, 21:49 pm
Yo ya se donde se encuentra el archivo flv. Lo que intento es bajaro por partes para aprovechar ancho de banda y asi descargarlo antes de que megavideo corte la conexion.

Se donde esta el archivo flv por que tengo un addon del firefox llamado firebug el cual te dice todo lo que se carga en una web.


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: [D4N93R] en 25 Marzo 2010, 21:54 pm
Me podrías decir cual es esa forma de conocer la ruta del video?

Estoy casi seguro de que es la misma velocidad, o incluso un poco más lento, si lo bajas por partes.

Lo mejor es que codifiques un DownloadManager pero como me gustó mucho la idea, estoy haciendo unas clases para descargas simultáneas, cuando la termine posteo el código.



Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: raul338 en 25 Marzo 2010, 23:43 pm
intente parsear esto :P

Descargador Multiconexion by Leandro Ascierto (http://www.leandroascierto.com.ar/categoria/Proyectos/articulo/Descargador%20Multiconexion.php)


Título: Re: Como descargo un archivo de internet ( EN PARTES ). Alguien sabe?
Publicado por: 70N1 en 29 Marzo 2010, 11:47 am
Muy bueno el codigo de leandro. abra que pasarlo a net