Google+ Seguidores

martes, 21 de noviembre de 2017

Gestión de Calendarios con Python

Introducción:

Últimamente, e subido artículos un poco "exóticos", se que a muchos les gusta hacer cosas divertidas e interesantes con Python, pero quisiera hacer algo diferente, de esa manera no hago lo mismo todos el tiempo. 
Hoy, daremos un pequeño paseo por el modulo "calendar", sera un articulo no muy largo, pero quisiera hacer más artículos como este, de esta manera interactuamos y nos familiarizamos más con la librería estándar de Python.

Calendar - Funciones Generales relacionadas con el calendario:

Con el modulo calendar, podemos gestionar calendarios, generar calendarios en formato de Texto Plano y calendarios en formato HTML para nuestros sitios web, todo desde nuestro interprete de Python.

Resultado de imagen para calendario

Intentemos algo sencillo, vamos a imprimir un calendario del año 2009 en un formato de texto. Esto lo lograremos con ayuda de la clase "TextCalendar". Veamos un ejemplo.



import calendar

#Instancia de TextCalendar
cl = calendar.TextCalendar()

#Elegimos el formato del año y mes del calendario
calendario_sep = cl.formatmonth(2009, 9)

#Mostramos el resultado
print(calendario)


Bien, analicemos un poco el código. Lo primero que hacemos es importar el modulo "calendar", de esta manera tendremos acceso a todas sus clases. Luego creamos una instancia de la clase "TextCalendar", seguidamente, usamos el método "formatmonth" para elegir el formato del calendario, le pasamos como argumentos: El año del calendario que queremos y el mes (1-12). Luego de todo esto, imprimimos al calendario con la función print.


Pero, ¿que pasa si quisiéramos el calendario de todo el año 2009?. Pues muy fácil, para ello usaremos el método "formatyear", de igual manera que "formatmonth". Veamos un ejemplo:


import calendar

#Instancia de TextCalendar
cl = calendar.TextCalendar()

#Elegimos el formato del año
calendario_2009 = cl.formatyear(2009)

#Mostramos el resultado
print(calendario_2009)

Lo unico diferencia del codigo anterior, es el método "formatyear", que configura el formato del año del calendario, en este caso es 2009. El resultado debería quedarnos algo así:



Y de esta manera tan sencilla, tenemos el calendario completo del año 2009.

Todo este calendario esta en formato "Text Plain" (Texto plano).
El moudlo calendar, también nos da la posibilidad de generar calendarios en formato HTML. Esto lo podemos lograr usando la calse HTMLCalendar.

Lo que haremos sera plasmar el calendario del año 2012 en una pagina HTML. Veamos como hacerlo:


import calendar
#Instancia de HTMLCalendar
cl = calendar.HTMLCalendar()
#Definimos el año del calendario
calendario_2012 = cl.HTMLCalendar(2012)
#Creamos un archivo con formato html en donde estará el contenido HTML
with open("./calendario_2012.html") as html:
     html.write(calendario_2012)
     html.close()


Luego de ejecutar este código, en nuestro directorio actual tendremos nuestro archivo HTML con el calendario especificado.



Ese sera mi archivo HTML generado, con algunos retoques creo que quedaria bein.

Mi fácil, ¿cierto?, el modulo "calendar" nos facilita muchas cosas.

Veamos algunos métodos que nos proporciona calendar.

calendar, nos proporciona el método "day_name", el cual es un diccionario con los nombres de los días de la semana (en ingles), podemos recorrer este diccionario con un bucle y nos quedaría algo así:




Igual que el método "day_name", también tenemos el método "month_name", que de igual manera es un diccionario, con todos los nombres de los meses del año:




Tienes ganas de más, te sugiero que vayas a la documentación oficial de Python, es bueno pasar por aquí de vez en cuando, de esta manera vamos conociendo mejor a esos módulos, que siempre estarán allí para nosotros.

