Google+ Seguidores

viernes, 20 de octubre de 2017

Descargar vídeos de YoutTube con Python y Pafy

Introducción:

YouTube es una plataforma que nos permite disfrutar de vídeos informativos, películas, música y mucho, mucho más.

Siempre que escuchamos una canción queremos descargarla, si vemos un vídeo también queremos descargarlo, de esta manera podríamos verlos desde donde queramos sin necesidad de una conexión a Internet.

Hoy te enseñare a descargar vídeos y audios de el sitio web conocido como YoutTube, esto lo lograremos haciendo uso de una librería llamada Pafy, si aun no tienes la librería Pafy, puedes descargarla ingresando al siguiente enlace: Librería Pafy.


Resultado de imagen para youtube

Usando Pafy:

Pafy una biblioteca de Python para descargar contenido de YouTube y recuperar metadatos.

Antes de descargar contenido, usaremos a Pafy para obtener información de un vídeo especifico.

A continuación te mostrare un ejemplo para obtener el titulo de un vídeo.



import pafy

url_video = "https://www.youtube.com/watch?v=JkK8g6FMEXE"

video = pafy.new(url_video)

print(video.title)


Analicemos el código: Lo primero que hacemos es importar a Pafy, luego creamos una variable con el identificar url_video con el link del video de tu elección, creamos una variable llamada video la cual instanciará a pafy.new al cual le pasamos como argumento la variable url_vide. Luego de este procedimiento, usamos la función print para imprimir el titulo del vídeo, el cual conseguimos usando el método title. El resultado debería ser el siguiente:



Como pueden observar, mi resultado es "Aerosmith - I Don't Want to Miss a Thing", el cual es vídeo que he seleccionado para esta prueba.

Si quieres ver la descripción del vídeo en vez del titulo, el procedimiento es el mismo, pero en vez de usar el método title, usamos el método "description".



Como pueden observar, el resultado es el deseado.

¿Que otras cosas podemos lograr con Pafy?

A continuación les mostrare otros métodos con los que podemos obtener más datos de un vídeo de Youtube:


 
import pafy

url_video = "https://www.youtube.com/watch?v=JkK8g6FMEXE"

video = pafy.new(url_video)

video.viewcount #Este método nos devuelve el numero de visitas del vídeo

video.category #Este método nos devuelve el tipo de categoría del vídeo

video.author #Este método nos devuelve el nombre del canal que subió el vídeo

video.duration #Este método nos devuelve la duración del vídeo

video.published #Este método nos devuelve la fecha en la que fue publicado el vídeo

video.likes #Este método nos devuelve el numero de likes del vídeo

vdieo.dislikes #Este método nos devuelve el numero de dislike del vídeo

video.keywords #Este método nos devuelve una lista con todas las etiquetas del vídeo

video.thumb #Este método nos devuelve una url la cual es la miniatura del vídeo

video.videoid #Este método nos devuelve el identificador del vídeo


Estos son algunos de los métodos que Pafy nos proporciona.


Descargando Vídeos y Música de YouTube.

Llegamos a la parte que todos estaban esperando, usaremos algunos métodos para descargar vídeo y audios de los vídeo que queramos.

Empecemos por descargar nuestro primer vídeo.

import pafy

video = pafy.new("https://www.youtube.com/watch?v=JkK8g6FMEXE")

best = video.getbest(preftype="mp4")

best.download()


Como pueden observar, estamos repitiendo el mismo procedimiento de antes, pero ahora estamos haciendo uso del método getbest, el cual nos devuelve la mejor resolución del vídeo, le pasamos como argumento a preftype con el formato del vídeo en este caso sera mp4. Luego usamos el método download para empezar la descarga, luego de este veremos el progresa de la descarga, el resultado debería quedarnos algo así:



Luego de que termine el proceso, el archivo con formato mp4 debería estar en el directorio actual del programa:



Ahora veamos un ejemplo de como seria el procedimiento para descargar el audio de este video:

