Skip to content

Latest commit

 

History

History
executable file
·
176 lines (122 loc) · 8.01 KB

README.md

File metadata and controls

executable file
·
176 lines (122 loc) · 8.01 KB

API Client criado para visualizar fotos e vídeos de doguinhos e gatinhos. O objetivo é praticar diversos conceitos da linguagem e padrões de projeto, além de descontrair com imagens e vídeos engraçados durante a quarentena. O padrão de projeto escolhido para o desenvolvimento é o MVC (Model-View-Controller), implementado em Python.

edit: Infelizmente a API que seria utilizada para visualizar os gatinhos parou de funcionar durante o desenvolvimento, portanto foi substituída por outra responsável por visualizar raposas! Em respeito aos gatinhos que seriam mostrados e eram muito legais, as referências visuais a eles serão mantidas no repositório.

As API's utilizadas neste projeto foram a random.dog/ e aws.random.cat/, que disponibilizam acesso gratuito e sem registro. Nessas API's é possível realizar requisições que retornam links de vídeos e fotos de gatos e cachorros aleatórios. Na maioria das vezes são imagens engraçadas e divertidas de assistir, por isso é perfeito para o objetivo desse projeto. Os links são processados e as imagens e vídeos baixados para que os resultados sejam visualizados na tela. Diversas funcionalidades como utilização do teclado são utilizados para passar as imagens e oferecer uma experiência mais fácil. A velocidade em que as imagens aparecem dependem diretamente da velocidade da internet do usuário.


Sumário

  1. Introdução
  2. Instalando pacotes
  3. Padrão Model-View-Controller
  4. To-Do List da Aplicação
  5. Uso do API Client
  6. Teste na sua máquina sem precisar do python

Instalando pacotes

Para instalar os pacotes utilizados no projeto, basta ter o python 3 e pip instalado e utilizar o comando a seguir na pasta do projeto:

pip install -r requirements.txt

  • requests é utilizado para realizar todas as requisições à API's citadas na introdução
  • numpy é utilizado para fazer as transformações da imagem em array, para que todas as informações dos pixels (RGB) sejam armazenadas de uma forma que o opencv consiga ler
  • open_cv carrega as imagens e vídeos para visualização na tela.

AnimalModel

A implementação do AnimalModel consiste em realizar as requisições para as API's e tratar dados como tipo de arquivo, se é imagem, vídeo, gif. Cada classe (Cachorro e Gato) possui suas próprias requisições, a fim de resolver as particularidades de cada tipo de dado que é retornado. Além disso, lança exceções para diversos problemas que podem ocorrer no processo, seja pelo usuário ou pela API.

AnimalView

A implementação do AnimalView consiste apenas em organizar a visualização dos dados retornados pelo AnimalModel. A visualização deve ser feita de forma clara para o usuário, a fim de oferecer uma experiência boa para quem utiliza. Atualmente toda a visualização é feita utilizando o Opencv, utilizando a janela padrão de visualização. Com a classe de visualização separada o projeto se torna mais modularizado, com responsabilidades independentes, tornando mais fácil futuras manutenções e melhorias.

AnimalController

A implementação do AnimalControl é feita para que o usuário tenha acesso aos métodos para o uso da API como um cliente. Estes métodos coletam os dados necessários do usuário, invoca o model para tratá-los e organizar os dados, depois utiliza esses resultados para invocar o view e exibir os dados para o usuário. Essa orquestração é feita apenas pelo controller, ao qual o usuário tem contato. Nele também são feitos os tratamentos de exceção, simplificando ainda mais o retorno para o usuário verificar e realizar ações a respeito.


Aqui serão apresentadas as próximas ideias a serem implementadas para que o projeto tenha cada vez mais funcionalidades.

  • Visualiza fotos de doguinhos
  • Visualiza vídeos de doguinhos
  • Visualiza fotos e vídeos de doguinhos
  • Ajuste de dimensão
    • Fotos
    • Videos
  • Visualizar fotos de raposinhas
  • Salvar fotos e vídeos que gostou

edit: Todos os itens da lista foram concluídos durante a live e algumas pequenas melhorias após o final do projeto, com o objetivo de garantir o funcionamento sem erros.


Versão do Python que funcionará: Python 3.x

A versão final da aplicação oferece 4 opções quando o main.py é executado:

  1. Visualizar apenas fotos de doguinhos
  2. Visualizar apenas vídeos de doguinhos
  3. Visualizar fotos e vídeos de doguinhos
  4. Visualizar apenas fotos de raposas

Em todas elas os seguintes comandos são válidos:

  • Pressionar letra 's' para salvar foto ou vídeo
  • Pressiocar ESC para encerrar aplicação
  • Pressionar qualquer outra letra para carregar próxima foto ou vídeo

1. Visualizando apenas fotos

main.py

python main.py

> Escolha opção de fotos

Pressione letra 'ESC' para fechar a visualização
Pressione a letra 's' para salvar a foto
Pressione qualquer outra tecla para ver mais fotos

  

2. Visualizando apenas vídeos

main.py

python main.py

> Escolha opção de fotos

Pressione letra 'ESC' para fechar a visualização
Pressione a letra 's' para salvar o vídeo
Pressione qualquer outra tecla para ver mais fotos

  

Teste na sua máquina sem precisar do python

Utilizando a biblioteca pyinstaller foi possível realizar um build para criar um executável do protótipo apresentado, a fim de que possa ser executado em qualquer máquina com Windows ou Linux.

Executando no Windows

Download do executável para Windows

Foi realizado o upload do executável para windows, portanto basta fazer o download e executar na sua máquina. É possível que apareça uma mensagem dizendo que o executável pode não ser seguro. Ainda não sei como resolver isso, mas caso tenha dúvidas, pode analisar o código e criar seu próprio executável utilizando a biblioteca citada acima.

Executando no Linux

Download do executável para linux

Foi realizado o upload do executável para linux também, portanto basta fazer o download e executar pelo terminal na sua máquina. No linux não há problemas com mensagens de segurança, basta abrir a pasta do arquivo no terminal e executar o comando:

./app-caes-e-raposas-linux