Como dije en la introducción, este articulo lo haría un poco corto, solo para repasar este modulo que es de mucha utilidad.

Comparte tu opinión acerca del articulo y si te gustaría más artículos sobre la librería estándar de Python, tus opiniones nos ayudan a mejorar.

Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.
Seguir Leyendo

viernes, 17 de noviembre de 2017

Ataque de Fuerza Bruta a Cuentas de Gmail con Python

Introducción:

En este articulo me centrare en explicar: ¿Que es un Ataque de Fuerza Bruta? ¿Como podría prevenir este tipo de ataque? y ¿Como funcionan los Ataques de Fuerza Bruta?.

Algunos de ustedes de seguro conocen el termino "Fuerza Bruta". Quisiera aclarar que este articulo lo estoy escribiendo con fines educativos, y no me hago responsable de lo que pueden hacer con los códigos que les proporcionare.

La Seguridad Informática es muy importante hoy en día, ya que cualquiera con conocimientos suficientes podría robar cuentas de Gmails asociadas con cuentas bancarias o información sensible.

Este articulo lo hago con el fin de que aprendamos a evitar estos ataques de fuerza bruta, ya que es uno de los ataques más usados. Al final del articulo escribiremos un pequeño programa en Python para que conozcamos mejor este tipo de Ataque, ya que si sabemos como funciona, sabremos como prevenirlos.

¿Que es un Ataque de Fuerza Bruta?

Un ataque de fuerza bruta es el proceso mediante el cual se recupera una clave probando todas las combinaciones posibles, el proceso finaliza al momento de encontrar la clave que permita el acceso.

El programa que esta ejecutando un ataque de fuerza bruta, prueba con cada una de las combinaciones posibles, una por una, esta hallar la correcta.

Usualmente al hacer un ataque de fuerza bruta, se combinan con un ataque de diccionario, en donde el diccionario contiene todas las posibles combinaciones.

Sí, el proceso es un poco arduo, es como adivinanzas, el atacante le pregunta al servidor al cual esta atacando ¿Es esta? , ¿O esta?, ¿Que tal esta?, ¿Tal vez sea esta?, y así sucesivamente esta que el servidor le dice, "Sí es esa, felicitaciones lo has logrado".

También hay que tener muy claro, que los ataques de fuerza bruta pueden durar, días, semanas, meses e incluso hasta años, todo dependerá de la información con la que cuente el atacante.


Imagen relacionada


¿Como podría prevenir este tipo de ataque?

Como dije anteriormente, los ataques de fuerza bruta podrían durar años.

Todo dependerá de la información con la que cuente el atacante. ¿Porque depende de la información que tenga el atacante? Pues entre más conozca el atacante sobre ti, hay más probabilidades de que el ataque funcione. El atacante siempre buscara información como: Nombres de tus mascotas, tu fecha de nacimiento, nombre de tus familiares cercanos, cosas que te gustan, tus fechas favoritas, entre otras cosas. 

Pues inconscientemente, es la clase de cosas con las que describimos a nuestras contraseñas, por ejemplo, el nombre de nuestro perro y la fecha en el que lo obtuviste, o el nombre de tu novia y algunos numero como 12345. Esa clase de cosas, ya saben.

Los atacantes se fijan más en las personas mayores, ya que usualmente colocan información de su vida personal para sus contraseñas, como su segundo nombre y su fecha de nacimiento.

A continuación les daré unos consejos personales para evitar este tipo de ataques:
  1. No uses información publica en tus contraseñas: Es un error que todos cometemos, colocar nuestros nombres o fechas de nacimientos, toda esta información la puede ver cualquiera en nuestros perfiles de Facebook o Twitter.
  2. Usar más de 10 caracteres en nuestras contraseñas: Entre más larga la contraseña, mejor.
  3. Usar letras mayúsculas, minúsculas, números y signos de puncionan: Esta combinación hace más difícil el descifrado de nuestra contraseña, sobre todo si utilizamos letras mayúsculas en medio y algunos signos de puntuación. (Ej: luIsALEjandRO&28931).
  4. Cambiar nuestras contraseñas cada determinado tiempo: Cambiar nuestras contraseñas es algo que se los recomiendo hacer, no diario ni semanal, ya que eso seria un poco estresante pero si lo recomiendo hacer mensualmente.
