Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: SγиtαxEяяoя en 22 Julio 2013, 22:46 pm



Título: Resource Downloader
Publicado por: SγиtαxEяяoя en 22 Julio 2013, 22:46 pm
Hola, me preguntaba si se puede hacer un programa que descargue todos los recursos de una pagina "Juego Flash"

Tengo las "ID's" de los archivos algo asi por ejemplo


http://www.juego.com/juego/swf/id/001.swf
http://www.juego.com/juego/swf/id/002.swf
http://www.juego.com/juego/swf/id/003.swf
http://www.juego.com/juego/swf/id/004.swf
http://www.juego.com/juego/swf/id/005.swf

y se me toma muy molesto estar cambiando los "ID" de cada .swf

¿Existe alguna manera de hacerlo mas rapido? algo asi de poner todas las ID's en un "File.txt" y que el programa pase de Id, en Id y las descargue



Título: Re: Resource Downloader
Publicado por: Eleкtro en 22 Julio 2013, 23:52 pm
No estoy delante de la IDE, si hay algun error de sintaxis corrígelo:

Código
  1. ' dim strarray() as string = io.file.readalllines("C:\ids.txt")
  2.  
  3. for each ID as string in io.file.readalllines("C:\ids.txt"): downloader(ID) : next
  4.  
  5. private sub downloader(byval ID as string)
  6. ' descargar ID
  7. dim url = nothing
  8. try : url = new uri(ID) : catch : msgbox("Enlace no válido"): end try
  9. ...
  10. end sub


Título: Re: Resource Downloader
Publicado por: SγиtαxEяяoя en 23 Julio 2013, 00:37 am
Código
  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.        Dim client As WebClient = New WebClient
  3.        AddHandler client.DownloadProgressChanged, AddressOf client_ProgressChanged
  4.        AddHandler client.DownloadFileCompleted, AddressOf client_DownloadCompleted
  5.        client.DownloadFileAsync(New Uri("http://d1hmtg1vead5c8.cloudfront.net/sr/images/ships/swf_big_1.5.4/" & ListView1.SelectedItems(0).Text & ".swf"), (".\Archivos\") & ListView1.SelectedItems(0).Text & ".swf")
  6.        Button1.Text = "Please Wait"
  7.        Button1.Enabled = False
  8.        'If ListView1.SelectedItems.Count > 0 Then
  9.        '    My.Computer.Network.DownloadFile("http://d1hmtg1vead5c8.cloudfront.net/sr/images/ships/swf_big_1.5.4/" & ListView1.SelectedItems(0).Text & ".swf", (".\Archivos\") & ListView1.SelectedItems(0).Text & ".swf")
  10.        'End If
  11.    End Sub
  12.    Private Sub client_ProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
  13.        Dim bytesIn As Double = Double.Parse(e.BytesReceived.ToString())
  14.        Dim totalBytes As Double = Double.Parse(e.TotalBytesToReceive.ToString())
  15.        Dim percentage As Double = bytesIn / totalBytes * 100
  16.        progressBar1.Value = Int32.Parse(Math.Truncate(percentage).ToString())
  17.    End Sub
  18.    Private Sub client_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
  19.        Button1.Text = "Start Download"
  20.        Button1.Enabled = True
  21.        ProgressBar1.Value = 0
  22.    End Sub
  23.  

Esto es algo de lo que llevo, como puedo integrar tu codigo con el mio.. es decir como puedo hacer que al presionar el "Button1" se descargue todo lo que hay en el "Listview1"


Título: Re: Resource Downloader
Publicado por: z3nth10n en 23 Julio 2013, 00:51 am
Sencillo:

Código
  1. For Each ID In ListBox1.Items
  2.            My.Computer.Network.DownloadFile(ID, ".\Archivos\" & ListView1.SelectedItems(0).Text & ".swf")
  3.        Next

No estoy seguro si va a funcionar, pero la idea seria algo así. ;)


Título: Re: Resource Downloader
Publicado por: Eleкtro en 23 Julio 2013, 01:02 am
Haces un ciclo en la colección de items del Listbox, y listo, como te ha comentado IkillNukes.

Saludos


Título: Re: Resource Downloader
Publicado por: z3nth10n en 23 Julio 2013, 01:03 am
Bieeeen, como me gusta no equivocarme cuando ayudo! :3
PD: Muy fuera del tema: Donde tás metio tol día Elektro?
PDS: Espero que se hayan arreglado tus dudas Syntax, ya sabes si tienes alguna duda más, pues posteala... ;)


Título: Re: Resource Downloader
Publicado por: SγиtαxEяяoя en 23 Julio 2013, 01:07 am
Bien, gracias por sus ayudas pero les voy arruinar la fiesta  >:D

(http://img197.imageshack.us/img197/3379/i7pi.png)


Título: Re: Resource Downloader
Publicado por: z3nth10n en 23 Julio 2013, 01:16 am
Descarga el code de fuente y usa regex para borrar lo que no quieras del archivo. :silbar:


Título: Re: Resource Downloader
Publicado por: Eleкtro en 23 Julio 2013, 02:02 am
Puedes parsear un documento JSON usando > JSON.NET (http://james.newtonking.com/projects/json-net.aspx) <

O puedes loopear todas las lineas del documento y filtrar usando > RegEx (http://en.wikipedia.org/wiki/Regular_expression) <

Código
  1.        Dim json As String = <a><![CDATA["1010204": {]]></a>.Value
  2.        Dim [RegEx] As New System.Text.RegularExpressions.Regex(<a><![CDATA[\"(\d{7})\"]]></a>.Value)
  3.        MsgBox([RegEx].Match(json).Groups(1).ToString)

EDITO:

Código
  1.        Dim JSON As String = IO.File.ReadAllText("File.json")
  2.        Dim Pattern As String = <a><![CDATA[\"(\d{7,7})\"]]></a>.Value
  3.        Dim Matches As Match = Regex.Match(JSON, Pattern)
  4.  
  5.        Do While Matches.Success
  6.            MsgBox(Matches.Groups(1).ToString)
  7.            Matches = Matches.NextMatch()
  8.        Loop

Saludos.