Controle a reprodução de mídia do seu Windows via navegador (iOS/Android/PC) com uma interface web simples.
- Controles: Play/Pause, Próxima Faixa, Faixa Anterior
- Controle de volume do sistema (Windows)
- Informações básicas da faixa (mock)
- Interface responsiva em templates/player.html
- Python 3.12
- Windows 10/11
- Mesmo Wi‑Fi para acessar via rede local
- Web: Flask
- Mídia/Teclas: keyboard
- Volume (Windows): pycaw + comtypes
- HTTP: requests
Arquivos principais:
- Entrada: main.py → chama
server.run - App Flask: server.py
- Página: templates/player.html
- Config do projeto: pyproject.toml
-
Instale o uv (https://docs.astral.sh/uv/getting-started/)
-
Adicione as dependências ao projeto:
uv add flask requests keyboard pycaw comtypes- (Opcional) Defina variáveis de ambiente:
- API_KEY: token do Genius (se desejar buscar letras)
- SERVER_IP: IP de bind (padrão: 0.0.0.0)
- PORT: porta (padrão: 5000)
- FLASK_DEBUG: 1/0 para habilitar/disable debug (padrão: 1)
Exemplos:
- PowerShell:
$env:API_KEY="seu_token"
$env:SERVER_IP="0.0.0.0"
$env:PORT="5000"
$env:FLASK_DEBUG="1"- CMD:
set API_KEY=seu_token
set SERVER_IP=0.0.0.0
set PORT=5000
set FLASK_DEBUG=1- Bash:
export API_KEY=seu_token
export SERVER_IP=0.0.0.0
export PORT=5000
export FLASK_DEBUG=1Observação: Um arquivo .env não é carregado automaticamente pelo código atual. Para usá-lo, instale python-dotenv e carregue-o no início de server.py.
- Com uv:
uv run python main.py- Python puro:
python main.pyAcesse no navegador:
- Local: http://localhost:5000
- Rede: http://SEU_IP:5000
- GET
/→ Renderiza templates/player.html - GET
/track-info→ JSON com info da faixa mock - POST
/control→ body:{"action":"playpause"|"next"|"previous"} - POST
/volume→ body:{"level": 0..100}
Implementação no app:
- Entrada:
main.main - Servidor:
server.app,server.run
- Em alguns sistemas, para enviar teclas de mídia com
keyboard, pode ser necessário executar como Administrador. pycawfunciona apenas em Windows.- O campo de letras depende de
API_KEYdo Genius e implementação adicional de scraping/parse.
MIT
Feito com ❤️ por Iago Leal | [☕ Apoie o criador]
Se este projeto ajudou você, considere apoiar:
- Buy Me a Coffee: https://buymeacoffee.com/psiagoleal
