- VisĂŁo Geral
- Frameworks e Bibliotecas Principais
- Banco de Dados
- Integrações com APIs Externas
- Ambiente de Desenvolvimento
- Base de Consulta
- MĂłdulos do Sistema
- API
- Documentação da API (Open API / Swagger)
- Como Testar
- Instalação e Configuração
- Rodando o Projeto
- Tech Stack
- Estrutura do Projeto
Este projeto, construĂdo em Python, Ă© o backend do projeto Movie-Search. Para entender e subir o projeto completo, acesse o repositĂłrio do frontend.
Observação: As resenhas geradas são utilizadas para alimentar o Blog The Movie Search Blog The Movie Search (https://themoviesearchblog.netlify.app/)
- Flask: Framework web para construção da API
- Flask-RESTX: ExtensĂŁo para desenvolvimento de APIs RESTful com Swagger UI integrado
- Swagger: Documentação interativa da API
- MongoDB: Banco de dados NoSQL para persistĂŞncia de dados
- OpenAI: Integração com serviços de IA
- Spotify: Integração com streaming de música
- AWS: Serviços em nuvem da Amazon
- Open Subtitles: Acesso a base de legendas
- Servidor: execução em ambiente local
- Swagger (documentação da API): http://localhost:5001/docs
- Banco de Dados: MongoDB (em execução em um nĂvel gratuito. 512MB de armazenamento. MongoDB Compass para local + MongoDB Atlas para nuvem)
A base de dados de filmes é obtida através do IMDB Dataset e salva no MongoDB. Ela está salva no MongoDB através da database movie-search na coleção moviebasics.
É uma coleção de mais de 680.000 registros de filmes, representando todos os filmes existentes no catálogo do IMDB (Internet Movie Database).
- Contém metadados essenciais dos filmes:
- 🆔 tconst (IMDB ID)
- 🎬 TĂtulo original e alternativo
- 📅 Ano de lançamento
- 🎠Tipo de mĂdia (filme, sĂ©rie, etc)
Para cada módulo, há um arquivo controller.py que contém a lógica de negócio e um arquivo routes.py que contém as rotas da API.
Cada um dos módulos possui uma coleção própria no banco de dados.
- Sistema de gerenciamento de filmes favoritos que permite:
- Adicionar/remover filmes da lista de favoritos
- Buscar e filtrar filmes favoritos
- Marcar filmes como assistidos
- Enriquecimento automático de dados com:
- Links para download (magnet links)
- Links para legendas
- Informações detalhadas do filme (diretor, elenco, paĂs, etc.)
- Trilha sonora via Spotify
- Citações e curiosidades do filme
- Links para Wikipedia
- Palavras-chave e sinopse
Sistema de geração automática de artigos que permite:
-
Criação de análises crĂticas usando IA:
- ConteĂşdo bilĂngue (PT/EN)
- TĂtulo criativo e contextualizado
- Análise de elenco e personagens
- Contexto histĂłrico e cultural
- Análise tĂ©cnica e artĂstica
- Informações sobre a trilha sonora
- Galeria de imagens de cenas do filme
- Marcação de conteúdo gerado por IA
-
CRUD completo para gerenciamento de resenhas:
- Busca e filtragem de publicações
- Criação de novas resenhas autorais;
- Edição de resenhas existentes;
- ExclusĂŁo de resenhas;
- Pesquisa por tĂtulo, autor, palavras-chave, etc.
- Sistema de criação manual de resenhas que permite:
-
Interface para escrita de análises:
- Suporte bilĂngue (PT/EN)
- Editor de texto completo
- Galeria de imagens do filme
- Marcação de conteúdo original
-
CRUD completo para gerenciamento de resenhas:
- Busca e filtragem de publicações
- Criação de novas resenhas autorais;
- Edição de resenhas existentes;
- ExclusĂŁo de resenhas;
- Pesquisa por tĂtulo, autor, palavras-chave, etc.
-
A documentação interativa da API está disponĂvel atravĂ©s do Swagger UI:
- Acesse
/docs
apĂłs iniciar o servidor - Interface interativa para testar endpoints
- Documentação detalhada dos parâmetros e respostas
- Exemplos de uso para cada rota
-
Acesse a documentação Swagger em
http://localhost:5001/docs
-
Localize o endpoint que deseja testar (ex:
/movies/search
) -
Para testar o endpoint de busca de filmes:
- Clique no endpoint
/movies/search
- Clique no botĂŁo "Try it out"
- No corpo da requisição (Request body), insira um JSON com os parâmetros desejados:
{ "filters": { "startYear": {"$gt": 1990} }, "page": 1, "page_size": 10, "search_term": "Matrix" }
- Clique em "Execute" para enviar a requisição
- Os resultados aparecerĂŁo abaixo, incluindo:
- CĂłdigo de resposta
- Headers da resposta
- Corpo da resposta
- Curl command equivalente
- Clique no endpoint
-
Exemplos de filtros Ăşteis:
// Buscar filmes apĂłs 1990 {"filters": {"startYear": {"$gt": 1990}}} // Buscar filmes com termo especĂfico {"search_term": "Matrix"} // Buscar com paginação {"page": 2, "page_size": 20}
Crie um ambiente virtual, ative o ambiente virtual e instale as dependĂŞncias:
python3 -m venv venv
source venv/bin/activate # No Windows: venv\Scripts\activate
pip install -r requirements.txt
Configure as variáveis de ambiente: crie um arquivo .env na raiz do projeto com as variáveis de ambiente necessárias veja o modelo em env.example.
python3 app.py
A API estará disponĂvel em `http://localhost:5001`
Swagger: Biblioteca para documentação da API.
Flask: framework web para a construção da API.
Flask-RESTX: ExtensĂŁo para APIs RESTful com Swagger UI integrado.
MongoDB: Banco de dados NoSQL para armazenar os dados.
pymongo: Biblioteca para interação com MongoDB.
OpenAI: Biblioteca para interação com a API da OpenAI.
Spotify: Biblioteca para interação com a API do Spotify.
AWS: Biblioteca para interação com a API do AWS.
Open Subtitles: Biblioteca para interação com a API do Open Subtitles.
.
├── README.md
├── app.py
├── assets
│ └── swagger.png
├── config.py
├── directors
│ ├── __pycache__
│ ├── controller.py
│ ├── routes.py
│ └── utils.py
├── favorites
│ ├── __pycache__
│ ├── controller.py
│ ├── external_requests.py
│ ├── routes.py
│ └── scrapper.py
├── generate_blogpost
│ ├── __pycache__
│ ├── controller.py
│ ├── routes.py
│ ├── scraper.py
│ └── utils.py
├── generate_blogpost_trivia
│ ├── __pycache__
│ ├── controller.py
│ ├── routes.py
│ └── utils.py
├── images
│ ├── __pycache__
│ ├── controller.py
│ └── routes.py
├── keywords
│ ├── __pycache__
│ ├── controller.py
│ └── routes.py
├── movies
│ ├── __pycache__
│ ├── controller.py
│ └── routes.py
├── personal_opinion
│ ├── __pycache__
│ ├── controller.py
│ └── routes.py
├── requirements.txt
├── runtime.txt
├── spotify
│ ├── __pycache__
│ └── controller.py
├── test_mongo_connection.py
├── utils.py
├── venv
│ ├── bin
│ ├── include
│ ├── lib
│ └── pyvenv.cfg
└── write_review
├── __pycache__
├── controller.py
└── routes.py