Organización de archivos de video

Integrantes: Camila Carrasco, Christian Wiche

Contenidos
  1. Descripcion del problema
  2. Analisis del problema
  3. Casos de uso
  4. Implementacion
  5. Diagramas UML
  6. Pruebas
  7. Video
  8. Dificultades
  9. Descargas

Descripción

En la actualidad, es común poseer archivos de vídeo en el computador personal, archivos como: películas, series, entre otros. Cuando se tiene una gran cantidad de este tipo de archivos, puede que la organización sea un problema, ya que el hecho de tener solo el nombre de un archivo no otorga gran información de su contenido. En caso de tratarse de una pelicula o serie, informacion como: Genero, rating, reseña previa, entre otras.


Analisis

Se creará una interfaz gráfica que permita observar archivos de video de una manera más ordenada e informativa. Se buscara modelar como objeto de software cada archivo de video, ya sean peliculas, series, entre otros.

El usuario debe poder agregar al programa los archivos que desee organizar, y el programa, se encargará de buscar la información relevante para cada archivo en internet.


Casos de uso

  1. AGREGAR UNA CARPETA:

    • Nombre: Agregar una carpeta
    • Propósito: El usuario desea agregar una carpeta con películas al programa.
    • Actor: Usuario
    • Precondición: La carpeta debe tener películas.
    • Evento: El usuario elige una carpeta.
    • Post-condición: Se visualizan las películas en el programa.
    • Tipo: manual.
    • Curso normal de eventos:

  2. Usuario Sistema
    Usuario ejecuta el programa.
    Sistema inicia el programa. Creando frames, paneles, menus.
    Usuario selecciona opcion 'Files' del menu.
    El sistema abre menu Files.
    Usuario selecciona la opcion 'Add movie folder'.
    El programa abre dialogo para seleccionar carpeta.
    Usuario selecciona carpeta.
    El programa lista los archivos de video de la carpeta.
    El programa revisa si los archivos se encuentran en la base de datos.
    El programa descarga informacion de archivos nuevos.
    Sistema muestra por pantalla la lista de peliculas que han sido indexadas a el.


  3. ABRIR UNA PELICULA:

    • Nombre: Abrir una pelicula
    • Propósito: El usuario desea abrir una película desde el programa.
    • Actor: Usuario
    • Precondición: El programa debe tener peliculas previamente cargadas.
    • Evento: El usuario elige una pelicula.
    • Post-condición: Se abre la pelicula.
    • Tipo: Manual.
    • Curso normal de eventos:

  4. Usuario Sistema
    Usuario ejecuta el programa.
    Sistema inicia el programa. Creando frames, paneles, menus y cargando peliculas anexadas.
    Usuario elige pelicula que desea abrir, y clickea su poster.
    Programa muestra nuevo panel con informacion de la pelicula
    Usuario presiona boton con poster de la pelicula.
    Programa vuelve a mostrar panel con grid de peliculas
    Programa abre la pelicula seleccionada en el reproductor de video que se tenga por default.


  5. CAMBIAR SORTING:

    • Nombre: Cambiar sorting
    • Propósito: El usuario desea visualizar las peliculas utilizando un sorting distinto al default (all).
    • Actor: Usuario
    • Precondición: El programa debe tener peliculas previamente cargadas.
    • Evento: El usuario elige un sorting.
    • Post-condición: Se visualizan las películas en el programa con el sorting elegido.
    • Tipo: Manual.
    • Curso normal de eventos:

  6. Usuario Sistema
    Usuario ejecuta el programa.
    Sistema inicia el programa. Creando frames, paneles, menus y cargando peliculas anexadas
    Usuario selecciona opcion 'Sorting' del menu.
    El sistema abre menu Sorting.
    Usuario selecciona la opcion 'Genres'.
    Programa muestra una nueva grid de peliculas con un grupo de peliculas para cada genero.


Implementacion

Para la implementacion del programa se utilizo el software "JetBrains IntelliJ" enfocado en el desarrollo de aplicaciones con el lenguaje Java. Además de utilizar tres librerias externas: Tika, JSoup y h2.

Librería Uso
H2 (Base de datos) Se utilizó de forma embebida para el almacenamiento de la información básica de la peícula.
Tika (Metadata) Se utilizó para la obtención de tipos de archivo y extensiones con el fin de clasificar si los elementos procesados correspondían o no a video.
Jsoup (Parse de páginas web) Se utilizó para rescatar, mediante el parseo del código html de la página, la información asociada a la película, además de la ubicación del poster de la misma.

Para implementar el proyecto se utilizó un desarrollo iterativo e incremental, de manera similiar a las tareas.

Resumen de las clases:


Diagramas

A continución se muestran los diagramas UML solicitados::

    Diagrama de clases:



      Clases que usan las librerias externas:




Pruebas para cada caso de uso anterior

  1. AGREGAR UNA CARPETA:

      Usuario ejecuta el programa. Sistema inicia el programa creando frames, paneles, menus.

      Usuario selecciona opcion 'Files' del menu. El sistema abre menu Files

      Usuario selecciona la opcion 'Add movie folder'.

      El programa abre dialogo para seleccionar carpeta.

      Usuario selecciona carpeta.

      El programa lista los archivos de video de la carpeta

      El programa descarga informacion de archivos nuevos

      Sistema muestra por pantalla la lista de peliculas que han sido indexadas a el.

  2. ABRIR UNA PELICULA:

      Sistema inicia el programa creando frames, paneles, menus y cargando peliculas anexadas.

      Usuario apreta poster de la pelicula.

      Programa muestra nuevo panel con informacion de la pelicula

      Usuario presiona boton con poster de la pelicula. Programa vuelve a mostrar panel con grid de peliculas, y se abre la pelicula seleccionada.

  3. CAMBIAR SORTING:

      Sistema inicia el programa creando frames, paneles, menus y cargando peliculas anexadas.

      Usuario selecciona opcion 'Sorting' del menu. El sistema abre menu Sorting.

      Usuario selecciona la opcion 'Genres'.

      Programa muestra una nueva grid de peliculas con un grupo de peliculas para cada genero.


Video

Para ver el video que muestra el programa funcionando ofrecemos dos opciones:

Para descargar el video, haz click aquí O bien, puedes acceder al video en el siguiente link de youtube link


Dificultades

Las dificultades principales de este proyecto tuvieron relación principalmente con el manejo de la información asociado a los archivos de video.

Desde la perspectiva de la obtención de los datos y a falta de una API espacializada (por ser de pago) se tuvo que recurrir al estudio del código fuente de página web para utilizar un parseador. Esta técnica, aunque efectiva, trae problemas de robustez al sistema al ser sumamente dependiente de los cambios de la página objetivo.

Desde el punto de vista del almacenamiento y organización de los datos, la dificultad principal dijo relación con la necesidad de diseñar e implementar una base de datos embebida. Esto implicó dos cosas principalmente: el estudio y aplicación de lenguaje SQL y investigar los criterios y formas de crear una base de datos confiable.


Descargas

Para descargar el proyecto, haz click aquí

A continuacion se muestran las paginas para descargar las librerias externas usadas en el programa.

  • H2: h2
  • Tika: tika
  • Jsoup: jsoup