Uma ferramenta de produtividade MakeMKV + HandBrake.
HandyMKV é uma ferramenta projetada para automatizar o processo de extração de discos usando MakeMKV e depois codificar os arquivos resultantes usando Handbrake.
Achei o processo de extração manual usando MakeMKV e depois codificação usando HandBrake demorado, desarticulado e sujeito a erros. Eu queria uma ferramenta que automatizasse o processo e proporcionasse uma experiência mais amigável. Além disso, eu queria descarregar o processo do meu computador desktop principal para o meu servidor doméstico, que não tem interface gráfica e não tem interface gráfica. HandyMKV foi criado para atender a essas necessidades.
À medida que desenvolvi o HandyMKV, descobri que era capaz de adicionar recursos que considerava úteis e que tornavam o processo mais rápido e fácil. Espero que outros considerem o HandyMKV útil e que isso lhes economize tempo e esforço.
- Extraia títulos de discos usando MakeMKV
- Codifique arquivos de vídeo usando HandBrake
- Opções de configuração flexíveis
- Exibição de progresso clara e concisa
- Simultaneidade para reduzir o tempo geral de processamento
- Resumo do espaço economizado e do tempo decorrido
- Limpeza automatizada de arquivos brutos não codificados
- Histórico de execução — navegue e inspecione sessões anteriores de extração/codificação
- Automações — execute scripts personalizados após a codificação com parâmetros provenientes de dados de execução, variáveis de ambiente ou prompts do usuário
- Análise de
HandBrakeCLIemakemkvconsaída para fornecer uma experiência mais amigável
Seu objetivo principal é economizar tempo e esforço, eliminando a natureza desconectada da execução dessas tarefas manualmente e/ou sequencialmente. A simultaneidade é usada para reduzir o tempo geral necessário para concluir o processo.
HandyMKV foi projetado para ser fácil de configurar e usar. Depois que uma configuração é criada, o processo de extração e codificação de um disco é simplificado para um único comando e alguns prompts.
A saída do processo é exibida de forma clara e concisa para manter o usuário informado sobre o andamento das tarefas.
HandyMKV foi projetado para ser flexível. O usuário pode selecionar quais títulos extrair do disco e configurar as opções de codificação para atender às suas necessidades. As opções de codificação podem ser configuradas de três maneiras:
- Usando opções de codificação simplificadas do HandyMKV – Essencialmente, uma coleção de configurações destinadas a abordar os casos de uso mais comuns. Essas configurações foram projetadas para serem fáceis de usar e entender. Eles são coletados por meio de uma série de prompts durante o processo de configuração com padrões sensatos (quando possível).
- Usando predefinições integradas do HandBrake – HandyMKV pode ser configurado para usar uma predefinição específica do HandBrake integrada. Esta opção é para usuários familiarizados com o HandBrake e que possuem uma predefinição específica que desejam usar.
- Usando um arquivo predefinido personalizado do HandBrake – HandyMKV pode ser configurado para usar um arquivo predefinido personalizado do HandBrake. Esta opção oferece o controle mais granular sobre o processo de codificação, mas exige que o usuário crie um arquivo predefinido do HandBrake.
Sistemas operacionais suportados
HandyMKV foi projetado para funcionar em Windows, MacOS e Linux.
MakeMKV é uma ferramenta usada para copiar o conteúdo de um disco para um arquivo no sistema local. Nota: esta ferramenta não é gratuita e uma licença deve ser adquirida para uso.
Especificamente o makemkvcon comando é usado para interagir com MakeMKV a partir da linha de comando. O makemkvcon O comando deve estar no caminho do sistema para que o HandyMKV funcione.
MakeMKV pode ser baixado aqui.
A documentação para makemkvcon pode ser encontrada aqui.
makemkvcon não está incluído no $PATH por padrão quando o MakeMKV é instalado. No entanto, o binário está incluído no pacote MakeMKV.app. O binário pode ser encontrado em /Applications/MakeMKV.app/Contents/MacOS/makemkvcon. Você pode adicionar isso ao seu $PATH ou criar um link simbólico para ele em um diretório que esteja no seu $PATH.
Handbrake é uma ferramenta usada para codificar arquivos de vídeo. O HandBrakeCLI O comando é usado para interagir com o Handbrake a partir da linha de comando. O HandBrakeCLI O comando deve estar no caminho do sistema para que o HandyMKV funcione.
O HandBrakeCLI pode ser instalado aqui. Nota: O uso do HandBrake é gratuito. Consulte o site do HandBrake para obter mais informações.
A documentação do HandBrakeCLI pode ser encontrada aqui. Isso não é necessário para uso com HandyMKV, mas é útil para contexto.
HandyMKV possui várias opções de linha de comando e subcomandos que podem ser usados para controlar seu comportamento.
Usage of handymkv:
-a string
Automations. A comma delimited list of automation names to run after encoding.
Example: -a move-to-plex,notify-discord
-d string
Discs. A comma delimited list of disc indexes to rip. Example: -d 0,1,2 (default "0")
-v Version. Prints the version of the application.
Subcommands:
config Show the current configuration.
config setup Run the configuration wizard.
config edit Open the config file in the default editor.
discs List available discs.
history Show a summary list of past runs.
history <number> Show details for a specific past run.
history clear Delete all manifest files from the run history directory.
automations List all saved automations.
automations create Create a new automation.
automations show <name> Show details of an automation.
automations delete <name> Delete an automation.Instalar script (Linux e macOS)
A maneira mais rápida de instalar o HandyMKV no Linux ou macOS é com o script de instalação:
curl -fsSL https://raw.githubusercontent.com/dmars8047/handymkv/release/install.sh | bashO script detecta automaticamente seu sistema operacional e arquitetura, baixa o binário apropriado da versão mais recente e o instala no /usr/local/bin (ou ~/.local/bin se /usr/local/bin não é gravável).
Binários pré-construídos estão disponíveis na página Releases para as seguintes plataformas:
- Linux (AMD64, ARM64)
- macOS (Intel, Apple Silicon)
- Janelas (AMD64, ARM64)
Baixe o binário apropriado para o seu sistema, coloque-o em um diretório no seu $PATHe você está pronto para começar.
HandyMKV pode ser instalado usando o go install comando:
go install github.com/dmars8047/handymkv/cmd/handymkv@latestIsso requer que o Go esteja instalado no sistema. Go pode ser instalado aqui.
Se você clonou o repositório, você pode construir o HandyMKV usando os comandos Makefile ou Go fornecidos diretamente.
O Makefile fornece alvos convenientes para construir HandyMKV para várias plataformas:
Construa para o seu sistema atual:
Isso criará um binário em bin/handymkv (ou bin/handymkv.exe no Windows).
Instale em seu GOPATH/bin:
Isso instala o binário no diretório Go bin, disponibilizando-o em todo o sistema.
Compilação cruzada para todas as plataformas suportadas:
Isso cria binários para Linux, macOS e Windows (arquiteturas AMD64 e ARM64) em subdiretórios separados em bin/.
Compilação cruzada para uma plataforma específica:
make linux-amd64 # Linux AMD64
make linux-arm64 # Linux ARM64
make darwin-amd64 # macOS Intel
make darwin-arm64 # macOS Apple Silicon
make windows-amd64 # Windows AMD64
make windows-arm64 # Windows ARM64Artefatos de construção limpos:
Veja todos os alvos disponíveis:
Usando comandos Go diretamente
Alternativamente, você pode construir usando comandos Go:
# Build for current system
go build -o bin/handymkv ./cmd/handymkv
# Install to GOPATH/bin
go install ./cmd/handymkv
# Cross-compile (example for Linux AMD64)
GOOS=linux GOARCH=amd64 go build -o bin/linux-amd64/handymkv ./cmd/handymkvO primeiro passo é criar um arquivo de configuração. Isso pode ser feito executando o seguinte comando:
Isso iniciará o assistente de configuração. Ele solicitará configurações de codificação e várias configurações operacionais. Depois de salva, a configuração será armazenada em um arquivo chamado config.json. A localização desse arquivo depende se a configuração para todo o usuário ou para todo o diretório é usada.
- Em sistemas Unix, o arquivo de configuração de todo o usuário é armazenado em ‘~/.config/handymkv/config.json’.
- Em sistemas Windows, o arquivo de configuração de todo o usuário é armazenado em ‘%APPDATA%\handymkv\config.json’.
Em seguida, para extrair e codificar um disco, execute o seguinte comando:
Isso primeiro lerá os títulos do disco e solicitará que você selecione quais títulos deseja copiar. Os títulos são selecionados fornecendo o índice de cada título. Vários títulos podem ser selecionados fornecendo uma lista delimitada por vírgulas. Exemplo: 0, 1, 3,4. Depois de selecionar os títulos a serem copiados, o processo começará. O andamento do processo será exibido no terminal.
Assim que o processo for concluído, um resumo será exibido mostrando o espaço economizado e o tempo necessário para concluir o processo.
Todos os arquivos de saída serão armazenados no diretório especificado no arquivo de configuração.
Nota: Se houver um config.json arquivo no diretório de trabalho em tempo de execução, esse arquivo será usado em vez do arquivo de configuração de todo o usuário.
Após cada execução, HandyMKV grava um arquivo de manifesto registrando o que foi copiado e codificado, tamanhos de arquivo, durações e se os arquivos MKV brutos foram excluídos. Esses manifestos podem ser navegados a qualquer momento com o history subcomando.
Liste todas as execuções anteriores:
Inspecione uma execução específica:
Limpe todo o histórico salvo:
Isso mostrará o número de arquivos a serem excluídos e solicitará confirmação antes de continuar.
Por padrão, os arquivos de manifesto são armazenados junto com a configuração principal:
- Unix:
~/.config/handymkv/manifests/ - Windows:
%APPDATA%\handymkv\manifests\
Um diretório personalizado pode ser definido durante o assistente de configuração (handymkv config setup) ou configurando manifest_directory em config.json.
O histórico de execução pode ser totalmente desabilitado através do assistente de configuração ou definindo "disable_manifests": true em config.json. Quando desativado, handymkv history e handymkv history clear exibirá uma mensagem informativa em vez de tentar ler ou modificar arquivos de manifesto.
As automações permitem executar scripts ou comandos locais após o HandyMKV terminar a codificação. Cada automação é uma configuração autônoma que define um comando a ser executado e os parâmetros necessários. Os parâmetros podem ser obtidos de diferentes locais: solicitados em tempo de execução, padrões estáticos codificados ou preenchidos automaticamente a partir de dados de execução do HandyMKV.
Os scripts recebem seus parâmetros como variáveis de ambiente com o prefixo HMKV_PARAM_. Por exemplo, um parâmetro chamado destination_dir torna-se HMKV_PARAM_DESTINATION_DIR. As variáveis de ambiente foram escolhidas em vez dos argumentos de linha de comando para maximizar a compatibilidade entre linguagens de programação e sistemas operacionais — as convenções de análise de argumentos variam amplamente entre shells e tempos de execução (prefixos de sinalizadores, regras de cotação, manipulação de espaços em branco), enquanto as variáveis de ambiente são lidas da mesma maneira em todos os lugares.
handymkv automations # List all saved automations
handymkv automations create # Create a new automation (interactive wizard)
handymkv automations show <name> # Show details of an automation
handymkv automations delete <name># Delete an automationOs arquivos de automação são armazenados como JSON em:
- Unix:
~/.config/handymkv/automations/ - Windows:
%APPDATA%\handymkv\automations\
Nota Unix: Os scripts devem ser executáveis antes que o HandyMKV possa executá-los. Certifique-se de executar
chmod +x /path/to/your/script.shdepois de criar o script.
Use o -a flag para especificar automações por nome: handymkv -a move-to-plex,notify-discord
As automações são executadas após a conclusão da codificação. Se o mesmo nome for fornecido mais de uma vez, ele será executado apenas uma vez.
Ao criar uma automação, cada parâmetro possui um fonte que determina como seu valor é obtido:
| Fonte | Descrição |
|---|---|
prompt | Solicita um valor ao usuário antes do início da execução (suporta um padrão opcional) |
static | Usa um valor codificado — nunca solicita ao usuário |
hmkv_output | Preenchido automaticamente a partir dos dados de execução do HandyMKV após a conclusão da codificação |
Os scripts herdam o ambiente completo do sistema operacional, para que possam ler variáveis de ambiente (como chaves de API ou URLs de webhook) diretamente, sem precisar de um parâmetro dedicado.
| Chave | Valor |
|---|---|
hb_output_dir | Caminho absoluto para o diretório de saída do HandBrake para esta execução |
mkv_output_dir | Caminho absoluto para o diretório de saída bruto do MKV para esta execução |
run_duration | String de duração, por exemplo 12m34s |
title_count | Número de títulos processados (string inteira) |
raw_files_deleted | "true" ou "false" |
total_raw_size | Tamanho total dos arquivos MKV brutos em bytes (string inteira) |
total_encoded_size | Tamanho total dos arquivos de saída codificados em bytes (string inteira) |
Observação: Automações executadas antes arquivos MKV brutos são excluídos. Se o seu script precisar agir nos arquivos brutos (por exemplo, inspecioná-los ou movê-los), ele terá acesso a eles via
mkv_output_dir.
Exemplo: mover arquivos codificados para um diretório de mídia
Crie uma automação usando o script de exemplo incluído:
handymkv automations createConfigure-o com:
- Nome:
move-media - Comando:
/path/to/examples/automations/move-media.sh - Parâmetro 1:
encoded_dir(fonte:hmkv_outputchave:hb_output_dir) - Parâmetro 2:
media_dir(fonte:prompt) - Parâmetro 3:
group_name(fonte:staticvalor:mediaou o nome do seu grupo)
O script remove o final _t## identificador MakeMKV anexado a nomes de arquivos (por exemplo My_Movie_t00.mkv → My_Movie.mkv), define a propriedade e as permissões do grupo e move os arquivos para o diretório de destino.
Se um script de automação falhar (código de saída diferente de zero), HandyMKV imprime um aviso e continua com a próxima automação. Falhas de script nunca abortam o pipeline.
Running automations...
move-to-plex: OK
notify-discord: FAILED (exit code 1)
Os códigos de saída são registrados no manifesto de execução e ficam visíveis ao inspecionar o histórico com handymkv history .
Um exemplo de script de automação está disponível no repositório em examples/automations/. Ele demonstra todos os três tipos de origem de parâmetros: hmkv_output (diretório de saída codificado), prompt (diretório de mídia de destino) e static (nome do grupo).
HandyMKV suporta extração e codificação de vários discos em uma única execução. Esta opção destina-se a quando diversas unidades de disco estão disponíveis e conectadas ao host.
Durante essas execuções de vários discos, os arquivos de saída serão classificados em subdiretórios que indicam o disco de onde foram originados.
Para extrair e codificar vários discos, basta fornecer uma lista delimitada por vírgulas de índices de disco para o -d bandeira. Exemplo: handymkv -d 0,1,2.
Para ver uma lista de discos disponíveis, use o discs subcomando. Exemplo: handymkv discs.
HandyMKV tentará executar tarefas simultaneamente para reduzir o tempo total necessário para concluir o processo. No entanto, as tarefas de codificação consomem muitos recursos e a execução de múltiplas tarefas de codificação provavelmente retardará o processo geral. Da mesma forma, as tarefas de extração são prejudicadas pela velocidade da unidade de disco. Por esse motivo, o HandyMKV executará pipelines de extração e codificação simultaneamente, mas cada tarefa nesses pipelines será executada sequencialmente. Em execuções de vários discos, o processo de extração de cada unidade de disco será processado simultaneamente.
Se você achar o HandyMKV útil, considere apoiar o projeto:
Compre-me um café no Ko-fi
Fonte: theverge

