Sie sind auf Seite 1von 21

ANALISIS DE ALGORITMOS Y ESTRATEGIAS DE PROGRAMACIÓN

CONEXIÓN Y BUSQUEDA DE UN VIDEO MEDIANTE UN APLICATIVO JAVA


ESCRITORIO MEDIANTE EL API DE YOUTUBE

Autores:
BORJA SEGURA, Guillermo Martin
MORALES ORDIANO, Nilton
RODRIGUEZ MELGAREJO, Hugo
TÁVARA SÁNCHEZ, Jahaira

DOCENTE MONDRAGON Vilela, Manuel


Contenido
INTRODUCCIÓN ........................................................................................................... 3
PLAN DE INVESTIGACIÓN ........................................................................................ 4
1. DESCRIPCIÓN DEL PROBLEMA............................................................... 4
2. OBJETIVOS..................................................................................................... 5
2.1. Objetivo Secundario ............................................................................. 5
3. ANALISIS TEORICO ..................................................................................... 5
3.1. API ............................................................................................................. 5
3.2. JSON ....................................................................................................... 16
3.3. LOS CÓDIGOS DE ESTADO DE HTTP ........................................... 16
4. ANALISIS PRÁCTICO ................................................................................. 18
4.1. IMPLEMENTACION DEL CODIGO FUENTE .................................. 18
4.2. APLICACION ......................................................................................... 19
5. CONCLUSIONES ......................................................................................... 21
6. BIBLIOGRAFIA............................................................................................. 21

pág. 2
INTRODUCCIÓN

Todos somos conscientes de que actualmente las personas dedican parte de su tiempo
a la busqueda de videos en la web. Actualmente el mayor sitio de alojamiento de videos
es YouTube el cual tiene objetivo: ayudar a los espectadores a encontrar los vídeos que
les interesan y maximizar sus interacciones y su satisfacción a largo plazo.

Siendo YouTube hoy por hoy y una pista más del potencial tan tremendo que tiene el
canal audiovisual para casi cualquier actividad (o simplemente para divertirse) ya que
es un canal muy atractivo y fácil de consumir, de hecho, para la gran mayoría del público
más fácil que los canales basados en texto como los blogs.

En vista de todo lo planteado, en el presente trabajo presentaremos una forma no


convencional de realizar una busqueda de alguna prefenrecia en Youtube mediante una
aplicación de Java Escritorio, para ello nos conectaremos a traves de la API (Interfaz
de Programación de Aplicaciones) , el cual se encuentra en YouTube para
desarrolladores

pág. 3
PLAN DE INVESTIGACIÓN

1. DESCRIPCIÓN DEL PROBLEMA

No es de conocimiento privado que las redes sociales crecen día a día y poseen
información tanto personal, como de opiniones de los usuarios que las utilizan.

Con el fin de conocer dicha información para fines específicos y de promocionar


marcas y servicios, actualmente muchas aplicaciones están siendo diseñadas
de tal forma que tengan la capacidad de establecer una conexión con el API de
dichas redes.

YouTube siendo una de las aplicaciones más utilizadas no es escapa de ello por
lo cual para acceder a su API el modo de conexión es muy similar a Twitter dado
que los videos están disponibles públicamente. Las restricciones de acceso no
son medidas por intervalos cortos de tiempo donde se permite un número
máximo de peticiones, sino que es controlado por día. Para ello YouTube asigna
diariamente un número de ’Unidades’ para cada aplicación (no es por usuario) y
cada operación que se realiza tiene un costo de esas unidades.

Ahora bien, cuando se requiere realizar una búsqueda de videos, YouTube tiene
una restricción que permite recuperar un máximo de 500 videos por búsqueda y
no tiene una restricción de temporalidad, es decir, pueden recuperarse videos
que fueron subidos recientemente o de meses atrás. Si la búsqueda devuelve
más de 500 videos, YouTube sugiere que se utilicen otros criterios de búsqueda
para refinar los resultados y de esta forma obtener la información deseada.

