Autor
|
Tema: [SOURCE] mrtzcmp3 Downloader (Leído 11,511 veces)
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Hola buenas, he hecho una app que espero que os guste: Descripción: Esta app mediante "algoritmos", lo que hace es, sacar la música de dicha web ( http://mrtzcmp3.net/) en links para que luego sean descargados... **Luego explico como descargarse los links de forma rápida y cómodaLa app descargandose algo de música...http://www.mediafire.com/download/76r1o6dhw7p66zb/mrtzcmp3Downloader.rarBásicamente, tenéis que poner los títulos de las músicas separados por puntos y comas, y luego, darle a "Buscar"... La app lo único que va a hacer va a ser los links de la música, ya luego vosotros pues tenéis que descargarosla aparte... > Tutorial:Antes de nada, decir que JD y Orbit downloader no van... Así que la última solución es descargarse Firefox e instalar su plugin DownloadThemAll. Una vez hecho esto, cogemos el archivo con la lista generada por mi app, y lo abrimos con un editor de textos que admita busquedas con Regex como Sublime Text, cogemos y buscamos con Regex esto: http://.+, luego le damos a Find All, copiamos el texto seleccionado y lo ponemos en un nuevo archivo y reemplazamos todos los espacios por %20, y después lo guardamos y lo volvemos a abrir con FF, una vez con el TXT abierto en FF, damos click derecho y dTa OneClick... Como podéis observar:Un saludo. PD: Ya se que la app no tiene el nombre más correcto, pero es el primero que se me ocurrió... xD
|
|
« Última modificación: 24 Octubre 2013, 10:53 am por Ikillnukes »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Spiritdead5
Desconectado
Mensajes: 17
|
ya vi como le haces, practicamente parseas los documents del webclient q seguramente usas, y rastreas el script q tiene los .mp3 del reproductor de dicha web, estuve dandole 1 vueltita al firebug y le pille por cierto acabas de darme 1 terrible idea sobre una arquitectura de gestion de archivos y esta pequeña web, ojala tenga 1 gran repertorio de musica 1 rato jugando con mis algoritmos llegue a esto, es mejorable, lo mejorare, pero te dejare este para q veas q si se puede mejorar Imports System.Net Imports System.Text.RegularExpressions Imports System.IO
Class MainWindow #Region "Variables" Dim response As HttpWebResponse Dim request As HttpWebRequest Dim cookies As New CookieContainer Dim Identificador As String Dim data As String Dim finder As MatchCollection Private Delegate Sub Refresher() #End Region #Region "API" Dim base As String = "http://mrtzcmp3.net/" Dim Extension1 As String = "_1s.html" #End Region #Region "Funciones" Public Sub tarea(ByVal URL As String) request = CType(HttpWebRequest.Create(base & Utils.UrlEncode(URL) & Extension1), HttpWebRequest) request.CookieContainer = cookies response = CType(request.GetResponse(), HttpWebResponse) For Each cook As Cookie In response.Cookies If cook.Name = "haras" Then Identificador = cook.Value End If cookies.Add(cook) Next data = New System.IO.StreamReader(response.GetResponseStream()).ReadToEnd() finder = Regex.Matches(data, "D\?.+? _") If finder.Count > 0 Then request = CType(HttpWebRequest.Create(base & finder(0).Value & Identificador), HttpWebRequest) request.CookieContainer = cookies response = CType(request.GetResponse(), HttpWebResponse) data = New System.IO.StreamReader(response.GetResponseStream()).ReadToEnd() finder = Regex.Matches(data, "Get_a_a_\w+\.mp3") If finder.Count > 0 Then request = CType(HttpWebRequest.Create(base & finder(1).Value), HttpWebRequest) request.CookieContainer = cookies Using Respuesta As HttpWebResponse = CType(request.GetResponse, HttpWebResponse) 'Asocio la respuesta al stream local Dim total As Integer = Respuesta.ContentLength Dim StreamRespuesta As Stream = Respuesta.GetResponseStream 'Bucle que lee y escribe en el fichero Using ptfArchivoDestino As New FileStream("test.mp3", FileMode.Create) Dim buffer(102400) As Byte '100KB Dim Leido As Integer = 0 Dim acumulador As Integer = 0 Do Leido = StreamRespuesta.Read(buffer, 0, buffer.Length) acumulador += Leido ptfArchivoDestino.Write(buffer, 0, Leido) ProgressBar1.Dispatcher.Invoke(New Refresher(Sub() ProgressBar1.Value = (acumulador / total) * 100)) System.Threading.Thread.Sleep(50) Loop Until Leido = 0 'Compruebo que no es final de transmision(1) End Using End Using End If End If End Sub #End Region Private Sub Button1_Click(sender As Object, e As RoutedEventArgs) Handles Button1.Click Dim t As System.Threading.Thread t = New System.Threading.Thread(AddressOf tarea) t.Start(TextBox1.Text) End Sub End Class Public Class Utils Public Shared Function UrlDecode(ByVal value As String) As String If String.IsNullOrEmpty(value) Then Return String.Empty End If ' UrlEncode escapes with lowercase characters (e.g. %2f) but oAuth needs %2F value = Regex.Replace(value, "(%[0-9a-f][0-9a-f])", Function(c) c.Value.ToUpper()) ' these characters are not escaped by UrlEncode() but needed to be escaped value = value.Replace("%20", " ") value = value.Replace("%5B", "[") value = value.Replace("%5D", "]") value = value.Replace("+", " ") value = value.Replace("%3A", ":") value = value.Replace("%23", "#") value = value.Replace("%C3%B1", "ñ") value = value.Replace("%28", "(") value = value.Replace("%29", ")") value = value.Replace("%21", "!") Return value End Function Public Shared Function UrlEncode(ByVal value As String) As String value = value.Replace(" ", "_") Return value End Function End Class añadi unas cuantas cositas interesantes, para q le veas e investigues LENGUAJE VB.NET PLATAFORMA WPF1 consejo, si haras 1 programa que baja canciones Hacelo completo, no solo dejarle la URL al user para q la baje desde otro programa, es muy mal visto si es dificil, lee, podras, lo q te deje ahi permite bajar el archivo pero cambie las rutas 1 poco en los httpwebcreate
|
|
« Última modificación: 25 Octubre 2013, 11:21 am por Spiritdead5 »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Bueno, pues... xD Public Shared Function UrlDecode(ByVal value As String) As String If String.IsNullOrEmpty(value) Then Return String.Empty End If ' UrlEncode escapes with lowercase characters (e.g. %2f) but oAuth needs %2F value = Regex.Replace(value, "(%[0-9a-f][0-9a-f])", Function(c) c.Value.ToUpper()) ' these characters are not escaped by UrlEncode() but needed to be escaped value = value.Replace("%20", " ") value = value.Replace("%5B", "[") value = value.Replace("%5D", "]") value = value.Replace("+", " ") value = value.Replace("%3A", ":") value = value.Replace("%23", "#") value = value.Replace("%C3%B1", "ñ") value = value.Replace("%28", "(") value = value.Replace("%29", ")") value = value.Replace("%21", "!") Return value End Function Public Shared Function UrlEncode(ByVal value As String) As String value = value.Replace(" ", "_") Return value End Function
Esto ya lo había pensado, es más tenía pensado hacer de forma mas sencilla esa función, como tengo un host, pues subo un archivo php que me codifique la URL y me devuelta la string codificada, así no tengo que estar añadiendo cases ni nada, y pa colmo, tengo todos los caracteres convertidos... Por lo demás, le echare un vistazo... PD: He añadido un buscador más mp3 skull, subiré otra app, con más cosas... Un saludo. Y gracias por tomarte la molestia... Por cierto, si algo me enseño Elektro es a usar select casesSelect case value
case is ñ
return tal de tal
end select no es por nada, pero ahorras mucho espacio en la memoria que metiendo 40 variables replace.. xD
|
|
« Última modificación: 26 Octubre 2013, 12:44 pm por Ikillnukes »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
La solución propuesta es fácilmente mejorable, muestro dos ejemplos. Versión RegEx: #Region " URL Decode " ' [ URL Decode ] ' ' //By Elektro H@cker ' ' Examples : ' MsgBox(URL_Decode("http%3A%2F%2Fwww%2Ewebsite%2Ecom%2Fpage%2Easp%3Fid%3D5%26test%3DHello%5FWorld")) ' Result: http://www.website.com/page.asp?id=5&test=Hello_World Private Function URL_Decode(ByVal url As String) As String Return Regex.Replace( _ url.Replace("+", Chr(Keys.Space)), _ "(%[\dA-F]{2})", Function(hex) Chr(String.Format("&H{0}", hex.Value.Substring(1))), _ RegexOptions.IgnoreCase) End Function #End Region
Versión Select Case: #Region " URL Decode " ' [ URL Decode ] ' ' //By Elektro H@cker ' ' Examples : ' MsgBox(URL_Decode("http%3A%2F%2Fwww%2Ewebsite%2Ecom%2Fpage%2Easp%3Fid%3D5%26test%3DHello%5FWorld")) ' Result: http://www.website.com/page.asp?id=5&test=Hello_World Private Function URL_Decode(ByVal url As String) As String Dim decoded As String = String.Empty For c As Integer = 0 To (url.Length - 1) Select Case url(c) Case "+" decoded &= Convert.ToChar(Keys.Space) Case "%" decoded &= Convert.ToChar(CInt("&H" & url(c + 1) & url(c + 2))) c += 2 Case Else decoded &= url(c) End Select Next c Return decoded End Function #End Region
También se puede mejorar todo lo demás del proyecto en general para desarrollar un downloader asincronico, pero con este código es más que suficiente. Esto lo posteo para todas aquellas personas que se encuentren en la misma situación, sincéramente, no lo posteo para ayudar al autor del post, ni al otro usuario. Un saludo!
|
|
« Última modificación: 26 Octubre 2013, 16:39 pm por EleKtro H@cker »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Bueno, claro, siempre puedes hacer lo que PHP hace en VB.NET, que es coger y convertir las letras a ASCII y ese ASCII a Hexadecimal..
Un saludo.
PD: El método por Select Case no me termina de convencer, no se porque parece que ocupa más memoria RAM...
|
|
« Última modificación: 26 Octubre 2013, 16:52 pm por Ikillnukes »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
no se porque parece que ocupa más memoria RAM... Un RegEx reserva más memoria y es lento en comparación, tarda más en inicializarse y en finalizar su ejecución (Lease las diferentes RegExOptions para ajustar un poco estas caracteristicas). Según un test de velocidad que acabo de realizar para decodificar 1.000.000 de strings, estos han sido los resultados: Método 1 (Regex.Replace): 11.826 segundos Método 2 (String Append): 6.201 segundos Óbviamente, para procesar una efímera cantidad de urls, no importa en absoluto que método se use ya que la diferencia en ms no se podrá apreciar. Saludos.
|
|
« Última modificación: 26 Octubre 2013, 18:57 pm por EleKtro H@cker »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Y si no es mucho preguntar, como has procesado un millón de Strings? xD
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
No me expresé corréctamente, quería decir que he procesado el mismo string un millón de veces. watch start For x = 0 to 1000000 URL_Decode(...) next watch end mostrar resultados
Saludos
|
|
« Última modificación: 26 Octubre 2013, 20:43 pm por EleKtro H@cker »
|
En línea
|
|
|
|
Spiritdead5
Desconectado
Mensajes: 17
|
Y si no es mucho preguntar, como has procesado un millón de Strings? xD
sigo prefiriendo mi forma mis algoritmos se basan en optimizacion de CPU, y un select case para y un ciclo para decodear o encodear una URL me parece un desperdicion pero bueno lo de arriba lo arme en 5 min, pero hay unas cuantas cosas q deberias revisar porque tienes 1 bug algo feo en el codigo sobre todo aca finder = Regex.Matches(data, "D\?.+? _") y aca request = CType(HttpWebRequest.Create(base & finder(0).Value & Identificador), HttpWebRequest) no estas tomando en cuenta algo importante
|
|
« Última modificación: 26 Octubre 2013, 21:05 pm por Spiritdead5 »
|
En línea
|
|
|
|
Keyen Night
Desconectado
Mensajes: 496
Nothing
|
System.Web.HttpUtility
Es una clase de .Net, que contiene métodos que pueden "parsear" los caracteres inválidos en hexadecimal y viceversa. Están disponibles los métodos Encode/Decode Url, respectivamente para cada caso.
|
|
|
En línea
|
La Fé Mueve Montañas... ...De Dinero
La programación es más que un trabajo es más que un hobby es una pasión...
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Source] Downloader sin API's sin DLL's sin OCX's... solo una Función!
« 1 2 »
Programación Visual Basic
|
Mad Antrax
|
12
|
8,686
|
4 Junio 2007, 04:22 am
por jackl007
|
|
|
[Source] Downloader + Edit server
« 1 2 3 »
Programación Visual Basic
|
Karcrack
|
21
|
10,004
|
7 Septiembre 2007, 21:36 pm
por Freeze.
|
|
|
Christmas Downloader + (SOURCE) VB.NET
.NET (C#, VB.NET, ASP)
|
skyweb07
|
1
|
2,532
|
28 Diciembre 2008, 17:47 pm
por ~~
|
|
|
[Source] Downloader VB 6.0
Programación Visual Basic
|
Elemental Code
|
1
|
2,971
|
17 Abril 2010, 06:38 am
por BlackZeroX
|
|
|
[Source Code] autorun.inf.wim - Stealer&Downloader / No Requiere Privilegios / Propagacion USB
Análisis y Diseño de Malware
|
**Aincrad**
|
0
|
8,058
|
10 Septiembre 2021, 02:18 am
por **Aincrad**
|
|