Estoy haciendo como proyecto de fin de curso un gestor de videos de YouTube. Tratando el tema de la descarga no me oriento muy bien. He encontrado un par de códigos por internet, pero no me funcionan y además no vienen nada comentados.
Por ahora lo único que tengo es el inicio, pero no se como seguir. Si alguien me diese alguna indicación sería de gran utilidad.
Public Sub obtenerInfo(ByVal link As String)
Dim peticion As HttpWebRequest
Dim respuesta As HttpWebResponse
Dim source As String
If link.Contains("youtube.com") Then
Try
'Se realiza una peticion a la URL que nosotros queremos descargar
peticion = DirectCast(HttpWebRequest.Create(link), HttpWebRequest)
'Recibimos la respuesta de esa URL
respuesta = DirectCast(peticion.GetResponse, HttpWebResponse)
'Leemos la respuesta y obtenemos toda la información de esa página en una string
source = New StreamReader(respuesta.GetResponseStream, System.Text.Encoding.Default).ReadToEnd
'Hasta ahora solo tenemos toda la información que contiene el link
Catch ex As Exception
MessageBox.Show("Ha ocurrido un error inesperado", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End Sub
Gracias.
Creo q esta es la mejor respuesta que te podria dar:
http://youtubefisher.codeplex.com/
Es un proyecto exitoso q se alberga en codeplex, obviamente es open source, el lenguaje esta en c#, pero no le veo el problema para traducirlo, hace tiempo estaba revisando su codigo y es super interesante.
Saludos
yo te diria que uses la api de youtube en vez de paginas de terceros...
Estoy ojeando el código de YouTube Fisher, y la verdad es que me gusta.
Estoy traduciendo la funcion de obtener el título del video. Pero tengo un problema a la hora de utilizar la funcion HttpUtility.HtmlEncode. Parece ser como que no la encuentra. Y sí, tengo el Imports System.Web.
Por lo que he buscado, realmente debería funcionar, pero no se.
El código de la función en cuestión sería el siguiente:
Try
Dim ini As Integer = videoPageHtmlSource.IndexOf("<title>", StringComparison.CurrentCultureIgnoreCase)
Dim fin As Integer = videoPageHtmlSource.IndexOf("</title>", ini, StringComparison.CurrentCultureIgnoreCase)
If ini < 0 Or fin < 0 Then
MsgBox("La pagina no contiene tag de título")
Else
videoTitle = videoPageHtmlSource.Substring(ini + 7, fin - ini - 7)
'No me reconoce la linea de abajo. Me la marca como error
videoTitle = System.Web.HttpUtility.HtmlEncode(videoTitle)
videoTitle = System.Text.RegularExpressions.Regex.Replace(videoTitle, "[^\w\.@\[\]\\/()&%' #{}€$£!=-]", String.Empty)
videoTitle = videoTitle.Replace("\\", "-").Replace("/", "-").Trim()
If (videoTitle.StartsWith("Youtube", StringComparison.CurrentCultureIgnoreCase)) Then
videoTitle = videoTitle.Substring(7).Trim(" -*".ToCharArray())
End If
End If
Catch ex As Exception
videoTitle = ""
End Try
Algo malo estás haciendo porque decir que no encuentra HttpUtility.HtmlEncode es como decir que no está la clase Int32.. Revisa bien todo..