Estos son algunos consejos que siempre tengo en cuenta.


¿Como funcionan los Ataques de Fuerza Bruta?

Muy bien, para ver un ataque de fuerza bruta en vivo y en directo, crearemos un  pequeño programa en Python, este programa nos pedirá un correo electrónico (Gmail), luego leerá las posibles combinaciones en un diccionario, el programa tratara de entrar en la cuenta gmail, usando cada una de las combinaciones que se encuentre en el diccionario, una por una.  Si la contraseña correcta se encuentra en el diccionario, el programa nos  mostrara la contraseña, de lo contrario el programa nos avisara de que ninguna de las combinaciones es la contraseña de la cuenta introducida.

A continuación les mostrare el código del programa, y luego lo explicare paso a paso:

import smtplib
 
smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
print("\n")
email = input("Email de la victima: ")
dic = open("./diccionario.txt", "r")
 
for pwd in dic:
 try:
  smtpserver.login(email, pwd)
  print("Contraseña Correcta: %s"  % pwd)
  break;
 except smtplib.SMTPAuthenticationError:
  print("Contraseña Incorrecta: %s" % pwd)


Puedes descargar el codigo ingresando al siguiente enlace: Ataque de Fuerza Bruta con Python.

Muy bien, lo que hará el programa sera tratar de loguearse en gmail, para eso usaremos el protocolo usado para el envío de correos electrónicos, "SMTP".

Lo primero que haremos sera importar al modulo "smtplib". Luego llamamos al objeto "SMTP", el cual hará la conexión al servidor "smtp.gmail.com" en el puerto 587.
Luego usamos los metodos "ehlo()" y "starttls()". Con esto ya habremos establecido conexión con el servidor smtp de gmail.

Luego de establecer la conexión, en una variable llamada "email", guardaremos la entrada que nos pedirá el programa, la cual es el Gmail de la victima. En la siguiente linea, se abre el archivo "diccionario.txt", el cual contiene todas las combinaciones posibles, este diccionario sera creado por el atacante, en donde colocara cada combinación posible linea por linea.

Se abre un bucle for, que recorrerá cada linea del diccionario probando cada una de las combinaciones posibles. Con el método login, el programa se intentara loguearse con el email de la victima y la combinación posible, todo esto dentro de un bucle para que este proceso se repita hasta que se encuentra la combinación correcta.

Al ejecutar el programa, tendremos que ingresar el Email de la victima:



Como pueden ver el, la combinación numero 5, resulto ser la Correcta. Yo he usado un diccionario muy simple con tan solo 15 combinaciones posible, por Internet se encuentran muchas formas de hacer diccionarios muy prácticos y eficientes.

Bueno, este fue un ejemplo muy sencillo de Fuerza Bruta, existen muchas herramientas que hacen ataques de fuerza bruta a otros servicios a parte de Gmail.

Espero que les sirva de mucho este articulo, es muy importante saber como funciponan estos ataques para poder evitarlos, ya que a nadie le gusta que le roben su cuenta de Gmail. 

Comparte tu experiencia con nosotros dejando un buen comentario.

Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.
Seguir Leyendo

sábado, 11 de noviembre de 2017

Procesamiento de Imágenes con Python y Pillow

Introducción:

Python Imaging Library (abreviado como PIL ) (en versiones más recientes conocidas como Pillow) es una biblioteca gratuita para el lenguaje de programación Python que agrega soporte para abrir, manipular y guardar muchos formatos de archivos de imágenes diferentes. Está disponible para Windows, Mac OS X y Linux. La última versión de PIL es 1.1.7, fue lanzada en septiembre de 2009 y es compatible con Python 1.5.2-2.7, con soporte de Python 3 para ser lanzado "más tarde".

