Publicidad
Últimas anotaciones reducidas
Amnistía Pirata: Juega a Machinarium por solo 5 dólares
Machinarium es uno de esos juegos sobresalientes que tanto nos gusta, y éste un buen movimiento para conseguir beneficios, pues han lanzado lo que ellos han llamado Amnistía Pirata. La Amnistía Pirata consiste en que los jugadores puedan jugar a Machinarium por solo 5 dólares (unos 3,90 €), ya que estiman que entre el 5% y el 15% de los que adquirieron el juego pagaron por él, y con este movimiento pretenden que aquellos jugadores que lo obtuvieron por diferentes vías (y los nuevos interesados) puedan comprarlo por un precio muy reducido.
Incluye además la banda sonora del juego, y podéis jugar a una entretenida demo en la página oficial del juego para que, los que no lo conozcáis, podáis hacerlo y entrar en el mundo de Machinarium. La oferta es válida hasta el 12 de Agosto.
Medley de música retro de videojuegos
Muchos somos los nostálgicos que crecimos con las melodías de los juegos de Super Mario Bros, Donkey Kong y demás personajes de videojuegos. Un usuario de Youtube llamado Adolfo Baez ha compuesto un Medley de música retro de videojuegos utilizando una aplicación llamada Mario Paint Composer.
El resultado es un simpático Medley que os hará recordar juegos como Pac-Man, The Legend of Zelda o Tetris.
Curiosidades de Los Simpsons: Hoy se casa Lisa Simpson
En el capítulo 6x19 de Los Simpsons podemos asistir, por medio de una visión a la, en aquel momento, futura vida de Los Simpsons. En dicho capítulo Lisa Simpson se casa, poniendo como fecha de boda el 1 de Agosto de 2010, es decir, hoy se casa Lisa Simpson.
Una simpática curiosidad de Los Simpsons que, los que disfrutamos tanto de la serie, sabremos apreciar.
Video de una proyección 3D en Amsterdam
Este video se corresponde con una proyección 3D que hicieron en plena calle de Amsterdam, donde vemos que los elementos del escenario van sufriendo transformaciones dando como resultado un impresionante video con efecto 3D.
Cuando te das cuenta que el edificio no está realmente ahí es cuando realmente impresiona.
Curiosidades y Easter Eggs de Toy Story 3 [Video]
Tras ver Toy Story 3 y salir de la sala bastante encantado con la película me dispuse a buscar curiosidades y Easter Eggs de Toy Story 3 y he dado con este video de Youtube, que os dejo en el enlace final, que contiene algunos interesantes, y otros bastante exagerados.
Entre dobladores curiosos, mensajes ocultos por los escenarios o cameos de otras de sus películas, el video nos va presentando lo que no pudimos ver mientras disfrutábamos de la última obra de Disney Pixar.
Últimos comentarios
Fans en Facebook de Ruta Relativa
Lo más comentado
Lo más visto
Post al azar
100 preguntas sin repuesta de Lost
Publicado por KeLDroX el día 30/05/2010Guardado en Anotaciones reducidas
La imagen cachonda del día #5
Publicado por sergiocius el día 07/12/2009Guardado en Geek, Humor, La imagen cachonda del dia
Concepto sobre un USB infinito
Publicado por KeLDroX el día 30/03/2010Guardado en Tecnología
Edison: Cómo ahorrar energía eléctrica
Publicado por KeLDroX el día 03/06/2010Guardado en Aplicaciones
Como crear Fuentes de texto
Publicado por sergiocius el día 22/03/2010Guardado en Tutoriales
Editores de Ruta Relativa
Categorías
Una de las cosas a las que me he enfrentado hace poco es la necesidad de hacer un script en Python que requería realizar peticiones a una página Web para obtener información. Para ello he necesitado usar la librería Pycurl que es la encargada de realizar las peticiones mediante Curl en Python. Como necesitaba llamar muchas veces a Curl he creado una función que me ayude en el proceso y se obtenga un código más limpio:
import pycurl, StringIO, random, time
# Variables
dev_null = StringIO.StringIO()
# Function que realiza las conexiones curl
def curl(args):
crCurl = pycurl.Curl();
sUrl = args.get( 'url', None );
sPostField = args.get( 'post', None );
ckCookie = args.get( 'cookie', None );
nHeader = args.get( 'header', 0 );
fcWrite = args.get( 'write', dev_null.write );
nTimeOut = args.get( 'time_out', 30 );
sAgent = args.get( 'agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8' );
sReferer = args.get( 'referer', '-' );
aReferer = args.get( 'aReferer', None );
aProxys = args.get( 'proxy', None );
nProxyTunel = args.get( 'proxy_tunel', 1 );
aHeader = args.get( 'http_header', [ 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg', 'Connection: Keep-Alive', 'Content-type: application/x-www-form-urlencoded;charset=UTF-8' ] );
nFollow = args.get( 'follow_location', 1 );
sUserPasswd = args.get( 'user_passwd', None );
if sUrl is None:
return false;
# Comprobamos si nos han pasado un array con referers para modificar el referer
if aReferer is not None:
# Referer aleatorio
nRandomRf = random.randint( 0, len( aReferer ) - 1 );
sReferer = aReferer[nRandomRf].replace( '[curl_text]', sReferer );
# Opciones
crCurl.setopt( crCurl.URL, sUrl );
crCurl.setopt( crCurl.HEADER, nHeader );
crCurl.setopt( crCurl.WRITEFUNCTION, fcWrite );
crCurl.setopt( crCurl.HTTPHEADER, aHeader );
crCurl.setopt( crCurl.CONNECTTIMEOUT, nTimeOut );
crCurl.setopt( crCurl.REFERER, sReferer );
crCurl.setopt( crCurl.USERAGENT, sAgent );
crCurl.setopt( crCurl.FOLLOWLOCATION, nFollow );
if sUserPasswd is not None:
crCurl.setopt( crCurl.USERPWD, sUserPasswd );
if aProxys is not None:
# Usamos random para ir cambiando entre los diferentes proxys, asi no realizamos las peticiones siempre con el mismo proxy
nRandom = random.randint( 0, len( aProxys ) - 1 );
crCurl.setopt( crCurl.HTTPPROXYTUNNEL, nProxyTunel );
crCurl.setopt( crCurl.PROXY, aProxys[nRandom] );
if sPostField is not None:
crCurl.setopt( crCurl.POST, 1 );
crCurl.setopt( crCurl.POSTFIELDS, sPostField );
if ckCookie is not None:
crCurl.setopt( crCurl.COOKIEJAR, ckCookie );
crCurl.setopt( crCurl.COOKIEFILE, ckCookie );
crCurl.perform()
# Comprobamos que la peticion es correcta, de no ser esperamos 10 segundos y volvemos a realizarla
if crCurl.getinfo( crCurl.HTTP_CODE ) != 200:
time.sleep(10);
curl(args);
| url: | Dirección donde se realizará la petición por CURL. |
| post: | Datos que se enviarán en una operación de tipo “HTTP POST”. Debe ser pasado como una cadena ‘para1 = val1 & para2 = val2 &…’. |
| cookie: | Dirección donde se guardará la cookie, si se añade sólo el nombre se guardara en el directorio donde se ejecute el Script. |
| header: | Mostrar la cabecera HTTP, por defecto 0. |
| write: | Función que servirá para pintar el HTML devuelto. Por defecto None. |
| time_out: | Tiempo de espera para la petición. Por defecto 30. |
| agent: | Contenido de “User-Agent:” para la cabecera en una petición HTTP. Por defecto ‘Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8′. |
| referer: | Contenido de “Referer:” para la cabecera en una petición HTTP. Por defecto ‘-’. |
| aReferer: | Array con varios casos de ‘Referer:’. Podríamos añadir todos las referencias de Google, Yahoo, etc. Así mostraría el referido como si viniera de unos de estos buscadores. Por defecto None. |
| proxy: | Array con varias IP de servidores Proxy. Por defecto None. |
| proxy_tunel: | Túnel a través de los Proxy HTTP que hemos pasado como argumento. Por defecto 1. |
| http_header: | Array con los campos para la petición HTTP. Por defecto [ 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg', 'Connection: Keep-Alive', 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'] |
| nFollow: | Seguir redirecciones HTTP. Por defecto 1 |
| user_passwd: | Usuario y contraseña que se usarán para la conexión, con el formato USUARIO:PASSWORD. Por defecto None. |
curl( { 'url': 'http://www.tu-web-aqui.com',
'referer': 'buscando a curl',
'aReferer': ['http://www.google.es/search?hl=es&safe=active&q=[curl_text]'] } )
curl( {'url': 'URL_LOGIN',
'post': 'signin[username]=usuario&signin[password]=contraseña',
'cookie': 'cookie_curl'} )
def pintar(response):
print(response);
curl( { 'url': 'http://www.tu-web-aqui.com', 'write': pintar } )
curl({ 'url' : 'http://twitter.com/statuses/update.json',
'post' : 'status=Hola desde Python!',
'user_passwd' : 'usuario:password'
});
Una simple función Curl para python que nos ayudará a la hora de desarrollar scripts que necesiten realizar muchas peticiones.
Artículos relacionados
Usar Google Translate con PHP y Python
Publicado por sergiocius el día 28/06/2010Guardado en Desarrollo
La Fail Whale de Twitter completamente en CSS
Publicado por sergiocius el día 28/07/2010Guardado en Anotaciones reducidas
Contactable: Plugin para wordpress para feedback y contacto
Publicado por sergiocius el día 24/06/2010Guardado en Plugins
Escribir un post en Blogger usando cUrl y PHP
Publicado por sergiocius el día 23/06/2010Guardado en Blogosfera, Desarrollo
Sorteie: Sorteos a través de Twitter
Publicado por sergiocius el día 03/06/2010Guardado en Twitter
Sobre KeLDroX
Desarrollador en entornos web y Diseñador de profesión, muy activo, que busca siempre enfrentarse a retos cada vez más dificiles. Si un día no hago algo nuevo o no he superado alguna dificultad para mi es un día vacío. Cuento con dos titulaciones: Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Desarrollo de Aplicaciones Informáticas. Fundé rutarelativa porque siempre quise tener un sitio en donde compartir mis experiencias profesionales y a los problemas que me enfrento día a día en el ámbito profesional.
Escribir comentario en Curl en Python