import pafy

video = pafy.new("https://www.youtube.com/watch?v=JkK8g6FMEXE")

bestaudio = video.getbestaudio()

bestaudio.download()


Como pueden observar el procedimiento es el mismo, pero con el uso del método getbestaudio. Y nos volvería a mostrar el progreso de la descarga:




Bueno, eso a sido todo de parte por hoy, esta librería es muy interesante y de mucha utilidad.

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

lunes, 16 de octubre de 2017

Creación de archivos PDF con Python y Reportlab

¿Que es Reportlab?

ReportLab es el motor de código abierto, ultra robusto y de gran duración para crear documentos PDF complejos y basados ​​en datos y gráficos vectoriales personalizados. Es gratis, de código abierto y escrito en Python.

Para realizar los ejemplos de hoy es necesario descargar la librería reportlab, la cual puedes adquirir ingresando en el siguiente enlace: Descargar Reportlab.


Imagen relacionada

Creando nuestro primer PDF.

Hace unos días, estaba realizando un programa que hacia peticiones a distintos servidores web y se me ocurrió ingresas los datos devueltos por el servidor en una tabla dentro de un archivo con formato PDF.

La cuestión era que nuca había hecho un archivo tan complejo con Python, salia a caminar un rato tratando de pensar en como lograr ese objetivo, no me quedo más remedia que acudir a mi amigo que lo sabe todo, "Google". Luego de investigar por unos cuantos minutos me tope frente a frente con "Reportlab", entre a su sitio oficial (http://www.reportlab.com/) y todo lo que se podía lograr con este sofware.

Luego de investigar a fondo a Reportlab, conseguí mi objetivo.



No es la gran cosa, pero es un comienzo. Como pueden ver e plasmado la respuesta de los servidores en una tabla.

Si quieres ver le código el cual da como resultado la creación del archivo que te mostré previamente, ingresa al siguiente enlace: Código Completo.

Ahora haremos unos ejemplos para entender un poco como funciona Reportlab.

Mi Hola Mundo en Reportlab

Muy bien, haremos un pequeño script que genere un archivo PDF con una cadena de texto la cual sera "Hola Reportlab", ya que es inadecuado conocer a alguien sin saludarlo, veamos como se hace.



#Importamos los modulos necesarios
from reportlab.pdfgen import canvas

doc = canvas.Canvas("Hola Mundo.pdf")

#Escribimos una cadena de Texto dentro del documento
doc.drawString(100, 750, "Hola Mundo!!!")

#Guardamos el documento
doc.save()


Veamos que hace el código presentado anteriormente, antes de continuar quiero mencionar que puedes ver y descargar el codigo ingresando al siguiente enlace: Codigo de Hola Reportlab.

En el script, lo primero que hacemos es importar los métodos de canvas que se encuentran dentro de reportlab.pdfgen. Luego de esto hacemos una instancia de Canvas, y le pasamos como argumento el nombre de nuestro archivo, en este caso yo le e colocado "Hola Reportlab.pdf". Ahora que doc es la instancia de Canvas podemos empezar a usar sus métodos, el método que nos permite escribir cadenas de textos dentro de nuestros documentos PDF, se llama "drawString", a este método le e pasado 3 argumentos, los cuales son, su posición en el eje X, el segundo es su posición en el eje Y y el tercero es la cadena que deseamos escribir en el documento. Luego de esto usamos el método "save" para guardar nuestro documento.

Como pueden ver es algo muy fácil, si abrimos nuestro documento, el resultado debería ser el siguiente:



Si quisiéramos hasta podríamos cambiar la fuente de texto si quisiéramos, esto lo logramos usando el método "setFont" como se muestra a continuación:


doc.setFont("Helvetica", 15)



Trabajando con Figuras y Formas.

Llego la hora de trabajar con figuras, ahora, dibujemos un poco.

Con el método "circle", podemos hacer la forma de un circulo, debemos pasar como argumento su posición en el eje X e Y y el tamaño del circulo, veamos un ejemplo:


doc.circle(300, 700, 100) #Creación del circulo


El resultado debería ser el siguiente: 



Si quisiéramos una linea recta, tendríamos que usar el método "line" de la siguiente manera:



doc.line(20,700,580,700) #Creación de una linea recta


El resultado debería ser el siguiente:



Si no les basta un circulo y una linea, pueden usar otros metodos como ellipse, grid, roundRect, wedger, entre otros.

Una imagen vale más que mil palabras.

¿Que pasa si quiero ingresar una imagen dentro del documento?, muy facil, ¿Como lo se hace?, así:



#Importamos los modulos necesarios
from reportlab.pdfgen import canvas

doc = canvas.Canvas("Hola Mundo.pdf")

#Inseratmos la imagen en el documento
doc.drawImage("https://udemy-images.udemy.com/course/750x422/433798_1de9_4.jpg", -50, 500)

#Guardamos el documento
doc.save()



Para insertar una imagen en el documento se hace uso del método drawImage, al cual le pasamos 3 argumentos, el primero es la ruta de la imagen, en este caso uso una imagen de Internet, los últimos 2 argumentos son la posición de la imagen.

El resultado debería quedarnos así:



Hay algunas cosas que debo aclarar, lo primero es que el método drawImage, solo acepta imágenes con formato "jpg", lo segundo es que la posición de la imagen va a depender de su tamaño.

 Bueno, dejaremos esto hasta aquí, este modulo es extenso así que tratare de traer más artículos referentes a Reportlab, cualquier duda con gusto las responderé. Mi nombre es Luis, y fue un placer compartir mis conocimientos con ustedes :D. 

Seguir Leyendo

viernes, 13 de octubre de 2017

Programación Funcional - Lambda, Map, Filter y Reduce

¿Que es la Programacion Funcional?

Es un estilo de programacion que (como lo indica su nombre) se basa en funciones.
La programación funcional busca usar funciones puras. Las funciones puras no tienen efectos secundarios, no manejan datos mutables o de estado, y devuelven un valor que depende solo de sus argumentos.

Ejemplo: Funciones puras e impuras.


#Función pura
def pure_func(x, y):
    temp = x + 2 * y
    return temp / (2 * x + y)

#Función impura
list = [
def impure(arg):
    list.append(arg)


La función "impure" es una función impura porque cambio el estado de list.

En cambio, la función "pure_func" es una función pura porque devuelve valores que dependen de sus argumentos.


Utilizando Lambda, Map, Filter y Reduce.

Cuando tenemos que realizar operaciones sobre listas, en lugar de utilizar los clásicos loops, podemos utilizar las funciones Map, Reduce, y Filter.

Operador lambda: 
El operador lambda o función lambda, es una forma de crear funciones anónimas, es decir, funciones sin nombre. Estas funciones son desechable, es decir, solo se necesitan donde se han creado. Las funciones lambda se utilizan principalmente en combinación con las funciones Map, Filter y Reduce.

La sintaxis general de una función lambda es bastante simple:
lambda argument_list : expression

El operador lambda o función lambda, es una forma de crear funciones anónimas, es decir, funciones sin nombre. Estas funciones son desechables, es decir, solo se nesecitan donde se han creado. Las funciones lambda se utilizan principalmente en combinatorio con las funciones Map, Filter y Reduce.

La sintaxis general de una funcion lambda es bastante simple:
lambda argument_list : expresison

Ejemplo:


#Función lambda que devuelve la suma de sus dos argumentos:
f = lambda x, y : x + y
f(2 + 2)

#Resultado:

#Segundo ejemplo de lambda
#Función lambda que devuelve la raíz cuadrada de su argumento
a = lambda x : x**1/2
a(233)

#Resultado:
15,2643

Como pueden ver, la función lambda nos devuelve valores que dependen de sus argumentos, esto significa que es una función pura.

 

Operador Map: 

El operador Map, toma una función y un iterable como argumentos, y devuelve un nuevo iterable con la función aplicada a cada argumento . Ejemplo:



#Ejemplo del operador Map
def add_five(x):
    return x + 5

nums = [11, 25, 34, 100, 23]
result = list(map(add_five, nums))
print(result)

#Resultado:
[16, 30, 39, 105, 28]



Como pueden ver, "map" nos a devuelto una lista con todo los elementos de la lista "nums", vemos que a cada elemento le sumo 5.

Si usáramos el operador lambda en vez de declarar la función "add_five", el resultado seria el mismo. Veamos un ejemplo:




#Ejemplo del operador Map y Lambda
nums = [11, 25, 34, 100, 23]
result = list(map(lambda x:x+5, nums))
print(result)

#Resultado:
[16, 30, 39, 105, 28]



Como pueden ver el resultado es el mismo, increíble, ¿Verdad?.
Otra cosa a tener en claro es que en estos dos ejemplo, que para convertir el resultado en una lista, se hace uso del método "list".
 
Operador Filter:

El operado filter (función, lista) ofrece una forma elegante de filtrar todos los elementos de una lista, para los que la función de función devuelve True.  
El operador filter(f, l) necesita una función f como primer argumento. f devuelve un valor booleano, es decir, verdadero o falso. Esta función se aplicará a cada elemento de la lista. Solo si f devuelve True, el elemento de la lista se incluirá en la lista de resultados.


#Usando el operador Filter
nums = [0, 2, 5, 8, 10, 23, 31, 35, 36, 47, 50, 77, 93]
result = filter(lambda x: x % 2 == 0, nums)
print(result)

#Resultado:
[2, 8, 10, 36, 50]


Como pueden observar, el operador filter no incluyo a los elementos que no fueran divisibles entre 2, otra cosa es que hacemos uso de lambda, ya que es utilizado especialmente para este tipo de situaciones.


 Operador Reduce:
 La función Reduce reduce los valores de la lista a un solo valor aplicando una funcion reductora. El primer argumento es la función reductora que vamos a aplicar y el segundo argumento es la lista.



#Usando el operado filter
from functools import reduce #en python3 reduce se encuentra en modulo functools

nums = [47,11,42,13]
result = reduce(lambda x, y: x + y, nums)
print(result)

#Resultado:
113


Para entender un poco mejor al operador reduce, veamos una imagen que nos explica su procedimiento.


Veranschulichung von Reduce 

 Como pueden ver, reduce suma cada uno de los elementos hasta solo dejar un valor, en este caso "113", ¿Que pasaría si en vez de sumar, multiplicamos cada uno de los valores?, buena pregunta, espero y puedas contestarla en los comentarios.

La programación funcional no solo se resume en estos 4 operadores, en articulo posteriores explicare más acerca de todo esto. Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes. :D 
 
 
Seguir Leyendo

jueves, 12 de octubre de 2017

Algoritmos de Búsqueda en Python

Introducción:

Problema de la Búsqueda: Dada una lista xn y un valor x devolver el índice de x en xn si x está en xn, y −1 si x no está en xn.

El problema que acabo de presentarte, es uno de los problemas más clásicos de la computación, "El Problema de la Búsqueda", nuestro objetivo de hoy, será escribir 3 algoritmos diferentes que nos ayuden a resolver este problema, si te interesa sigue leyendo.

Algoritmos de Búsqueda:

Con mucha frecuencia los programadores trabajamos con grandes cantidades de datos almacenados en una lista o en cualquier estructura de datos, y por ello será necesario determinar si una lista contiene un valor que coincida con un cierto valor clave, para saber si un valor se encuentra dentro de una determinada lista o vector (depende de ti como quieras llamarlo), se hace uso de los Algoritmos de Búsqueda, los cuales nos permiten encontrar un determinada valor dentro de una estructura de datos: por ejemplo, ubicar el registro correspondiente a cierta persona en una base de datos.

Para cumplir con el objetivo de hoy que es resolver el Problema de Búsqueda, usaremos dos técnicas de búsqueda: búsqueda lineal o secuencial,la técnica más sencilla, y búsqueda binaria o dicotómica, la técnica más eficiente.
Resultado de imagen para algoritmos de busqueda


1. Búsqueda Lineal:

-Este tipo de algoritmo, como su nombre indica, busca desde el primer dato hasta el último, uno a uno comparando sucesivamente todos los datos en memoria hasta localizar el dato que queramos localizar. Este algoritmo puede usarse en cualquier situación, pero se recomienda usarlo solo en listas que no estén ordenadas, ya que para las que lo estén podremos usar el siguiente algoritmo, que es mucho más eficiente.

Solución del Problema con la Búsqueda Lineal:

Problema de la Búsqueda: Dada una lista xn y un valor x devolver el índice de x en xn si x está en xn, y −1 si x no está en xn.
Diseñamos una solución: Podemos comparar uno a uno los elementos de la lista con el valor de x, y retornar el valor de la posición donde lo encontramos en caso de encontrarlo.
Si llegamos al final de la lista sin haber salido antes de la función es porque el valor de x no
está en la lista, y en ese caso retornamos −1.
En esta solución necesitamos una variable i que cuente en cada momento en qué posición
de la lista estamos parados. Esta variable se inicializa en 0 antes de entrar en el ciclo y se
incrementa en 1 en cada paso.

Código del Algoritmo:



""" Búsqueda lineal.
 Si x está en lista devuelve su posición en lista, de lo
 contrario devuelve -1.
"""

#Función del Algoritmo: se recorren uno a uno los elementos de la lista 
#y se los compara con el valor x buscado.
def busqueda_lineal(lista, x):
  i = 0 # i tiene la posición actual en la lista, comienza en 0

 #El ciclo recorre todos los elementos de la lista
 for z in lista:
  
  #Si z es igual a x, devuelve el valor de i
  if z == x:
   return i
  i = i+1
 #si salió del ciclo sin haber encontrado el valor, devuelve -1
 return -1

Resultado:
>>> busqueda_lineal([1, 4, 54, 3, 0, 34, 23, 12], 2)
-1
>>> busqueda_lineal([1, 4, 54, 3, 0, 34, 23, 12], 23)
6
>>> busqueda_lineal([1, 4, 54, 3, 0, 34, 23, 12], 4)
1



2. Búsqueda Binaria:

En este caso, este tipo de búsqueda es usado en listas que estén previamente ordenadas, ya que su método de búsqueda es la de dividir los datos en dos grupos, eligiendo el grupo en el cual debería estar el dato buscado (supone que está ordenado alfabéticamente o numericamente), volviendo a aplicar la división, y así sucesivamente hasta verificar si existe o no existe el dato buscado.

Solución del Problema con la Búsqueda Binaria:

Problema de la Búsqueda: Dada una lista xn y un valor x devolver el índice de x en xn si x está en xn, y −1 si x no está en xn.
Procedimiento: Para implementar este algoritmo se compara el elemento a buscar con un elemento cualquiera del vector (normalmente el elemento central): si el valor de éste es mayor que el del elemento buscado se repite el procedimiento en la parte del vector que va desde el inicio de éste hasta el elemento tomado, en caso contrario se toma la parte del vector que va desde el elemento tomado hasta el final. De esta manera obtenemos intervalos cada vez más pequeños, hasta que se obtenga un intervalo indivisible. Si el elemento no se encuentra dentro de este último entonces se deduce que el elemento buscado no se encuentra en todo el vector.

Código del Algoritmo:

"""
Búsqueda Binaria.
"""

#Este es el vector que el algoritmo usara para buscar cualquier dato
vector = [3, 5, 8, 9, 10, 22, 45, 500, 900, 4253]

#La variable puntero sera el inicio del vector, que es 0
puntero = 0

#vectorLen contiene la longitud del vector
vectorLen = len(vector)

#La varieable encontrado cambiara su valor, y asi el algoritmo sabre que hacer 
encontrado = False

#Le pedimos al usuario una entrada de un entero
numero = int(input("Ingresar el dato que desea buscar: "))

#Creamos un bucle que no se detenga hasta que encontrado sea diferente de False
#Y que puntero sea menor o igual que vectorLen
while not(encontrado) and puntero <= vectorLen:

 #Creamos la variable mitad
 mitad = int((puntero+vectorLen) / 2)

 #Si numero es igual que el indice mitad en vector
 if numero == vector[mitad]:
  #Encontado sera igual a True
  encontrado = True
 
 elif numero < vector[mitad]:
  #vectorLen sera igual que mitad - 1
  vectorLen = mitad - 1
 #De lo contrario
 else:
  #Puntero sera igual que mitad + 1
  puntero = mitad + 1

#Si encontrado es True
if(encontrado):

#Mostramos un mensaje con la posicion del Dato en el vector
 print("El dato se encuentra en la posición ", str(mitad+1))

 #Mostramos el vector ordenado
 print(vector)

#De lo contrario
else:
        #Mostramos un mensaje 
 print("El dato no se encontró")

Resultado:
Ingresar el dato que desea buscar: 8
El dato se encuentra en la posición  3
[3, 5, 8, 9, 10, 22, 45, 500, 900, 4253]


¡Excelente! hemos cumplido con nuestro objetivo, resolvimos el problema de la búsqueda con 2 algoritmos diferentes, como pueden ver, los algoritmos de búsqueda aparte de ser muy interesantes son de mucha ayuda, espero que te haya sido de utilidad, ya sea para resolver problemas o para reforzar tus conocimientos.

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

martes, 10 de octubre de 2017

Servicio Web de la NASA - Astronomy Picture of the Day (imagen astronómica del día, APOD)

Introducción:

Hoy en día podemos encontrar una gran cantidad de servicios web o APIs en toda Internet, muchas empresas importantes nos permiten acceder a sus cientos de datos, con el fin de que nosotros los desarrolladores podamos usarlos.

Hoy usaremos el servicio de la NASA , "Imagen Astronómica Del Día", también conocido por sus siglas en ingles como "APOD".


APOD es un servicio que nos provee una imagen astronómica diaria, ademas de la imagen, nos proporciona una breve descripción de esta, pero hoy nos centraremos en la imagen.

En el día de hoy crearemos un pequeño programa con el lenguaje de programación Python y haremos uso de la librería requests para hacer la petición a los servidores de la NASA. Si aun no tienes la librería requests, puedes descargarla ingresando al siguiente enlace: Descargar Liberia Requests

El programa que crearemos, le pedirá una entrada al usuario, la cual sera la fecha de la imagen que desea, luego de esto el programa buscara la imagen y luego la descargara en nuestro ordenador.

Proyecto ApodPy

Al programa de hoy lo e bautizado como "Proyecto ApodPy", no es un buen nombre pero solo es una prueba.


A continuación te enseñare el código de nuestro programa:


#Importamos la librería Requests para hacer peticiones a servidores
import requests
import webbrowser

#Le pedimos al usuario que introduzca una fecha con el formato Año-Mes-Día
date = input("introduzca una fecha con el formato Año-Mes-Día (Ej: 2008-04-05): ")

#Parámetros que le pasaremos a la petición
params = {'api_key':'DEMO_KEY',
   #Date es la fecha de la imagen que nos devolverá el servidor la cual descargaremos
   'date': date}
print("Obteniendo imagen astronomica de la fecha ", params['date'])

#Creamos una conexión con los servidores de la NASA
response = requests.get('https://api.nasa.gov/planetary/apod?', params=params)

#Obtenemos la respuesta del servidor en un formato json
responseJSON = response.json()

#En ocasiones en vez de darnos una imagen nos dan un vídeo
#Por ello comprobaremos que la respuesta sea una imagen
#Si la respuesta no es una imagen se nos abrirá una pestaña en nuestro navegador con el link del vídeo
if responseJSON['media_type'] == "image":
 #Enviamos una petición a la url que nos devuelve https://api.nasa.gov/planetary/apod?
 responseIMG = requests.get(responseJSON['url'])

 #Luego iteramos la respuesta y le escribimos en un fichero de formato jpg con escritura Binaria
 with open('apod-'+params['date']+'.jpg', 'wb') as img:
  for x in responseIMG.iter_content():
   img.write(x)
  print("\n Imagen apod-"+params['date']+".jpg descargado correctamente.")
  img.close()

#Como ya mencione si la respuesta no es una imagen se abrirá una pestaña en nuestro navegado con el video
#Si quieres puedes hacer lo mismo que lo de la imagen, descargar el vídeo, simplemente repite el procedimiento de arriba
else:
 webbrowser.opne_new_tab(responseJSON['url'])

El código es corto y fácil de entender, se ve algo cargado pero es por los comentarios, si quieres verlo mejor, puedes verlo en mi repositorio de GitHub: Proyecto ApodPy.py.

Lo primero que hace el programa es importar los modulo necesarios que en este caso son requests y webbrowser. Luego de esto pedimos una entrada la cual sera fecha de la imagen que deseamos obtener, esta fecha la guardamos en una variable con el identificador date. Luego declaramos una variable con el identificador params,esta variable almacenara un diccionario con dos elementos, estos 2 elementos serán los parámetros de nuestra petición, el primero sera api_key, al cual le daremos el valor de DEMO_KEY, el segundo seria la fecha de la imagen que deseamos obtener. Luego hacemos la petición a "https://api.nasa.gov/planetary/apod?", aquí mismo le decimos que los parámetros serán los elementos del diccionario params. Luego declaramos una variable con el identificador responseJSON, la cual almacenara la respuesta dada por el servidor en formato JSON. Luego de todo esto empezamos con el proceso de extraer la URL de la imagen y almacenarla en el directorio actual en donde se ejecuta el programa.

Antes de ejecutar el programa, quiero advertirles que el servicio nos permite usar la clave "DEMO_KEY" para probar la API antes de tener que registrarnos para una clave real, "DEMO_KEY" tiene bastantes limitaciones: no más de 30 peticiones por hora y un máximo de 50 por día, por lo tanto, si tienes planeado hacer más de 50 peticiones por día. ya sea que quieres hacer un proyecto comercial, te recomiendo conseguir una "API_KEY", la cual puedes conseguir registrándote en el siguiente enlace: Get Your API Key.


Resultado del Proyecto ApodPy:

Momento de ejecutar nuestro "Proyecto ApodPy", al ejecutar, nos deberia aparecer algo como esto:


Yo colocare la fecha de hoy, la cual es "2017-10-10". Quiero dejar en claro en que podemos colocar cualquier fecha, aparir de la primera publicación el 16 de junio de 1995 hasta la fecha actual.

Luego de introducir la fecha, el programa empezara a hacer la petición y posteriormente, descargar la imagen el en directorio actual del programa.


Ese seria el resultado, la imagen se descargo correctamente, y la podemos ver en el directorio, a continuación te muestro la imagen que el programa descargo por mi:


Hermoso ¿Verdad?.

Si tienes ganas de saber más acerca de este servicio, y conocer otros servicios web de la NASA, te sugiero que visites el sitio oficial de NASA Open APIs.

Eso a sido todo de mi parte por el dia de hoy, si quedaste con alguna duda, déjamela saber en los comentarios, comparte tu experiencia de este "Proyecto ApodPy" con nosotros. Mi nombre es Luis, y fue un placer compartir mis conocimientos con ustedes :D.
Seguir Leyendo

Entradas más recientes

Powered by Blogger .