Pillow ofrece varios procedimientos estándar para la manipulación de imágenes. Éstas incluyen:
  • manipulaciones por pixel,
  • enmascaramiento y manejo de la transparencia
  • filtrado de imágenes, como borrosidad, contornos, suavizado o búsqueda de bordes,
  • mejora de la imagen, como nitidez, ajuste de brillo, contraste o color,
  • agregar texto a las imágenes y mucho más.
Puedes Descargar PILLOW para Python ingresando al siguiente enlace: PILLOW 4.3.0


Resultado de imagen para pillow python


En el día de hoy, te enseñare a usar el modulo Pillow para el procesamiento de imágenes, te mostrare lo básico para que te familiarices con el modulo, luego queda de tu parte experimentar y leer la documentación de Pillow.

Yo usare una imagen para realizar los ejemplos, puedes usar la imagen de tu preferencia, la cual puede tener formato: PNG, JPEG, PPM, GIF, TIFF y BMP.

Esta es la imagen que usare:


Si se preguntan ¿Porque una medusa?, pues es uno de mis animales favoritos, y uno de los más letales del mundo.

Mi objetivo, sera experimentar sobre esta imagen de esta medusa, la estaré modificando con ayuda de Pillow.

¿Listos? pues comencemos.

Mi Editor Pillow:

Muy bien, comencemos por el principio, por lo más basico.

Piensa en una imagen como un archivo de texto (txt), cuando quieres abrir, escribir o leer un archivo de texto con ayuda de python, ¿Que es lo primero que debes hacer? Lo primero primero que hacemos, es abrir el archivo con la función open() ¿Verdad?, luego ya podríamos leer o escribir en el archivo de texto.

Lo mismo debemos hacer para manipular las imágenes, el modulo "Image" de Pillow nos proporciona la función open() la cual recibe como argumento la ruta de la imagen, ¿Les recuerda a algo esa función open?. Sabiendo que el procedimiento del procesamiento de imágenes es similar al del procesamiento de archivos, seros sera más fácil comprender como funciona Pillow.

Ahora, un ejemplo sencillo, abriremos una imagen escribiendo unas 3 lineas de código:


Esa seria la sintaxis básica, para abrir y mostrar una imagen con Pillow.
En el código, lo primero que hago es importar el modulo "Image", luego con la función open(), abro la imagen, como pueden ver, en la ruta de la imagen, solo coloco el nombre de la imagen que es "medusa.jpg", esto es porque todo lo tengo en una misma carpeta. Por ultimo, para que la imagen se abra en el visor de imagen por defecto de tu sistema operativo, utilizamos la función show(). Al ejecutar el código, mi resultado fue el siguiente:


Como pueden observar, la imagen se a abierto  con el "Visualizador de fotos de Windows", esto variara dependiendo de tu sistema operativo. 

Increíble, ¿Verdad?. Pero ¿Pillow, solo hace esto? No señor, ya abrimos la imagen, llego la hora de manipularla.

Ahora, que te parece si rotamos esta imagen, tal vez se vea mejor si la rotamos un poco a la izquierda, para ello el modulo Image nos proporciona la función rotate(), veamos un ejemplo:


Al ejecutar, mi resultado es:


Muy fácil, ¿Verdad?. Pero, ¿Como haríamos para rotarla 90 grados hacia la derecha? Simplemente, en vez de colocar 90 grados, escribimos "-90" grados, así:



Muy bien, hay una cosa que quisiera aclarar. Como pueden ver en el código de arriba, a "img.rotate", lo e guardado en una variable (imgrotate), y se preguntaran ¿Porque? ¿Porque uso la función show() en "imgrotate" en vez de "img"? La respuesta es: SON IMÁGENES DIFERENTES. Sí, en cada modificación, se genera una imagen temporal por separado (eso se puede comprobar viendo el nombre del archivo en el encabezado del visualizador, siempre salen nombres como "tmp1tc2y3rx"), por esa razón, si vas a tu código, y en ves de usar a show() en "imgrotate" y la usas en "img", el script mostrara la imagen original. Es muy importante saber esto.

Como explique anteriormente, cada vez que modificamos la imagen, se genera un archivo temporal, pero ¿Como haría para guardar la imagen modificado?. Esto es muy facil, solo usamos la función save(fp) en donde el argumento "fp" es la ruta en donde quieres que se guarde la imagen modifica. Veamos un ejemplo:



Como pueden ver, en save(), e colocado "medusa 90.jpg", ese es el nombre con el que se guardo la imagen modificada, y a la derecha del código, les muestro la imagen guardada, si se fijan en el encabezado del programa visualizador, en vez de un nombre como "tmp928...", se muestra el nombre de mi archivo. Ahora si vamos a nuestro directorio podremos ver nuestra imagen:


Perfecto!!!.

Filtros:

Hora de trabajar con filtros, para ello, haremos uso del modulo ImageFilter, veamos un ejemplo sencillo.



Como pueden ver, se hace uso de la funcion "filter", a la cual le pasamos como argumento un filtro, el modulo "mageFilter" nos proporciona los siguientes filtros:
  • BLUR
  • CONTOUR
  • DETAIL
  • EDGE_ENHANCE
  • EDGE_ENHANCE_MORE
  • EMBOSS
  • FIND_EDGES
  • SMOOTH
  • SMOOTH_MORE
  • SHARPE
Ahora, usemos uno de los filtros mencionados anteriormente. Voy a usar el "EMBOSS", veamos como queda:



Como pueden ver, en ves de usar el filtro "MinFilter", coloco "EMBOSS", que seria el filtro de resaltar.

Ahora te invito a probar todos los filtros disponibles.


Muy bien, ahora hagamos algo más interesante, que les parece si dibujamos sobre nuestra imagen, eso seria divertido ¿Verdad? Para ello, usaremos el modulo "ImageDraw". Comencemos dibujando algo sencillo, que les parece una X en medio de nuestra imagen. Veamos como queda:



Puedes ver el código más legible ingresando al siguiente enlace: PILLOW DRAW.py.

Para lograr esa X perfecta, importamos el modulo "ImageDraw", para crear cada linea se usa la función "line" la cual toma como argumento 3 argumentos, los 2 primero son las coordenadas en su eje X e Y, el segundo (fill) seria la intensidad del color de cada linea, y el argumento width, seria la anchura de la linea.

Usemos otra función para dibujar, en vez de una linea, dibujemos escribamos un poco de texto. Así:




Puedes ver el codigo desde GitHub, ingresando al siguiente enlace: PILLOW-Draw-Text.py.

Analicemos un poco el código de arriba: Lo primero que hacemos es importar los módulos Image, ImageDraw, ImageFont. Abrimos nuestra imagen, y empezamos a escribir sobre ella. Antes se especifica el tipo de fuente, en este caso "Arial", luego especificamos su tamaño (80 pixeles). Luego en a la función text le pasamos sus argumentos (Las posiciones X e Y, el texto que deseas escribir sobre la imagen, el color del texto y la fuente). Por ultimo, mostramos la imagen modificada.




Fascinante, ¿Verdad? Pillow es una de las mejores opciones al momento de procesar y manipular imágenes, Pillow cuenta con muchos otros métodos a parte de los que te e mostrada, solo te mostré lo básica, para que vallas entendiendo la estructura básica de los módulos, no te limites, entra en la Documentación de PILLOW y sigue aprendiendo más sobre esta librería.

Comparte tu experiencia con nosotros dejando un buen comentario. Mi nombre es Luis, es fue un placer compartir mis conocimientos con todos ustedes.
Seguir Leyendo

