Um painel que junta Prime Video, SkyShowtime, Apple TV+, Disney+, Netflix e HBO Max num só sítio, com estreias a contar 5 dias, nota TMDB em cada cartão, trailers no hover e os providers que tu escolhes.
Se és como eu, tens mais do que uma subscrição de streaming e perdes-te a tentar lembrar onde está aquele filme. Quando um título novo entra no catálogo, ninguém te avisa — até agora.
Nasceu o Qoder Streaming: um painel web (dark mode, claro) que agrega o catálogo de várias plataformas em Portugal usando os dados oficiais do TMDB, e te diz, com badges verdes/vermelhos, o que está disponível em cada serviço.
O problema
Cinco apps, cinco pesquisas, zero memória. "Este filme está na Prime? Na SkyShowtime? Ou saiu e já não está em lado nenhum?" E as novidades? Espalhadas por notificações que ninguém lê.
A ideia… o prompt que deu origem a tudo
A missão nasceu de um único pedido:
"Quero um sistema web local que agregue os catálogos de streaming disponíveis em Portugal (Prime Video, SkyShowtime, Apple TV+, Disney+) usando a API gratuita do TMDB. Deve mostrar onde cada filme/série está disponível em PT, permitir pesquisar por título ou IMDb ID, marcar como 'visto/interesse/por ver', e sincronizar o catálogo automaticamente. Tudo a correr localmente, sem contas, sem publicidade, com um dashboard dark mode simples."
A partir daí, cada conversa adicionou um módulo — o projeto cresceu em camadas, uma pergunta de cada vez.
O pedido original pedia também a preparação da arquitetura: que agentes e sub-agentes seriam necessários, ferramentas MCP e tudo o mais que fosse preciso para o projeto, seguindo boas práticas de vibecoding: ficheiros pequenos e reutilizáveis, código organizado e gestão de logs para se perceber de onde vêm os erros.
O que faz por ti
Pesquisa instantânea — escreve um título ou cola um ID IMDb (
tt0944947) e vês logo em que plataforma de streaming está disponível em Portugal.Novidades = estreias com menos de 5 dias, um filme é novidade se estreou há menos de 5 dias; uma série é novidade se o último episódio saiu há menos de 5 dias (uma nova temporada, tipo Ted Lasso S4, aparece na hora). Nada de catálogo inteiro a piscar: quando é novidade, o chip do streamer acende e o cartão ganha um badge com um brilho pulsante discreto.
Trailer no hover, passas o rato por cima do cartão e, além da sinopse, tens um botão "Ver trailer" que abre o vídeo oficial num modal. Pesquisado uma única vez e guardado em cache local.
Classificação TMDB em cada cartão, a nota média (⭐) aparece logo no cartão, para decidires num relance se vale a pena; no detalhe vês também o número de votos.
Providers à tua escolha (⚙️ Configuração), abres a roda dentada e tens checkboxes com todos os serviços disponíveis em Portugal (Prime, SkyShowtime, Apple TV+, Disney+, Netflix e HBO Max), já assinalados. Desmarcas o que não assinas, gravas, e a aplicação adapta-se na hora: chips, contagens, pesquisa e ligações. A escolha fica guardada no
.enve sobrevive a reinícios.Gestão pessoal, marca títulos como Com Interesse, Visto ou Por Ver.
Filtros inteligentes, Todos, Novidades, Escondidos, Melhores, Mais vistos, Filmes e Séries.
Paginação, em vez de "carregar mais", navegação por páginas (1 2 3 4 5 … 87 88), com os totais sempre à vista.
Deeplinks por serviço, "Abrir Prime ↗" leva-te à página certa; onde os serviços não expõem pesquisa pública (SkyShowtime, Disney+, Max), abre a página inicial do serviço, testado e corrigido.
Uma espécie de JustWatch só para Portugal?
Sim… e não. É um agregador de disponibilidade em streaming para Portugal, como o JustWatch, mas com filosofia oposta:
Qoder Streaming | JustWatch | |
|---|---|---|
Foco | Catálogo PT de 4–6 serviços (à tua escolha) | 40+ serviços, 100+ países, milhões de títulos |
Dados | TMDB (grátis, 1 chave) + SQLite local | Equipas dedicadas, feed comercial, compara preços |
Privacidade | 100% local — sem conta, sem tracking, sem ads | Conta obrigatória para features, recolhe dados |
Custo | €0 (TMDB free tier; roda no teu PC) | Grátis com premium upsell; API de dados paga |
Personalização | Providers à escolha, janela de novidades, UI própria, código teu | Fixo, decidido por eles |
Extras | Trailers, estados, dark mode, paginação, MCP | Notificações, sync de lista, apps mobile, avaliações |
Limitações | Sem preços, sem apps mobile, sem "também vais gostar" | — |
Vantagens nossas: privacidade total, zero custo, personalização absoluta, tudo o que se pediu foi feito em dias: estreias com menos de 5 dias, trailers, classificação nos cartões, paginação, e agora a Configuração com checkboxes. UI 100% PT, e o projeto é teu, o JustWatch não te deixa mudar nada.
Desvantagens honestas: não mostra preços (só disponibilidade), o catálogo vem do que o TMDB descobre em Portugal (~2 000 títulos, o JustWatch tem muito mais), sem apps móveis e sem notificações. E a manutenção é tua: as plataformas mudam URLs, vimos isso com a Sky e a Disney.
Como funciona por dentro
Uma arquitetura limpa baseada em agentes (com MCP — o mesmo protocolo de IA):
TMDB API (grátis)
|
v
+------------------------------+
| MASTER ORCHESTRATOR AGENT |
| (coordena sub-agentes + |
| eventos + MCP) |
+------------------------------+
| |
+-------v-------+ +-----v---------+
| TMDB/IMDb | | Sync Agent |
| Agent | | /discover PT |
| pesquisa + | | + deltas |
| trailer | | |
+-------+-------+ +-------+-------+
| |
+---------+---------+
|
+-----------------v-----------------+
| Database Manager (SQLite async) |
| títulos · disponibilidade · |
| estados · trailers |
+-----------------^-----------------+
|
+-------v-------+
| API FastAPI + |
| WebSocket |
+-------^-------+
|
Dashboard dark mode
(HTML/CSS/JS puro)Fluxo: o Sync Agent varre o TMDB (/discover com watch_region=PT e os providers ativos) → guarda tudo no SQLite → a API serve a UI → quando passas o rato num cartão, pede o trailer ao TMDB (em cache localmente para nunca repetir).
As bibliotecas, sim, instala-se, mas são só 9
Requisitos: Python 3.11+ + chave TMDB grátis (2 minutos em themoviedb.org).
Biblioteca | Para quê |
|---|---|
| API web + servidor |
| Base de dados SQLite assíncrona |
| Chamadas à API do TMDB |
| Configuração e validação ( |
| Logs estruturados — consola colorida + JSON diário (rotação 1 dia, retenção 7 dias) |
| Certificados SSL do Windows (redes com interceção) |
Nada de React, Docker ou bases de dados externas — corre em qualquer PC com Python.
Os passos que construíram os módulos
Núcleo — FastAPI + SQLite + sync básico do catálogo PT (4 providers) e dashboard.
Arquitetura de agentes — orquestrador + sub-agentes TMDB/Sync/DB (cada ficheiro < ~200 linhas) + ferramentas MCP.
Sync inteligente — varredura periódica com deltas (entrou/saiu) e progresso em tempo real via WebSocket.
Estados pessoais — ⭐ Com Interesse / ✅ Visto / 👁️ Por Ver + estatísticas.
Pesquisa instantânea — por título ou IMDb ID, com badges de disponibilidade PT.
Deeplinks — botão "Abrir {serviço} ↗" por serviço ativo.
Novidades — estreia (filme) ou último episódio (série) com menos de 5 dias.
Trailers no hover — descoberta no TMDB + cache local (e as correções: sem filtro de idioma + fallback à temporada 1).
Providers configuráveis — Netflix e HBO Max ligam-se no
.env(PROVIDER_IDS=119,337,8).Paginação —
1 2 3 4 5 … 87 88em vez de "carregar mais".Ajustes finos — deeplinks corrigidos (Sky/Disney/Max já não têm URL de pesquisa público → abrem a home).
Configuração (⚙️) — módulo com checkboxes das principais plataformas de streaming de Portugal, pré-assinalados: o utilizador final escolhe os serviços que assina e tudo se adapta na hora, com persistência no
.env.Polimento visual — classificação TMDB (⭐) em cada cartão e brilho das novidades mais suave: um pulso lento e discreto em vez do neon forte.
O que não faz (aviso honesto)
Os deeplinks abrem a pesquisa (ou a home) do serviço com o título, os browsers não conseguem "disparar" o filme diretamente noutra app (DRM e ausência de API universal). É o máximo que a web permite, e é suficiente: um clique e estás dentro do serviço.
Como correr em casa
Todo o código está em aberto: https://github.com/luisd72/Qoder-Streaming
Windows — um clique: entra na pasta do projeto e faz duplo clique em start.bat (cria o .venv se faltar, instala as 9 bibliotecas, gera o .env se faltar e abre o browser).
Ou manualmente — sempre DENTRO da pasta do projeto (é lá que estão o requirements.txt e a pasta app):
cd C:\projetos\Qoder-Streaming
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env # coloca a tua TMDB_API_KEY
.venv\Scripts\python.exe -m uvicorn app.main:appAbre http://127.0.0.1:8000 (se a porta estiver ocupada, arranca na 8001) e o catálogo sincroniza-se sozinho (6h por defeito, botão manual incluído). Depois é só abrir a ⚙️ e assinalar os serviços que assinas.
⚠️ Não corras os comandos a partir da pasta pessoal (C:\Users\...) nem uses o Python do sistema: o .venv é obrigatório (o Python global costuma ter pydantic v1 incompatível — erro cannot import name 'IncEx').
O que vem a seguir?
Notificações quando uma novidade entra, listas partilhadas e, quem sabe, integração com o teu calendário, ainda não decidi. O projeto é modular de propósito — cada peça cabe num ficheiro com menos de 200 linhas, fácil de estender.
Qoder Streaming, o teu painel, os teus providers, zero adivinhas.
Código aberto: github.com/luisd72/Qoder-Streaming"
