Ir para o conteúdo principal

A CLI do Immich

O Immich possui uma interface de linha de comando (CLI) que permite executar certas ações diretamente na linha de comando.

Funcionalidades

  • Fazer upload de fotos e vídeos para o Immich
  • Verificar a versão do servidor

Mais funcionalidades estão planejadas para o futuro.

Takeout do Google Fotos

Se você está procurando importar seu takeout do Google Fotos, recomendamos esta ferramenta mantida pela comunidade immich-go

Requisitos

  • Node.js 20 ou superior
  • Npm

Se você não conseguir instalar o node/npm, uma versão do Docker também está disponível abaixo.

Instalação (NPM)

npm i -g @immich/cli

NOTA: se você instalou anteriormente a CLI legada, será necessário desinstalá-la primeiro:

npm uninstall -g immich

Instalação (Docker)

Se o npm não estiver disponível em seu sistema, você pode tentar a versão do Docker

docker run -it -v "$(pwd)":/import:ro -e IMMICH_INSTANCE_URL=https://your-immich-instance/api -e IMMICH_API_KEY=your-api-key ghcr.io/immich-app/immich-cli:latest

Por favor, ajuste as variáveis de ambiente IMMICH_INSTANCE_URL e IMMICH_API_KEY conforme necessário. Você também pode usar um arquivo de ambiente do Docker para armazenar sua chave de API sensível.

Este comando docker run executará diretamente o comando immich dentro do container. Você pode adicionar diretamente os parâmetros desejados (veja em "uso") à linha de comando desta maneira:

docker run -it -v "$(pwd)":/import:ro -e IMMICH_INSTANCE_URL=https://your-immich-instance/api -e IMMICH_API_KEY=your-api-key ghcr.io/immich-app/immich-cli:latest upload -a -c 5 --recursive directory/

Uso

Uso
$ immich
Uso: immich [options] [command]

Interface de linha de comando para o Immich

Opções:
-V, --version exibe a versão
-d, --config-directory <directory> Diretório de configuração onde auth.yml será armazenado (padrão: "~/.config/immich/", env:
IMMICH_CONFIG_DIR)
-u, --url [url] URL do servidor Immich (env: IMMICH_INSTANCE_URL)
-k, --key [key] Chave de API do Immich (env: IMMICH_API_KEY)
-h, --help exibe ajuda para comando

Comandos:
login|login-key <url> <key> Fazer login usando uma chave de API
logout Remover credenciais armazenadas
server-info Exibir informações do servidor
upload [options] [paths...] Fazer upload de arquivos
help [command] exibe ajuda para comando

Comandos

O comando de upload suporta as seguintes opções:

Opções
Uso: immich upload [paths...] [options]

Fazer upload de arquivos

Argumentos:
paths Um ou mais caminhos para arquivos a serem enviados

Opções:
-r, --recursive Recursivo (padrão: false, env: IMMICH_RECURSIVE)
-i, --ignore <pattern> Padrão a ignorar (env: IMMICH_IGNORE_PATHS)
-h, --skip-hash Não calcular hash dos arquivos antes do upload (padrão: false, env: IMMICH_SKIP_HASH)
-H, --include-hidden Incluir pastas ocultas (padrão: false, env: IMMICH_INCLUDE_HIDDEN)
-a, --album Criar automaticamente álbuns com base no nome da pasta (padrão: false, env: IMMICH_AUTO_CREATE_ALBUM)
-A, --album-name <name> Adicionar todos os arquivos ao álbum especificado (env: IMMICH_ALBUM_NAME)
-n, --dry-run Não realizar nenhuma ação, apenas mostrar o que será feito (padrão: false, env: IMMICH_DRY_RUN)
-c, --concurrency <number> Número de arquivos para enviar simultaneamente (padrão: 4, env: IMMICH_UPLOAD_CONCURRENCY)
-j, --json-output Exibir informações detalhadas em formato json (padrão: false, env: IMMICH_JSON_OUTPUT)
--delete Excluir arquivos locais após o upload (env: IMMICH_DELETE_ASSETS)
--no-progress Ocultar barras de progresso (env: IMMICH_PROGRESS_BAR)
--watch Monitorar alterações e enviar automaticamente (padrão: false, env: IMMICH_WATCH_CHANGES)
--help exibir ajuda para comando

Observe que as opções acima também podem ser lidas a partir de variáveis de ambiente.

Início Rápido

Você começa se autenticando no servidor Immich. Por exemplo:

# immich login [url] [key]
immich login http://192.168.1.216:2283/api HFEJ38DNSDUEG

Isso armazenará suas credenciais em um arquivo auth.yml no diretório de configuração, que por padrão é ~/.config/immich/. O diretório pode ser definido com a opção -d ou a variável de ambiente IMMICH_CONFIG_DIR. Por favor, mantenha o arquivo seguro, seja executando o comando logout após o uso ou excluindo-o manualmente.

Após se autenticar, você pode enviar arquivos para o servidor Immich.

immich upload file1.jpg file2.jpg

Por padrão, subpastas não são incluídas. Para enviar um diretório incluindo subpastas, use a opção --recursive:

immich upload --recursive directory/

Se você não tiver certeza do que acontecerá, pode usar a opção --dry-run para ver o que seria feito sem realmente executar as ações.

immich upload --dry-run --recursive directory/

Por padrão, o comando de upload calculará o hash dos arquivos antes de enviá-los. Isso evita o envio do mesmo arquivo várias vezes. Se você tiver certeza de que os arquivos são únicos, pode pular esta etapa passando a opção --skip-hash. Observe que o Immich sempre realiza sua própria desduplicação através de hashing, então isso é apenas uma consideração de desempenho. Se você tiver uma boa largura de banda, pode ser mais rápido pular o hashing.

immich upload --skip-hash --recursive directory/

Você pode criar automaticamente álbuns com base no nome da pasta passando a opção --album. Isso criará automaticamente álbuns para cada arquivo enviado com base no nome da pasta onde estão.

immich upload --album --recursive directory/

Você também pode escolher enviar todos os arquivos para um álbum específico usando a opção --album-name.

immich upload --album-name "Minhas férias de verão" --recursive directory/

É possível ignorar arquivos que correspondam a um padrão glob passando a opção --ignore. Consulte a documentação da biblioteca sobre como usar padrões glob. Você pode adicionar vários padrões de exclusão se necessário.

immich upload --ignore **/Raw/** --recursive directory/
immich upload --ignore **/Raw/** **/*.tif --recursive directory/

Por padrão, arquivos ocultos são ignorados. Se você deseja incluir arquivos ocultos, use a opção --include-hidden:

immich upload --include-hidden --recursive directory/

Você pode usar a opção --json-output para obter um json impresso que inclui três chaves: newFiles, duplicates e newAssets. Devido a algum log de saída, será necessário remover as três primeiras linhas de saída para obter o json. Por exemplo, para obter uma lista de arquivos que seriam enviados para processamento posterior:

immich upload --dry-run . | tail -n +4 | jq .newFiles[]

Obter a Chave de API

A chave de API pode ser obtida no painel de configurações do usuário na interface web.

Obter Chave de API