viernes, 10 de noviembre de 2017

Liberia Google APIs Client - Servicios de Google para Python

Introducción:

En ocasiones, al momento de estar creando un proyecto, es bueno recibir ayuda, y que mejor ayuda que la de Google.

Google nos proporciona un sin fin de software y librerías que nos ayudan a nosotros los desarrolladores a crear nuestros proyectos con más facilidad, siempre me conmueve ver que Google se centra mucho en esta área. Google nos proporciona servicios como: Geolocalización, Machine Learning, BigQuery, Cloud SQL, entre muchos más.

Imagen relacionada


Google API Client es una biblioteca proporcionada por Google que nos facilita el uso de sus servicios usando un lenguaje de programación, en nuestro caso, Python. Hoy te mostrare como funciona, enseñándote los métodos básicos y su estructura, y por supuesto, veremos algunos ejemplos. ¿Listos? Pues comencemos.

Antes de continuar, necesitamos contar con las librerías necesarias:

Como habrás adivinado, necesitamos la librería API Client, la cual puedes descargar ingresando al siguiente enlace: Google APIs Client Library for Python.

Por ultimo, es necesario tener la librería oauth2client, la cual puedes descargar ingresando al siguiente enlace: OAuth 2.0 client library.


Autenticación y Credenciales:

Para poder usar los servicios de Google, necesitamos un proyecto en Google Cloud Platform, la razon es que cada usuario tiene sus propios servicios, ya que algunos requieren factorizacion, y llega un punto en donde los servicios llegan a su limite, pero esto queda en manos del presupuesto con el que cuentes.

Lo importante es saber que necesitamos una API key, la cual identificara a nuestro proyecto. Si aun no cuentas con un proyecto Google, puedes crearlo ingresando al siguiente enlace: Crear Proyecto Google.

Una vez creado el proyecto, podemos conseguir nuestras credenciales que sera nuestra llave de autenticacion, al momento de utilizar un servicio.

Para crear nuestras credenciales nos vamos a la sección "Credenciales" de "API y Servicios", o pueden ingresar al siguiente enlace: Crear credenciales.




Al dar click en "Crear Credenciales", tendremos que elegir entre 4 opciones, en nuestro caso elegiremos "Clave API", con la cual se identificara nuestro proyecto.

Luego veremos lo siguiente:



Luego de esto nuestra API key habrá sido creada, por cuestiones de seguridad, con mis habilidades especiales de edición, oculte mi clave de API.

Mu bien, ya tenemos nuestra clave de API, que es la que identifica a nuestro proyecto. 

Muchos estarán ansiosos por escribir código, pero nos hace falta una parte importante, la cual es habilitar los servicios que usaremos.

En el día de hoy, te mostrare un ejemplo de un código que utiliza el servicio de Google Books, crearemos un pequeño programa que busque y nos muestra una gran información sobre libros que se encuentran en Google Books.

Para ello necesitamos habilitar ete servicio, para ello nos dirigimos a "API y Servicios", o bien, pueden ingresar al siguiente enlace: Biblioteca de API.



Como pueden observar hay una gran cantidad de servicios ordenados por categoría, en nuestro caso buscaremos el servicio "Google Books API".



Hacemos click sobre Google Books API, y nos redirigirá a la siguiente pagina:



La pagina nos muestra la informacion sobre el servicio, su descripcion, su ultima actualizacion y nos muestra un enlace en donde se encuentra la documentacion de la API. 
Si das click en el botón "PRUEBA ESTA API", seras redirigido a una pagina con la referencia del servicio, en donde se encuentran sus métodos.

En nuestro caso daremos click en "HABILITAR", para habilitar el servicio, de esa manera 
al usar la clave de API, se sabrá que que hemos dado permiso a nuestro proyecto a usar el servicio.