Por lo cual YouTube hace uso principalmente de XML para compartir sus datos
y para enviar respuestas o mensajes de error, sólo algunos recursos pueden ser
configurados para que la respuesta sea devuelta en formato JSON. Siendo la
versión actual del API de YouTube es la 3.0.

pág. 4
2. OBJETIVOS

 Implementar una aplicación java escritorio que permita realizar búsqueda de


videos por medio de una API

2.1. Objetivo Secundario

 Implementar paginación en nuestra aplicación para poder observar la totalidad


de elementos encontrados, de una manera ordenada y amigable
 Implementar búsquedas en google a través de nuestra aplicación, sin salir de
nuestra aplicación
 Implementar un sistema de autenticación de usuarios (usuarios con
contraseñas), además como base de datos usaremos Firebase.

3. ANALISIS TEORICO

3.1. API

Para Daniel Jacobson (2011) nos indica que una API es una especificación
formal sobre cómo un módulo de un software se comunica o interactúa con otro.
Lo que conlleva a que las API son un conjunto de comandos, funciones y
protocolos informáticos que permiten a los desarrolladores crear programas
específicos para ciertos sistemas operativos. Las API simplifican en gran medida
el trabajo de un programador, ya que ahorra el al no partir desde una codificación
desde inicio. Estas permiten al informático usar funciones predefinidas para
interactuar con el sistema operativo o con otro programa

Es por ello las API son valiosas, ante todo, porque permiten hacer uso de
funciones ya existentes en otro software lo que conlleva simplemente a reutilizar
lo ya creado, así se sabe que código ya está probado y que funciona
correctamente.

pág. 5
3.1.1. Obtención de una llave API-Google-Youtube

 Ingresar a la url: https://code.google.com/apis/console

 Iniciar el proceso de logueo con una cuenta de google o crear una


cuenta nueva

 Crear un nuevo proyecto y aceptar los términos

Fig. Nº1: Creación de llave api

pág. 6
Fig. Nº2: Creación de llave api

 Menú izquierda/Apis y Autentificación, seleccionar Apis

 Habilitar Youtube Data API

 Menú izquierda/Credenciales

pág. 7
 Acceso a API pública, crear nueva clave

3.1.2. Parámetros de conexión API-YouTube

Parámetros
Parámetros obligatorios
string
El parámetro part especifica una lista
separada por comas de una o más
propiedades de recursos de search
que la respuesta de API va a incluir.
Los nombres de part que se pueden
incluir en el valor del parámetro son
id y snippet
Si el parámetro identifica una
propiedad que contiene propiedades
part
secundarias, estas se incluirán en la
respuesta. Por ejemplo, en un
resultado de search, la propiedad
snippet contiene otras propiedades
que identifican el título del resultado,
la descripción y así sucesivamente.
Si se establece part=snippet, la
respuesta de la API también
contendrá todas esas propiedades
anidadas
unsigned integer
El parámetro maxResults especifica
el número máximo de elementos que
maxResults se debe mostrar en el conjunto de
resultados. Los valores aceptables
son {0/} a 50, ambos inclusive. El
valor predeterminado es 5.

pág. 8
Una clave de interfaz de
programación de aplicaciones es un
código que pasan los programas de
computadora llamando a una
key
interfaz de programación de
aplicaciones para identificar al
programa llamante, su desarrollador
o su usuario al sitio web

Fuente https://developers.google.com/youtube

BUSCADOR DE LISTAS - Search List

pág. 9
Fuente: https://developers.google.com/youtube/v3/docs/search/list

USANDO REST PARA INVOCAR API

pág. 10
pág. 11
Fuente: https://developers.google.com/custom-search/v1/using_rest

pág. 12
FIREBASE
Es la nueva y mejorada plataforma de desarrollo móvil en la nube de Google. Se trata
de una plataforma disponible para diferentes plataformas (Android, iOS, web), con lo
que de esta forma presentan una alternativa seria a otras opciones para ahorro de
tiempo en el desarrollo

¿Qué servicios nos ofrece?

