Autor
|
Tema: Enviar invitación de amigo en YouTube (Leído 2,524 veces)
|
aaronduran2
|
Hola. Estoy creando un programa para enviar invitaciones de amigo a usuarios de YouTube en VB 6. Conseguí obtener la lista de usuarios a partir de la página que estás viendo, pero no soy capaz de automatizar el proceso de envío de la invitación. Estuve viendo el código fuente, pero no encuentro nada. Tenía pensado crearlo en HTML. ¿Alguien sabe como se puede conseguir? Encontré esto, pero como no soy de programación web, no se como tratarlo. <form name="friending" method="post" action="/profile?user=NOMBREUSUARIO"> <input type="hidden" value="invite_user" name="action_friending"> <a id="aProfileAddFriend" href="#" onclick="document.friending.submit(); return false;"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" id="profileAddFriend" class="icnProperties" alt="Añadir como amigo">Añadir como amigo </a>
Gracias de antemano. (Esto mismo lo publiqué en el foro de programación web, pero como trabajo con VB, pues también lo pongo aquí.)
|
|
|
En línea
|
|
|
|
el_c0c0
Desconectado
Mensajes: 307
|
Hola. Estoy creando un programa para enviar invitaciones de amigo a usuarios de YouTube en VB 6. Conseguí obtener la lista de usuarios a partir de la página que estás viendo, pero no soy capaz de automatizar el proceso de envío de la invitación. Estuve viendo el código fuente, pero no encuentro nada. Tenía pensado crearlo en HTML. ¿Alguien sabe como se puede conseguir? Encontré esto, pero como no soy de programación web, no se como tratarlo. <form name="friending" method="post" action="/profile?user=NOMBREUSUARIO"> <input type="hidden" value="invite_user" name="action_friending"> <a id="aProfileAddFriend" href="#" onclick="document.friending.submit(); return false;"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" id="profileAddFriend" class="icnProperties" alt="Añadir como amigo">Añadir como amigo </a>
Gracias de antemano. (Esto mismo lo publiqué en el foro de programación web, pero como trabajo con VB, pues también lo pongo aquí.) Podes hacerlo de 2 formas: via socket o via objeto XMLHTTP. te dejo una idea de como es: para la forma via socket haces asi strParams = "action_friending=invite_user" strFormH = "POST /profile?user=" & strUSER & " HTTP/1.1\n" strFormH = strFormH & "Host: es.youtube.com\n" strFormH = strFormH & "User-Agent: Mozilla/5.0 (Windows NT 5.1;)\n" strFormH = strFormH & "Accept-Language: es-ar,es;q=0.8,en-us;q=0.5,en;q=0.3\n" strFormH = strFormH & "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n" strFormH = strFormH & "Connection: close\n" strFormH = strFormH & "Referer: http://es.youtube.com/" & strRef & "\n" strFormH = strFormH & "Cookie: " & strCookie & ";\n" strFormH = strFormH & "Content-Type: application/x-www-form-urlencoded\n" strFormH = strFormH & "Content-Length: " & Len(strParams) & "\n\n" strFormH = strFormH & strParams & "\n\n" strFormH = Replace(strFormH, "\n", vbCrLf) objSocket.Connect "es.youtube.com", 80 WaitTilSock2 7 objSocket.SendData strFormH WaitTilSock2 8 objSocket.CloseSck
Para eso vas a requerir tener un objeto CSockMaster llamado objSocket. Tene en cuenta que necesitas saber el cookie del login (eso puede ser jodido) y la pagina web de donde estas actualmente para usar de referente!. Ademas necesitas esta porcion de codigo (sirve para bloquear la ejecucion del codigo, pero sin que no responda la aplicacion): Public Declare Function WaitMessage Lib "user32" () As Long Public Sub WaitTilSock2(lngStateF As Long) If objSocket.State = lngStateF Then Exit Sub Do While Not (objSocket.State = lngStateF) WaitMessage DoEvents Loop End Sub
y via objeto XMLHTTP no te sabria decir, pero es mas o menos lo mismo. Saludos!
|
|
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
aaronduran2
|
Muchísimas gracias, lo probaré e intentaré hacerlo. EDITO: La variable "strRef", ¿para qué se utiliza? Y lo de la cookie, ¿sirve si ya estoy logueado en YouTube con Firefox? Conseguí obtener acceso a la cuenta desde un WebBrowser que hay en el formulario. Saludos y perdón por las molestias. Saludos
|
|
« Última modificación: 26 Enero 2009, 13:19 pm por aaronduran2 »
|
En línea
|
|
|
|
el_c0c0
Desconectado
Mensajes: 307
|
Muchísimas gracias, lo probaré e intentaré hacerlo. EDITO: La variable "strRef", ¿para qué se utiliza? Y lo de la cookie, ¿sirve si ya estoy logueado en YouTube con Firefox? Conseguí obtener acceso a la cuenta desde un WebBrowser que hay en el formulario. Saludos y perdón por las molestias. Saludos en el strRef metes la pagina en la que estas, POR LAS DUDAS, nose si hace falta... pero metelo y las cookies de los exploradores NO sirven, tenes que hacer alguna funcion para que te devuelva la COOKIE logueandote desde tu programa! esto pasa porque no usa nada de los objetos del sistema, esto es DIRECTO! saludos
|
|
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
aaronduran2
|
Vale, gracias. Intentaré lo de las cookies. EDITO: encontré este código para leer o establecer una cookie. Public Declare Function InternetSetCookie Lib "wininet.dll" Alias "InternetSetCookieA" _ (ByVal lpszUrlName As String, _ ByVal lpszCookieName As String, _ ByVal lpszCookieData As String) As Boolean Public Declare Function InternetGetCookie Lib "wininet.dll" _ Alias "InternetGetCookieA" _ (ByVal lpszUrlName As String, _ ByVal lpszCookieName As String, _ ByVal lpszCookieData As String, _ lpdwSize As Long) As Boolean Public Function SetCookie(ByVal UrlName As String, ByVal CookieName As String, ByVal CookieData As String) Dim blnReturn As Boolean blnReturn = InternetSetCookie(UrlName, CookieName, CookieData) If blnReturn = False Then MsgBox "Make Cookie Operation Failed!", vbCritical End Function Public Function GetCookie(ByVal UrlName As String, ByVal CookieName As String) As String Dim strCookieText As String * 256 Dim blnReturn As Boolean blnReturn = InternetGetCookie(UrlName, CookieName, strCookieText, 255) If blnReturn = False Then MsgBox "Get Cookie Operation Failed", vbCritical GetCookie = "Error" Else MsgBox strCookieText, vbInformation GetCookie = strCookieText End If End Function
|
|
« Última modificación: 26 Enero 2009, 18:04 pm por aaronduran2 »
|
En línea
|
|
|
|
el_c0c0
Desconectado
Mensajes: 307
|
Vale, gracias. Intentaré lo de las cookies. EDITO: encontré este código para leer o establecer una cookie. Public Declare Function InternetSetCookie Lib "wininet.dll" Alias "InternetSetCookieA" _ (ByVal lpszUrlName As String, _ ByVal lpszCookieName As String, _ ByVal lpszCookieData As String) As Boolean Public Declare Function InternetGetCookie Lib "wininet.dll" _ Alias "InternetGetCookieA" _ (ByVal lpszUrlName As String, _ ByVal lpszCookieName As String, _ ByVal lpszCookieData As String, _ lpdwSize As Long) As Boolean Public Function SetCookie(ByVal UrlName As String, ByVal CookieName As String, ByVal CookieData As String) Dim blnReturn As Boolean blnReturn = InternetSetCookie(UrlName, CookieName, CookieData) If blnReturn = False Then MsgBox "Make Cookie Operation Failed!", vbCritical End Function Public Function GetCookie(ByVal UrlName As String, ByVal CookieName As String) As String Dim strCookieText As String * 256 Dim blnReturn As Boolean blnReturn = InternetGetCookie(UrlName, CookieName, strCookieText, 255) If blnReturn = False Then MsgBox "Get Cookie Operation Failed", vbCritical GetCookie = "Error" Else MsgBox strCookieText, vbInformation GetCookie = strCookieText End If End Function
Esta bien, eso es para hacerlo desde el IE.. lo que podes hacer es loguearte ahi desde el IE y sacar la cookie con ese codigo... saludos
|
|
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
aaronduran2
|
Ya conseguí loguearme y obtener la cookie, pero de momento no me funciona. Me da error en el socket. Intentaré ver cual es el problema. EDITO: nada, no soy capaz. Esto es lo que me muestra la ventana de debug: OK Subclass memory allocated at: 103816704 OK Winsock service initiated OK Created socket: 1272 Winsock buffer size for sends: 8192 Winsock buffer size for receives: 8192 OK Created socket collection OK Created winsock message window 6816708 OK Registered events from socket 1272 STATE: sckResolvingHost Resolving host http://es.youtube.com/ with handle 3 STATE: sckError Saludos.
|
|
« Última modificación: 26 Enero 2009, 20:29 pm por aaronduran2 »
|
En línea
|
|
|
|
el_c0c0
Desconectado
Mensajes: 307
|
Ya conseguí loguearme y obtener la cookie, pero de momento no me funciona. Me da error en el socket. Intentaré ver cual es el problema. EDITO: nada, no soy capaz. Esto es lo que me muestra la ventana de debug: OK Subclass memory allocated at: 103816704 OK Winsock service initiated OK Created socket: 1272 Winsock buffer size for sends: 8192 Winsock buffer size for receives: 8192 OK Created socket collection OK Created winsock message window 6816708 OK Registered events from socket 1272 STATE: sckResolvingHost Resolving host http://es.youtube.com/ with handle 3 STATE: sckError Saludos. Es que no te podes conectar a una direccion que empieza con "http://" .. es solo el host! ahi seria es.youtube.com como te pase en mi ejemplo! saludos
|
|
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
aaronduran2
|
Vale, perdón, es que no me había dado cuenta. Es que había uno por el medio que tenía "http://" y me faltaba ese por eliminar. Ahora ya funciona. Muchas gracias
|
|
|
En línea
|
|
|
|
|
|