Skip to content

🎬 The backend for Movie-Search Project. This code provides endpoints for querying data ingested into MongoDB from bulk data provided by IMDb.

Notifications You must be signed in to change notification settings

francisdiasbr/movie-search-backend

Repository files navigation

🎬 movie-search-backend

đź“‘ ĂŤndice


VisĂŁo Geral

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/)

🛠️ Frameworks e Bibliotecas Principais

  • 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

🗄️ Banco de Dados

  • MongoDB: Banco de dados NoSQL para persistĂŞncia de dados

🔌 Integrações com APIs Externas

  • 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

🖥️ Ambiente de Desenvolvimento

  • 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)

Base de dados

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.

Movie Basics

É 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)

MĂłdulos do sistema

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.

Favoritos

  • 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

Generate Blogpost: resenhas de filmes geradas por IA

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.

Write Review: resenhas autorais

  • 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.

Directors: favorita os diretores

API

API Documentation

3. Documentação da API (Open API / Swagger)

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

Como Testar Requisições no Swagger UI

  1. Acesse a documentação Swagger em http://localhost:5001/docs

  2. Localize o endpoint que deseja testar (ex: /movies/search)

  3. 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
  4. 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}

Instalação e Configuração

1. Configuração do Ambiente

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

2. Variáveis de Ambiente

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.

Rodando o Projeto (subindo a API)

python3 app.py

A API estará disponível em `http://localhost:5001`

Tech stack

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.

Estrutura do Projeto

.
├── 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

About

🎬 The backend for Movie-Search Project. This code provides endpoints for querying data ingested into MongoDB from bulk data provided by IMDb.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages