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