adicionado o readme
This commit is contained in:
178
README.md
Normal file
178
README.md
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
🎬 PyMedia Manager
|
||||||
|
|
||||||
|
PyMedia Manager é uma solução completa e self-hosted para organização e otimização de bibliotecas de mídia. Ele atua como uma interface centralizada para gerenciar downloads, renomear séries automaticamente com padrões complexos e transcodificar vídeos usando aceleração de hardware.
|
||||||
|
|
||||||
|
Otimizado para: Processadores Intel antigos (4ª Geração / Haswell) utilizando drivers i965 e FFmpeg via VAAPI nativo.
|
||||||
|
|
||||||
|
✨ Funcionalidades
|
||||||
|
1. 📂 Gerenciador de Arquivos
|
||||||
|
|
||||||
|
Navegação visual estilo "Explorer" dentro do servidor.
|
||||||
|
|
||||||
|
Mover, Excluir e Criar pastas.
|
||||||
|
|
||||||
|
Renomeação manual de arquivos individuais.
|
||||||
|
|
||||||
|
2. 🏷️ Renomeador de Séries (Regex)
|
||||||
|
|
||||||
|
Detecção inteligente de padrões (Scene, Anime, P2P).
|
||||||
|
|
||||||
|
Suporta: S01E01, 1x01, S01 - EP01, Season 1 Episode 1.
|
||||||
|
|
||||||
|
Tabela de Preview antes de aplicar alterações.
|
||||||
|
|
||||||
|
Organização automática: Move para Nome da Série/Temporada XX/Episódio YY.mkv.
|
||||||
|
|
||||||
|
3. ⚙️ Encoder (FFmpeg Haswell)
|
||||||
|
|
||||||
|
Backend Persistente: O processo continua rodando mesmo se fechar o navegador (sobrevive ao F5).
|
||||||
|
|
||||||
|
Aceleração de Hardware: Uso nativo de h264_vaapi sobre o driver i965.
|
||||||
|
|
||||||
|
Preservação de Áudio/Legenda: Mantém áudios (POR/ENG/JPN) e legendas (PT-BR) copiando o stream (copy), sem perda de qualidade.
|
||||||
|
|
||||||
|
Estrutura Espelhada: Replica a estrutura de pastas da origem para a pasta finalizados.
|
||||||
|
|
||||||
|
🚀 Instalação e Deploy
|
||||||
|
Pré-requisitos
|
||||||
|
|
||||||
|
Docker e Docker Compose instalados.
|
||||||
|
|
||||||
|
Hardware Intel com iGPU ativa (QuickSync).
|
||||||
|
|
||||||
|
Drivers de vídeo no host (/dev/dri).
|
||||||
|
|
||||||
|
1. Clonar o Repositório
|
||||||
|
code Bash
|
||||||
|
|
||||||
|
git clone http://seu-gitea-url/seu-usuario/pymediamanager.git
|
||||||
|
cd pymediamanager
|
||||||
|
|
||||||
|
2. Estrutura de Pastas
|
||||||
|
|
||||||
|
O projeto deve ter a seguinte estrutura básica. Crie as pastas de dados se não existirem:
|
||||||
|
code Bash
|
||||||
|
|
||||||
|
mkdir -p data
|
||||||
|
mkdir -p downloads/concluidos
|
||||||
|
mkdir -p downloads/temp
|
||||||
|
mkdir -p downloads/finalizados
|
||||||
|
|
||||||
|
3. Permissões (Crítico)
|
||||||
|
|
||||||
|
Como o container precisa manipular arquivos no host, garanta permissões de escrita na pasta do projeto e nas pastas de mídia:
|
||||||
|
code Bash
|
||||||
|
|
||||||
|
# Dá permissão na pasta do projeto
|
||||||
|
sudo chmod -R 777 .
|
||||||
|
|
||||||
|
# Dá permissão na sua pasta de downloads (ajuste o caminho conforme necessário)
|
||||||
|
sudo chmod -R 777 /home/seu-usuario/downloads
|
||||||
|
|
||||||
|
4. Configuração do docker-compose.yml
|
||||||
|
|
||||||
|
Crie ou edite o arquivo docker-compose.yml na raiz:
|
||||||
|
code Yaml
|
||||||
|
|
||||||
|
version: "3.8"
|
||||||
|
services:
|
||||||
|
pymediamanager:
|
||||||
|
build: .
|
||||||
|
container_name: pymediamanager
|
||||||
|
privileged: true # Necessário para acesso total ao hardware
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
# Mapeamento da Placa de Vídeo
|
||||||
|
devices:
|
||||||
|
- /dev/dri:/dev/dri
|
||||||
|
|
||||||
|
# Permissão do Grupo de Vídeo (Geralmente 993, 109 ou 'render')
|
||||||
|
# Rode 'ls -ln /dev/dri' no host para descobrir o número correto do grupo render
|
||||||
|
group_add:
|
||||||
|
- "993"
|
||||||
|
|
||||||
|
environment:
|
||||||
|
- TZ=America/Sao_Paulo
|
||||||
|
# FORÇA O DRIVER ANTIGO PARA INTEL HASWELL (4ª GERAÇÃO)
|
||||||
|
- LIBVA_DRIVER_NAME=i965
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# Código Fonte
|
||||||
|
- ./app:/app
|
||||||
|
# Banco de Dados e Estados
|
||||||
|
- ./data:/app/data
|
||||||
|
# Pastas de Mídia (Ajuste o lado esquerdo para o seu caminho real)
|
||||||
|
- /home/creidsu/downloads:/downloads
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- 8501:8501
|
||||||
|
|
||||||
|
5. Compilar e Rodar
|
||||||
|
|
||||||
|
Para subir o sistema pela primeira vez ou após alterações no código:
|
||||||
|
code Bash
|
||||||
|
|
||||||
|
docker-compose up -d --build
|
||||||
|
|
||||||
|
Para acompanhar os logs em tempo real (útil para ver o FFmpeg trabalhando):
|
||||||
|
code Bash
|
||||||
|
|
||||||
|
docker logs -f pymediamanager
|
||||||
|
|
||||||
|
🖥️ Como Usar
|
||||||
|
|
||||||
|
Acesse no seu navegador: http://IP-DO-SERVIDOR:8501
|
||||||
|
Aba 1: Gerenciador
|
||||||
|
|
||||||
|
Use para limpar o "lixo" da pasta de downloads ou mover arquivos para pastas de séries antes de renomear.
|
||||||
|
Aba 2: Renomeador
|
||||||
|
|
||||||
|
Selecione a pasta da série (ex: /downloads/Frieren).
|
||||||
|
|
||||||
|
Clique em Analisar.
|
||||||
|
|
||||||
|
Verifique a tabela de "De -> Para".
|
||||||
|
|
||||||
|
Se estiver correto, clique em Confirmar.
|
||||||
|
|
||||||
|
Aba 3: Encoder
|
||||||
|
|
||||||
|
Selecione a pasta raiz ou a pasta da série.
|
||||||
|
|
||||||
|
Marque se deseja excluir o original após o sucesso.
|
||||||
|
|
||||||
|
Clique em Iniciar.
|
||||||
|
|
||||||
|
Pode fechar a aba! O processo roda em background. Ao voltar, ele mostrará o progresso atual lendo o arquivo de estado.
|
||||||
|
|
||||||
|
🛠️ Solução de Problemas (Troubleshooting)
|
||||||
|
|
||||||
|
Erro: Permission denied ao mover arquivos.
|
||||||
|
|
||||||
|
Execute sudo chmod -R 777 /sua/pasta/downloads no host. O Docker precisa de permissão total para criar pastas e mover arquivos.
|
||||||
|
|
||||||
|
Erro: Failed to initialise VAAPI connection no log.
|
||||||
|
|
||||||
|
Isso geralmente é conflito de driver. O sistema foi projetado para apagar automaticamente o driver iHD (novo) e usar o i965 (antigo).
|
||||||
|
|
||||||
|
Verifique se LIBVA_DRIVER_NAME=i965 está no docker-compose.
|
||||||
|
|
||||||
|
Verifique se o seu processador é realmente Haswell/Broadwell (Gen 4/5). Se for mais novo (Gen 8+), remova a variável de ambiente e o código de limpeza de driver.
|
||||||
|
|
||||||
|
Erro: Docker não sobe (group render not found).
|
||||||
|
|
||||||
|
O ID do grupo render muda de Linux para Linux.
|
||||||
|
|
||||||
|
Rode ls -ln /dev/dri/renderD128. O segundo número (ex: 993, 107) é o ID do grupo. Coloque esse número em group_add no docker-compose.
|
||||||
|
|
||||||
|
📝 Tecnologias
|
||||||
|
|
||||||
|
Python 3.10+
|
||||||
|
|
||||||
|
Streamlit (Interface Web)
|
||||||
|
|
||||||
|
FFmpeg (Engine de Transcodificação)
|
||||||
|
|
||||||
|
SQLite (Banco de Dados Local)
|
||||||
|
|
||||||
|
Docker (Containerização)
|
||||||
Reference in New Issue
Block a user