diff --git a/README.md b/README.md new file mode 100644 index 0000000..4a843cd --- /dev/null +++ b/README.md @@ -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) \ No newline at end of file