Luego de habilitar la API, veremos el panel de control del servicio, en donde podemos inhabilitar la API y poder ver información de las peticiones se le a hecho al servicio, volveremos a esta pagina luego.

Muy bien, ya tenemos nuestro proyecto listo, ya lo hemos capacitado para su uso desde nuestra consola de Python. Ya tenemos la llave para autorizar el uso de los servicios desde nuestro código.


El Buscador de Libros:

Llego la hora de escribir código!!! Ahora queda de tu parte elegir tu entorno preferido, ya sea la linea de comando, o tu IDE preferido, por elección propio yo usare como entorno el editor de texto "Sublime Text 3".

El ejemplo de hoy, sera un programa que busque dentro del repositorio de Google Books, los libros de tu preferencia, el resultado sera una gran variedad de libros con su información correspondiente.

Muy bien, comencemos, lo primero que haremos sera importar las librerías necesarias, usaremos la "googleapiclient.discovery", de la cual importaremos a "build", también usaremos el modulo "pprint", veamos como nos queda esto.




Se preguntaran ¿Por que build?, se los explico en un momento.

Luego de tener acceso a las librerías necesarias, declararemos una variable llamada "api_key", ¿Adivinen que almacenara?, en esta variable guardaremos la clave de API creada anteriormente.



Como pueden observar no e colocado mi clave de API, ustedes deben colocar la verdadera.


Muy bien ahora sí, ¿Que es Build?. La función build se usa para crear un objeto de servicio, toma un nombre de API, una versión de API y el "developerkey" como argumentos. Entonces, usemos a build para crear nuestro primer servicio:



A nuestro servicio lo e nombrado "service" (servicio en ingles), en el primer argumento que es el nombre de la API e colocado "books", ya que es el servicio que estaremos usando, en el segundo argumento le estoy diciendo al servicio la versión de la API, en este caso "v1" y por ultimo, la "develperkey", que es nuestra clave de API.

Este servicio me dará la autorización de poder usar la información que le estoy pidiendo.

Muy bien, ya le dije a Google que quiero buscar entre sus libros, pero ¿Que libro específicamente?.

La API Books tiene un método de volumen().list() que se utiliza para enumerar los 

criterios de búsqueda de libros.

Los argumentos proporcionados son: 

volumes source ('public') y query ('Titulo del Libro').

El método devuelve un objeto apiclient.http.HttpRequest que encapsula toda la información necesaria para realizar la solicitud, pero no llama a la API.



De esa forma nos quedaría el código. Como pueden observar en el argumento query (que se identifica como q) e colocado la palabra "python", Google me devolverá los libros que contengan la palabra "python" en su nombre, por supuesto que puedes colocar el titulo del libro que desees.

Muy bien, prosigamos:




La función execute devuelve un objeto Python creado a partir de la respuesta JSON.
Esta respuesta la podemos mostrar usando la función pprint.

Bueno, ya podríamos ejecutar nuestro script, pero antes, mostrare todos los títulos de los libros y la cantidad de libros encontrados.




Bien, hora de ejecutar nuestro programa:



Como pueden ver, el resultado es justo lo que esperábamos, si subimos un poco, veremos la información de cada uno de los libros encontrados:



Como pueden observar, hay una gran cantidad de información, esto es solo una parte de ella, vemos la categoría del libro, su descripción, link de imagen, numero de paginas, fecha de publicación, link del libro, y mucho más.

Ahora queda de tu parte, usar este servicio para crear buenos proyectos, si vamos al panel de control de Google Books API veremos la actividad del servicio que acabamos de usar:




Si quieres el código completo del ejemplo de hoy, ingresa al siguiente enlace: Codigo de "Buscador de Libros.py".

Bueno, así de fácil se pueden usar los servicios de Google, ya queda de tu parte investigar más, usar otros servicios, y compartir tu experiencia con nosotros en los comentarios.