Veamos, uno por uno, los servicios más destacados que nos ofrece Firebase para
trabajar de una manera más sencilla en nuestra aplicación.

Base de datos Realtime

Con la base en tiempo real de Firebase podrás guardar todos los datos que requiera tu
aplicación. Esta base de datos funciona en tiempo real por lo que los cambios se
mostrarán al instante. Estos se almacenan en formato JSON y se pueden agregar
reglas para permitir requests con token o solo desde una URL por ejemplo.

Autenticación

Es un servicio que nos simplifica el inicio de sesión y la gestión de la misma en nuestra


aplicación. Si la usamos en aplicaciones web o android studio es extremadamente fácil
de configurar, con un simple método ya podremos guardar un usuario con su
contraseña y correo.

Almacenamiento

Este servicio es muy bueno para aplicaciones que requieran guardar archivos del
usuario. También nos sirve si queremos subir estáticos ya que existe un botón desde
la interfaz o podemos programar algo. En la aplicación que estoy desarrollando
actualmente me sirve para subir fotos de restaurantes ya acceder a ellas en cualquier
momento.

Hosting

Con una colección de estáticos podemos subir una aplicación y esta automáticamente
contará con SSL y HTTP2. Si tenemos una app con Angular o Firebase podemos
hacer un build desde nuestros ordenadores y subir estos archivos generados y nos
funcionarán sin problemas. Si necesitamos un Backend tendríamos que subirlo a otro
lugar o hacer uso de las Cloud Functions, además de otras utilidades.

pág. 13
pág. 14
Fuente: https://firebase.google.com/

pág. 15
3.2. JSON

JSON (JavaScript Object Notation - Notación de Objetos de JavaScript)1 es un


formato ligero de intercambio de datos, el cual es un formato de texto que es
completamente independiente del lenguaje pero utiliza convenciones que son
ampliamente conocidos por los programadores de la familia de lenguajes C,
incluyendo C, C++, C#, Java, JavaScript, Perl, Python, y muchos otros. Estas
propiedades hacen que JSON sea un lenguaje ideal para el intercambio de
datos.

JSON está constituido por dos estructuras:

 Una colección de pares de nombre/valor. En varios lenguajes esto es conocidos


como un objeto, registro, estructura, diccionario, tabla hash, lista de claves o un
arreglo asociativo.
 Una lista ordenada de valores. En la mayoría de los lenguajes, esto se
implementa como arreglos, vectores, listas o secuencias.

Estas son estructuras universales; virtualmente todos los lenguajes de


programación las soportan de una forma u otra. Es razonable que un formato de
intercambio de datos que es independiente del lenguaje de programación se
base en estas estructuras.

3.3. LOS CÓDIGOS DE ESTADO DE HTTP

Códigos de estado 1XX


Informan al navegador de algunas acciones que se van a realizar:

Códigos de estado 1XX


