Immich-Go é uma ferramenta de código aberto projetada para agilizar o upload de grandes coleções de fotos para seu servidor Immich auto-hospedado.
Immich-go
:Tirando suas fotos:
Importando suas fotos:
/path/to/your/files/takeout-*.zip
como nome do arquivo.-google-photos
.Muitos arquivos não são importados : Quais são as opções?
-upload-when-missing-JSON
Para obter informações sobre o raciocínio por trás desta alternativa ao immich-cli
, leia a motivação aqui.
⚠️ Esta é uma versão inicial, ainda não testada extensivamente⚠️ Mantenha uma cópia de backup de seus arquivos por segurança
immich-go
O immich-go
é uma ferramenta de linha de comando que deve ser executada a partir de uma janela de terminal.
O programa immich-go
usa a API Immich. Portanto, ele precisa do endereço do servidor e de uma chave de API válida.
No Linux, macOS e amigos do FreeBSD:
./immich-go -server=URL -key=KEY -general_options COMMAND -command_options... {path/to/files}
Importante
Os usuários do macOS precisam permitir explicitamente a execução do immich-go. Abra Privacidade e segurança > Configurações de segurança para permitir
Em sistemas Windows:
.immich - go - server = URL - key = KEY - general_options COMMAND - command_options.. . {path / to / files}
As opções booleanas têm um valor padrão indicado abaixo. Mencionar qualquer opção na linha comum altera a opção para TRUE. Para forçar uma opção para FALSE, use a seguinte sintaxe: -option=FALSE
.
Exemplo: Immich-go verifique o certificado SSL do servidor. você pode desativar esse comportamento ativando a opção skip-verify-ssl
. Basta adicionar -skip-verify-ssl
. -skip-verify-ssl
é equivalente a -skip-verify-ssl=TRUE
. Para desativar o recurso (que é o comportamento padrão), use -skip-verify-ssl=FALSE
Parâmetro | Descrição | Valor padrão |
---|---|---|
-use-configuration=path/to/config/file | Especifica o arquivo de configuração a ser usado. A URL do servidor e a chave API são armazenadas no arquivo de configuração immich-go. Eles podem ser omitidos nas próximas execuções. | Linux $HOME/.config/immich-go/immich-go.json Windows %AppData%immich-goimmich-go.json macOS $HOME/Library/Application Support/immich-go/immich-go.json |
-server=URL | URL do serviço Immich, exemplo http://:2283 ou https://seu-domínio.tld | |
-api=URL | URL do endpoint da API Immich (http://container_ip:3301) | |
-device-uuid=VALUE | Forçar a identificação do dispositivo | $HOSTNAME |
-client-timeout=duration | Defina o tempo limite para chamadas do servidor. A duração é um número decimal com um sufixo de unidade, como "300ms", "1,5m" ou "45m". As unidades de tempo válidas são "ms", "s", "m", "h". | 5m |
-skip-verify-ssl | Ignorar a verificação SSL para uso com certificados autoassinados | false |
-key=KEY | Uma chave gerada pelo usuário. As fotos enviadas pertencerão ao proprietário da chave. | |
-log-level=LEVEL | Ajuste o detalhamento do log da seguinte maneira: - ERROR : Exibir apenas erros- WARNING : Igual ao anterior, mais erro sem bloqueio- INFO : Mensagens informativas | INFO |
-log-file=/path/to/log/file | Grave todas as mensagens em um arquivo | Linux $HOME/.cache/immich-go/immich-go_YYYY-MM-DD_HH-MI-SS.log Windows %LocalAppData%immich-goimmich-go_YYYY-MM-DD_HH-MI-SS.log macOS $HOME/Library/Caches/immich-go/immich-go_YYYY-MM-DD_HH-MI-SS.log |
-log-json | Produza o log como arquivo JSON delimitado por linha | false |
-time-zone=time_zone_name | Definir o fuso horário para datas sem informações de fuso horário | O fuso horário do sistema |
-no-ui | Desative a interface do usuário | false |
-debug-counters | Habilite a geração de um CSV ao lado do arquivo de log | false |
-api-trace | Habilitar rastreamento de chamadas de API | false |
upload
de comandoUse este comando para fazer upload de fotos e vídeos de um diretório local, uma pasta compactada ou todos os arquivos zip gerados pelo procedimento de retirada do Google Fotos.
Parâmetro | Descrição | Valor padrão |
---|---|---|
-album="ALBUM NAME" | Importe ativos para o álbum ALBUM NAME do Immich. | |
-dry-run | Visualize todas as ações como seriam realizadas. | FALSE |
-create-album-folder | Gere álbuns immich após nomes de pastas. | FALSE |
-use-full-path-album-name | Use o caminho completo do arquivo para determinar o nome do álbum. | FALSE |
-album-name-path-separator | Determina como múltiplas (sub)pastas, se houver, serão unidas | |
-create-stacks | Empilhe jpg/raw ou bursts. | FALSE |
-stack-jpg-raw | Controle o empilhamento de fotos jpg/raw. | FALSE |
-stack-burst | Controle as explosões de empilhamento. | FALSE |
-select-types=".ext,.ext,.ext..." | Lista de extensões aceitas. | |
-exclude-types=".ext,.ext,.ext..." | Lista de extensões excluídas. | |
-when-no-date=FILE|NOW | Quando a data da captura não puder ser determinada, use a data do ARQUIVO ou a hora atual AGORA. | FILE |
-exclude-files=pattern | Ignore arquivos com base em um padrão. Não diferencia maiúsculas de minúsculas. Repita a opção para cada padrão que você precisa. | @eaDir/ @__thumb/ SYNOFILE_THUMB_*.* Lightroom Catalog/ thumbnails/ |
Ajuste a importação com base em datas específicas:
Parâmetro | Descrição |
---|---|
-date=YYYY-MM-DD | importar fotos tiradas em um determinado dia. |
-date=YYYY-MM | selecione fotos tiradas durante um determinado mês. |
-date=YYYY | selecione fotos tiradas durante um determinado ano. |
Use -exclude-files=PATTERN
para excluir determinados arquivos ou diretórios do upload. Repita a opção para cada padrão que você precisa. Os seguintes diretórios são excluídos automaticamente:
Exemplo, o comando a seguir exclui quaisquer arquivos em diretórios chamados backup ou rascunho e qualquer arquivo com nome terminando com "cópia)" como PXL_20231006_063121958 (outra cópia).jpg:
immich-go -server=xxxxx -key=yyyyy upload -exclude-files=backup/ -exclude-files=draft/ -exclude=copy). * /path/to/your/files
Opções especializadas para gerenciamento do Google Fotos:
Parâmetro | Descrição | Valor padrão |
---|---|---|
-google-photos | importar de um arquivo estruturado do Google Fotos, recriando os álbuns correspondentes. | |
-from-album="GP Album" | Crie o álbum no immich e importe os ativos do álbum. | |
-create-albums | Controla a criação de álbuns do Google Fotos no Immich. | TRUE |
-keep-untitled-albums | Álbuns sem título são importados para immich com o nome da pasta como título. | FALSE |
-use-album-folder-as-name | Use o nome da pasta em vez do título do álbum. | FALSE |
-keep-partner | Especifica a inclusão ou exclusão de fotos tiradas por parceiros. | TRUE |
-partner-album="partner's album" | importar ativos do parceiro para um determinado álbum. | |
-discard-archived | não importe ativos arquivados. | FALSE |
-auto-archive | Arquivar automaticamente fotos que também estão arquivadas no Google Fotos | TRUE |
-upload-when-missing-JSON | Fazer upload de fotos não associadas a um arquivo de metadados JSON | FALSE |
Leia aqui para entender por que a entrega do Google Fotos não é fácil de manusear.
Atualmente as rajadas seguindo este esquema são detectadas:
Todas as imagens devem ser tiradas no mesmo minuto. A imagem COVER será a imagem pai da pilha
Ambas as imagens devem ser tiradas no mesmo minuto. A imagem JPG será a capa.
Abra um problema para cobrir mais possibilidades.
Para ilustrar, aqui está um comando que importa fotos de um arquivo para viagem do Google Fotos capturado entre 1º e 30 de junho de 2019, enquanto gera álbuns automaticamente:
./immich-go -server=http://mynas:2283 -key=zzV6k65KGLNB9mpGeri9n8Jk1VaNGHSCdoH1dY8jQ upload
-create-albums -google-photos -date=2019-06 ~ /Download/takeout- * .zip
Immich-go obtém os primeiros dados disponíveis na seguinte ordem.
photoTakenTime
PXL_20220909_154515546.jpg
PXL_20220909_154515546.jpg
/photos/2022/11/09/IMG_1234.HEIC
geoDataExif
geoData
locationEnrichment
do campo JSON do álbum do Google FotosEnriquecimento immich-go
obtém a data da foto do arquivo JSON associado.
O servidor ignora a data fornecida pelo immich-go e pega a data do MP4 mesmo quando está incorreta.
Consulte #322 O carimbo de data/hora de criação dos metadados está errado
Immich-go tenta determinar a data da captura com o nome do arquivo ou o caminho do arquivo.
Ex:
Caminho | Data de captura da foto |
---|---|
fotos/álbum/PXL_20220909_154515546.jpg | 2022-09-09 15:51:55 |
fotos/digitalizadas/19991231.jpg | 31/12/1999 00:00:00 |
fotos/20221109/IMG_1234.HEIC | 2022-11-19 00:00:00 |
fotos/2022.11.09T20.30/IMG_1234.HEIC | 2022-11-19 20:30:00 |
fotos/2022/11/09/IMG_1234.HEIC | 2022-11-19 00:00:00 |
Se o caminho não puder ser usado para determinar a data de captura, immich-go leia os metadata
ou exif
do arquivo.
duplicate
Use este comando para analisar o conteúdo do seu servidor immich
para encontrar quaisquer arquivos que compartilhem o mesmo nome de arquivo, a data de captura, mas tenham tamanhos diferentes. Antes de excluir as cópias inferiores, o sistema obtém todos os álbuns aos quais pertencem e adiciona a eles a cópia superior.
Parâmetro | Descrição | Valor padrão |
---|---|---|
-yes | Assuma que sim para todas as perguntas | FALSE |
-date | Verifique se apenas os ativos têm uma data de captura no intervalo determinado | 1850-01-04,2030-01-01 |
-ignore-tz-errors | Ignore a diferença de fuso horário ao procurar duplicatas | FALSE |
-ignore-extension | Ignore extensões de tipo de arquivo ao procurar duplicatas | FALSE |
immich
após mesclar um arquivo do Google Fotos e os arquivos originaisEste comando examina o conteúdo do servidor immich, remove imagens de menor qualidade e preserva álbuns.
./immich-go -server=http://mynas:2283 -key=zzV6k65KGLNB9mpGeri9n8Jk1VaNGHSCdoH1dY8jQ duplicate -yes
stack
comandos A possibilidade de empilhar imagens foi introduzida com o immich
versão 1.83. Vamos usá-lo para agrupar imagens burst e jpg/raw.
Parâmetro | Descrição | Valor padrão |
---|---|---|
-yes | Assuma que sim para todas as perguntas | FALSE |
-date=date_range | Verifique se apenas os ativos têm uma data de captura no intervalo determinado | 1850-01-04,2030-01-01 |
tool
de comando Este comando apresenta ferramentas de linha de comando para manipular seu servidor immich
album delete [regexp]
Este comando exclui álbuns que correspondem ao padrão fornecido
-yes
Assuma Sim para todas as perguntas (padrão: FALSE).
./immich-go -server=http://mynas:2283 -key=zzV6k65KGLNB9mpGeri9n8Jk1VaNGHSCdoH1dY8jQ tool album delete d {4}- d {2}- d {2}
Este comando exclui todos os álbuns criados com o padrão AAAA-MM-DD
Instalar immich-go
é um processo simples. Visite a página de lançamento mais recente e selecione o arquivo binário compatível com seu sistema:
Baixe o arquivo correspondente ao seu SO/Arquitetura em sua máquina e descompacte-o.
Abra uma janela de comando, vá para o diretório onde reside o immich-go e digite o comando immich-go
com parâmetros e comando obrigatórios.
Para uma instalação baseada na fonte, certifique-se de ter as ferramentas de desenvolvimento da linguagem Go necessárias (https://go.dev/doc/install). Baixe os arquivos de origem ou clone o repositório.
go build -ldflags " -X 'main.version= $( git describe --tag ) ' -X 'main.date= $( date ) ' "
immich-go
é empacotado com nix e distribuído via nixpkgs. Você pode experimentar immich-go
sem instalá-lo com:
nix-shell -I " nixpkgs=https://github.com/NixOS/nixpkgs/archive/nixos-unstable-small.tar.gz " -p immich-go
# Or with flakes enabled
nix run " github:nixos/nixpkgs?ref=nixos-unstable-small#immich-go " -- -help
Ou você pode adicionar immich-go
ao seu configuration.nix
na seção environment.systemPackages
.
Parabéns à equipe Immich por seu projeto impressionante! ?
Este programa usa as seguintes bibliotecas de terceiros:
Um grande obrigado aos colaboradores do projeto: