[pyar] Ayuda para Encuentro

Facundo Batista facundobatista en gmail.com
Mie Nov 13 18:33:15 ART 2013


Hola!

Si alguna vez usaron el programa Encuentro [0] sabrán que pueden bajar
contenido desde distintos lados. Muchos de esos contenidos son de
Conectate, y para bajarlos tienen que estar autenticados.

Encuentro simplifica esta parte, ya que se loguea automáticamente con
las credenciales que ustedes pongan.

El problema es que desde hace un par de días, esto empezó a fallar :(.
Lo estuve revisando un poco pero no lo pude hacer andar, :(

Esto es lo que hace hoy por hoy (ver abajo código para que lo
prueben): Pide la "url" que es el punto de entrada al sitio (si uds la
prueban en su browser van a ver que les muestra el programa, un botón
de descargar, etc) y con info que saca de ese HTML arma la "new_url",
que es la URL que traería el contenido (si estás autenticado!), luego
se autentica, y luego le pega a la "new_url". Cuando andaba, esto ya
traía el video en sí; ahora sólo trae otro HTML (porque la
autenticación falló, como pueden ver cuando imprime los headers y
contenido de la respuesta de auth).

La forma de debuguear esto a mano es prender el firebug en el browser
(o lo que usen), poner allí la "url", autenticarse, hacer click en el
botón de descarga. Ahí van a ver que el diálogo es el mismo (o muy muy
parecido) a lo que hacemos por código (bah, obvio, en base a eso
hicimos el código). Pero ahora no funciona, :/

En fin. Si me pueden dar una mano con esto les agradezco, sino
Encuentro va a sufrir un altísimo impacto en su utilidad :(.

¡Gracias!

(el código de prueba...)

"""
import re
import urllib

import mechanize

url = "http://www.conectate.gob.ar/educar-portal-video-web/module/detalleRecurso/DetalleRecurso.do?canalId=1&modulo=menu&temaCanalId=1&tipoEmisionId=4&recursoPadreId=111686&idRecurso=111697"

URL_BASE = "http://www.conectate.gob.ar"
URL_AUTH = "http://conectate.gov.ar/educar-portal-video-web/module/login/loginAjax.do"


content = mechanize.urlopen(url)
html = content.read()
print "ini headers:", content._headers.items()
print "ini html (len):", len(html)

url_items = dict(base=URL_BASE)
for token in "urlDescarga idRecurso fileId".split():
    re_str = 'id="%s" value="([^"]*)"' % (token,)
    val = re.search(re_str, html).groups()[0]
    url_items[token] = val
new_url = ("%(base)s%(urlDescarga)s&idRecurso=%(idRecurso)s&"
           "fileId=%(fileId)s" % url_items)
print "new url:", new_url

usr = "LLENAR ACA"
psw = "LLENAR ACA"
auth = urllib.urlencode(dict(usuario=usr, clave=psw))
req = mechanize.Request(URL_AUTH, data=auth)
content = mechanize.urlopen(req)
print "auth headers:", content._headers.items()
print "auth content (part):", repr(content.read()[:50])

content = mechanize.urlopen(new_url)
print "final headers:", content._headers.items()
print "final content (len):", len(content.read())
"""

[0] http://encuentro.taniquetil.com.ar/

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista


More information about the pyar mailing list