El navegador puede continuar realizando su
petición (se utiliza para indicar que la primera parte
100 (Continue),
de la petición del navegador se ha recibido
correctamente).
El servidor acepta el cambio de protocolo propuesto
101 (Switching Protocols) por el navegador (puede ser por ejemplo un cambio
de HTTP 1.0 a HTTP 1.1).
El servidor está procesando la petición del
navegador pero todavía no ha terminado (esto evita
102 (Processing (WebDAV))
que el navegador piense que la petición se ha
perdido cuando no recibe ninguna respuesta
Se va a reanudar una petición POST o PUT que fue
103 (Checkpoint),
abortada previamente.

1
https://www.json.org/json-es.html

pág. 16
Fuente: https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

Indican que la petición del navegador se ha recibido, procesado y respondido


correctamente:

Códigos de estado 2XX

La petición del navegador se ha completado con


éxito.
200 (Ok), 201 (Created), la petición del navegador se ha
completado con éxito y como resultado, se ha creado
un nuevo recurso (la respuesta incluye la URI de ese
recurso).
La petición del navegador se ha aceptado y se está
procesando en estos momentos, por lo que todavía
no hay una respuesta (se utiliza por ejemplo cuando
201 (Created),
un proceso realiza una petición muy compleja a un
servidor y no quiere estar horas esperando la
respuesta).
La petición se ha completado con éxito, pero su
202 (Accepted), contenido no se ha obtenido de la fuente
originalmente solicitada sino de otro servidor.
La petición se ha completado con éxito pero su
203 (Non-Authoritative respuesta no tiene ningún contenido (la respuesta sí
Information), que puede incluir información en sus cabeceras
HTTP).

La petición se ha completado con éxito, pero su


respuesta no tiene contenidos y además, el
navegador tiene que inicializar la página desde la que
205 (Reset Content), se realizó la petición (este código es útil por ejemplo
para páginas con formularios cuyo contenido debe
borrarse después de que el usuario lo envíe).

La respuesta de esta petición sólo tiene parte de los


contenidos, tal y como lo solicitó el propio navegador
206 (Partial Content), (se utiliza por ejemplo cuando se descarga un archivo
muy grande en varias partes para acelerar la
descarga).
La respuesta consiste en un archivo XML que
207 (Multi-Status contiene en su interior varias respuestas diferentes
(WebDAV)), (el número depende de las peticiones realizadas
previamente por el navegador).
208 (Already Reported El listado de elementos DAV ya se notificó
(WebDAV previamente, por lo que no se van a volver a listar

Fuente: https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

pág. 17
4. ANALISIS PRÁCTICO

4.1. IMPLEMENTACION DEL CODIGO FUENTE

package youtube;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

/**
*
* @author diegoromero
*/
public class Buscador {

public JSONArray buscar(String busqueda) throws MalformedURLException,


ProtocolException, IOException {
try {
String uri =
"https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=10&key
=AIzaSyDJnix8I9-anPxUefko9lfzdTPQe68szkY&q=" + busqueda;
URL url = new URL(uri);
HttpURLConnection connection = (HttpURLConnection)
url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/json");

if (connection.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP Error code : "
+ connection.getResponseCode());
}

InputStreamReader in = new
InputStreamReader(connection.getInputStream());
BufferedReader br = new BufferedReader(in);
String output;
StringBuilder sb = new StringBuilder();
while ((output = br.readLine()) != null) {

pág. 18
sb.append(output + "\n");
}

String jsonString = sb.toString();

JSONParser parser = new JSONParser();


JSONObject json = (JSONObject) parser.parse(jsonString);
System.out.println("youtube.Youtube.main()");
connection.disconnect();
return (JSONArray) json.get("items");
} catch (ParseException ex) {
Logger.getLogger(Buscador.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
}

Fuente: Creación Propia

4.2. APLICACION

Inicio de la aplicación

Fuente Creación Propia

pág. 19
Búsqueda en la aplicación

Fuente Creación Propia

Comparación del resultado de la aplicación vs búsqueda en Web

Fuente Creación Propia

pág. 20
5. CONCLUSIONES

 Mediante la API se permitió conectar dos softwares entre sí para el


intercambio de mensajes o datos en formato estándar mediante JSON. Lo
cual conllevo a la búsqueda de un video mediante la aplicación java escritorio
en YouTube

 Se logró llegar al Objetivo Secundario, permitiendo una conexión exitosa lo


cual se verifico a través del código de respuesta del HTTP igual a 200

 El uso del aplicativo se realizó con el objetivo de comprobar la utilización de


la conexión con aplicativos externos, pero para realizar esta aplicación con
fines de comercio se puede realizar mediante APIs externas por cual se
deberá para una licencia para su uso

6. BIBLIOGRAFIA

 Woods, D., Brail, G., & Jacobson, D. (2011). API (6ª Ed.). New York: O'Reilly
Media.

 https://developers.google.com/youtube)https://developers.google.com/yo
utube

 https://www.iana.org/assignments/http-status-codes/http-status-
codes.xhtml)https://www.iana.org/assignments/http-status-codes/http-
status-codes.xhtml

 https://www.json.org/json-es.html)https://www.json.org/json-es.html

pág. 21

Das könnte Ihnen auch gefallen