Espero que valores el trabajo que hago, parecerá fácil, pero no lo es, trato de explicar hasta la más mínima cosa, ya que de esa manera sabemos como funciona de verdad el código, pero por supuesto, a veces se me pasa algo por alto, si tienes alguna duda, puedes compartirla con migo y con gusto te ayudare.

Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.

Seguir Leyendo

jueves, 2 de noviembre de 2017

Capturas de Pantalla con Python

Introducción:

En Internet, podemos encontrar muchas librerías que son muy interesantes, librerías que nos facilitan el desarrollo y resolución de algún programa o problema.

¿Nunca a pensado en tomar capturas de pantalla, con un sencillo script de Python?

Hoy te enseñare a como a tomar capturas de pantalla con ayuda de Python y la librería MSS.
Resultado de imagen para screenshot logo

Hay muchas librerías que nos pueden ayudar a cumplir este objetivo, pero llevo un tiempo usando MSS y me e encariñado un poco. Para descargar la librería MSS debes entrar en el siguiente enlace: Descargar MSS.

Una vez descargado MSS, podemos comenzar a escribir codigo.



Mi primer Screenshot con Python.

Comencemos por el principio, tomemos nuestra primera captura de pantalla, con MSS hacer esto es muy fácil, ¿Un ejemplo?, aquí lo tienes:


 
from mss import mss

with mss() as screen:
    screen.shot()


Muy bien, analicemos cuidadosamente este código. Lo primero que hago es importa a MSS, luego usamos la sentencia with, screen sera nuestro objeto al cual usaremos para llamar a shot() el cual hace la captura de pantalla, así de fácil tomamos nuestra primera captura de pantalla, si vas a la carpeta actual del script, podrás ver un archivo png.

A continuación, te muestro mi screenshot:



Ese seria mi resultado, muy fácil y sencillo,¿Ya lo intentaste?.

SI se dan cuenta, el nombre del screenshot es "monitor-1", esto es por defecto, si tomáramos otra captura de pantalla el archivo seria sustituido y tendríamos la captura tomada recientemente, esto en ocasiones es un problema, ¿como lo solucionamos? a continuación te muestro como:


 
from mss import mss

with mss() as screen:
    screen.shot(output="screen.png")


Como pueden observar el código no cambio mucho, lo que hago es pasarle un argumento a shot, le pasamos el argumento "output" al cual le diremos que nombre queremos que lleve nuestra captura de pantalla, y no se nos puede olvidar asignar el formato de imagen, el cual puede ser png o jpg, todo depende de ti.

Si ya asignaste el argumento output al método shot, ya puedes probar el código, y ver el resultado, mi resultado es el siguiente:




Ahora hagamos algo un poco más interesante. Todas la capturas de pantalla son fullscreen, pero esto lo podemos cambiar, podemos tomar solo una parte de nuestro monitor, a continuación te muestro como.



import mss
import mss.tools

with mss.mss() as sct:
    monitor = {'top': 190, 'left': 160, 'width': 200, 'height': 140}
    output = 'sct-{top}x{left}_{width}x{height}.png'.format(**monitor)

    sct_img = sct.grab(monitor)

    mss.tools.to_png(sct_img.rgb, sct_img.size, output)
    print(output)


Analicemos el código: Lo primero que hacemos es importar la librería mss y mss.tools, luego hacemos uso de la sentencia with. Declaramos una variable con el identificador "monitor" la cual almacenara un diccionario con cuatro elementos los cuales le dirá a MSS cual sera la parte del monitor que queremos capturar. Declaramos una variable con el identificador "output" el sera el nombre de el screenshot. Luego capturamos los datos con grab. Y por ultimo guardamos en el archivo de imagen. Mi resultado seria el siguiente:



Bueno, ahora es tu turno de experimentar y lograr grandes cosas, te invito a que compartas tu experiencia dejando un buen comentario. Mi nombre es Luis y fue un placer compartir mis conocimientos con todos ustedes :D.
Seguir Leyendo

Entradas más recientes

Powered by Blogger .