Takeout JSON
PT

Immich com data errada depois de importar? Como corrigir

Por que as fotos caem na data errada no Immich, como ele escolhe a data entre EXIF e sidecars, e como corrigir os arquivos antes de importar.

Você montou o Immich, enviou a biblioteca e a linha do tempo está errada. Milhares de fotos aparecem com a data do dia em que você importou. Férias antigas estão no topo. Algumas datas estão erradas por exatamente algumas horas.

Como o Immich escolhe a data

O Immich lê os metadados de cada arquivo e pega a primeira data que encontra, em uma ordem fixa. Mais ou menos assim: um sidecar XMP ao lado do arquivo, se houver; depois o EXIF DateTimeOriginal; depois o CreateDate do vídeo; e, em último caso, a data de modificação do arquivo.

Ele lê o arquivo. Ele não pergunta nada a você. Então uma foto sem data EXIF fica com a data do arquivo, e a data do arquivo é o que a última cópia deixou, normalmente hoje. A diferença entre as duas está em data da captura x data de modificação.

Os próprios envios do Immich, pelo app do celular e pela CLI, repassam a data de modificação do arquivo. Se essa data também está errada, não sobra nada para salvar a foto.

As causas mais comuns

O Google Takeout. É a maior de todas. O Google deixa muitas fotos sem data EXIF e coloca a data real em um .json ao lado do arquivo. O Immich não lê o formato .json do Google. Envie esses arquivos direto e cada um sem EXIF fica com a data do envio. O guia completo para esse caso é exportar o Google Fotos para o Immich.

Apps de mensagem. O WhatsApp e companhia apagam o EXIF inteiro. Essas fotos só têm a data do arquivo. Veja fotos do WhatsApp com data errada.

Prints e downloads. PNGs e imagens da internet raramente têm data EXIF.

Fotos digitalizadas. Têm a data do scanner, ou seja, de quando você digitalizou, não de quando a foto foi tirada.

Fuso horário. Uma foto com data EXIF mas sem o deslocamento do fuso é tratada como UTC por alguns caminhos e como hora local por outros. O dia está certo, a hora não. Celulares mais novos gravam uma tag de fuso e evitam isso.

Os dois jeitos de corrigir

Corrigir dentro do Immich. Você pode selecionar fotos na interface web e editar a data e a hora, uma seleção de cada vez. Para poucas fotos, tudo bem. Para uma exportação do Takeout com quarenta mil, não. E a correção fica só no banco de dados do Immich. Exporte a biblioteca mais tarde e as datas somem de novo.

Corrigir os arquivos antes. Grave a data certa no EXIF de cada arquivo antes de enviar. O Immich lê, acerta, e qualquer outra ferramenta que você usar com esses arquivos também acerta. Essa é a correção que dura.

O immich-go, e quando usar

O immich-go é um enviador gratuito de linha de comando que entende o Google Takeout. Ele lê os .json, combina cada um com o seu arquivo e manda a data certa para o Immich junto com o envio. Se o Immich é o seu único destino e você se vira bem no terminal, é uma boa ferramenta, e ele cuida dos álbuns também.

O que ele não faz é alterar os arquivos. A data vai para o banco de dados do Immich, não para dentro da foto. Se um dia você migrar de novo, ou apontar o PhotoPrism ou o Fotos da Apple para os mesmos arquivos, começa do zero.

Corrigindo os arquivos na mão

O exiftool consegue gravar a data do Takeout no EXIF. O comando é chato de acertar, porque os nomes dos JSON do Google não batem com os nomes das fotos de várias formas. Tem um exemplo completo no guia do exiftool.

Para fotos sem JSON e sem EXIF, mas com a data do arquivo certa, copie a data do arquivo para o EXIF:

exiftool "-DateTimeOriginal<FileModifyDate" -if 'not $DateTimeOriginal' -r .

Para uma pasta em que você sabe a data e nada mais, defina a data:

exiftool -DateTimeOriginal="2014:08:10 12:00:00" -overwrite_original .

Depois rode de novo o job de extração de metadados na página de administração do Immich, ou envie de novo, para ele ler os valores novos.

Com o app

O Takeout JSON Metadata Fixer prepara uma pasta que o Immich importa sem erro. Ele grava a data e o GPS reais em cada arquivo, então o Immich lê tudo direto do EXIF.

Dê a ele uma exportação do Takeout, em um zip ou em vários, ou qualquer pasta. Para cada foto ele pega a data do .json; se não houver, do EXIF; se não houver, da data do arquivo. Depois grava o resultado no EXIF e nas datas do arquivo. O GPS entra do mesmo jeito. HEIC pode ser convertido para JPG no caminho. Fotos sem data nenhuma podem receber uma data e um local para a pasta inteira.

Se você ligar a opção, ele também grava um .json ao lado de cada arquivo de saída. O Immich em si não lê esses arquivos, mas o immich-go e outros importadores leem, e eles mantêm os metadados legíveis fora de qualquer biblioteca. Depois envie a pasta de saída pelo app do Immich, pela CLI ou como biblioteca externa. As datas estão nos arquivos, então chegam certas na primeira vez.

Roda offline, no Windows, no Linux e no Mac. As primeiras 1000 fotos são grátis; sem limite, é uma compra única de US$ 19,99.

Perguntas frequentes

Já importei. Preciso começar do zero?

Não necessariamente. Corrija os arquivos no disco e rode o job "Extract metadata" para todos os itens na página de administração do Immich. Se os arquivos foram enviados, e não estão em uma biblioteca externa, você precisa enviar de novo os corrigidos e apagar as cópias antigas, porque o Immich guarda a própria cópia.

Por que algumas datas estão algumas horas erradas?

Fuso horário. A data EXIF não tem deslocamento, e o Immich trata como UTC ou como hora do servidor, dependendo da versão e da configuração. Versões mais novas lidam melhor com isso. Colocar o servidor no fuso onde a maioria das fotos foi tirada ajuda. Mais em fotos com a hora errada depois do Takeout.

O Immich já lê os .json do Google?

Não diretamente, até o momento em que escrevemos. Ele lê sidecars XMP. O immich-go lê o formato do Google e converte na hora. Confira as notas de versão do Immich, porque isso muda.

Corrigir o EXIF muda a qualidade da foto?

Não. Gravar o EXIF edita um bloco de metadados. A imagem comprimida não é tocada.