Projeto criado como componente D do MVP da disciplina de Back-end avançado do curso de pós-graduação em Desenvolvimento Full Stack da PUC-Rio.
API Rest que utiliza a Google's Programmable Search Engine da API Custom Search para buscar uma imagem da obra de arte referenciada pelo filme ou série, de acordo com o cadastro realizado no front-end.
Primeiramente é necessário gerar uma API Key como descrito na documentação. Com a API Key e a search engine ID criadas, crie um arquivo .env
que irá conter essas informações, como no exemplo abaixo:
PROGRAMMABLE_SEARCH_ENGINE_API_KEY="suakey"
SEARCH_ENGINE_ID="suaid"
- Substitua
suakey
esuaid
pelos seus dados. Após a criação da API Key, os dados podem ser conferidos e obtidos no painel da Google.
- Clone o projeto
- Cole na raiz do projeto o arquivo
.env
preenchido, como descrito na seção anterior - Na raiz do projeto, rode o seguinte comando para criar a imagem:
docker build -t g-arts-service .
- Rode a imagem criada:
docker run -p 9000:9000 g-arts-service
- Acesse a documentação no Swagger em
http://localhost:9000/doc
- Clone o projeto
- Cole na raiz do projeto o arquivo
.env
preenchido, como descrito na seção anterior - Crie e ative um ambiente virtual
- Na raiz do projeto, faça a instalação das dependências com o comando:
pip install requirements.txt
- Na raiz do projeto, rode o projeto com o seguinte comando:
flask run --host 0.0.0.0 --port 9000
- Acesse a documentação no Swagger em
http://localhost:9000/doc
A aplicação gerencia um banco de dados sqlite com a seguinte tabela:
Field Name | Data Type | Description |
---|---|---|
id | Integer | Primary Key |
artworkTitle | String | Título da Obra de Arte |
imageUrl | String | URL da Imagem da Obra de Arte |
artist | String | Nome do Artista |
- imageUrl é o que é retornado da pesquisa no Google Images.
A busca de imagens é realizada através de uma query
contendo artwork_title
e artwork_artist
que são enviados no request da componente B - Art refs api. A imagem retornada obedece aos critérios da licensa Creative Commons como definido nos argumentos de busca do script:
search_params = {
"q": query,
"num": 1, # Number of images to fetch
"safe": "high", # Safety level (options: high, medium, off)
"fileType": "jpg|png", # Limit search to JPEG and PNG files
"size": "large", # Filter for large images
"rights": ( # Creative Commons licenses
"cc_publicdomain|"
"cc_attribute|"
"cc_sharealike|"
"cc_noncommercial|"
"cc_nonderived"
),
}