Fotos do Google Takeout com data errada? Entenda o motivo
Por que todas as fotos exportadas pelo Google Takeout aparecem com a data do download, onde a data real ficou escondida e como colocá-la de volta.
Você baixou sua biblioteca do Google Fotos, descompactou o arquivo e abriu a pasta. Dez anos de fotos, e todas dizem que foram tiradas na terça-feira passada. Ordenar por data coloca uma viagem a Porto de Galinhas em 2012 ao lado dos prints de ontem.
Nada foi perdido. As datas continuam lá, só que não no lugar onde o computador procura.
Para onde foi a data
Uma foto pode guardar a data em três lugares. A câmera grava uma dentro do próprio arquivo, no bloco EXIF, no campo "DateTimeOriginal". O sistema operacional guarda mais duas do lado de fora do arquivo: data de criação e data de modificação. O Explorador de Arquivos, o Finder e a maioria das galerias leem o EXIF primeiro e só usam as datas do arquivo quando o EXIF está vazio.
O Takeout quebra isso de duas formas. Primeiro, quando o Google empacota seus arquivos em um zip, as datas do arquivo viram o momento em que o zip foi montado, ou o momento em que você descompactou. Isso não teria importância se o EXIF estivesse intacto.
Segundo, em uma parte grande das fotos o EXIF não tem data ou tem a data errada. Capturas de tela nunca tiveram. O WhatsApp e outros mensageiros apagam os metadados quando comprimem a imagem. Fotos digitalizadas têm a data da digitalização, não a do dia em que a foto foi revelada. E se você corrigiu uma data dentro do Google Fotos, essa correção ficou no banco de dados do Google, não no arquivo. Em vez de gravar a informação certa de volta na foto, o Google coloca tudo em um arquivo .json separado, ao lado de cada imagem.
O seu computador ignora esses arquivos .json por completo. Então ele mostra a única data que consegue encontrar: a do download.
Veja o tamanho do problema
Antes de corrigir qualquer coisa, descubra quantos arquivos realmente precisam de correção. Fotos tiradas direto pela câmera do celular costumam manter uma data EXIF boa. Se a maioria das suas estiver assim, talvez você só precise corrigir uma parte.
Se você tem o exiftool instalado, este comando lista cada arquivo sem data EXIF:
exiftool -r -if 'not $DateTimeOriginal' -filename "Takeout/Google Fotos"
Em uma parte real de um Takeout com 991 fotos que medimos, o arquivo .json era a única fonte de uma data correta em mais ou menos uma foto a cada cinco. A sua proporção vai variar. Bibliotecas cheias de prints, fotos de WhatsApp e digitalizações antigas dependem muito mais dos .json.
Abra um JSON e veja
Cada foto tem um arquivo parceiro, algo como IMG_2034.JPG.supplemental-metadata.json (exportações mais antigas usam IMG_2034.JPG.json). Abra no Bloco de Notas ou em qualquer editor de texto. A parte que importa é esta:
"photoTakenTime": {
"timestamp": "1563102330",
"formatted": "Jul 14, 2019, 11:05:30 AM UTC"
}
Esse timestamp é a data real, em segundos desde 1970, em UTC. Há também um creationTime, que é a data em que o arquivo foi enviado para o Google. Se você quer a data em que a foto foi tirada, o campo certo é photoTakenTime. Explicamos o arquivo inteiro em o que são os arquivos JSON do Google Takeout.
Corrigindo na mão
Para meia dúzia de fotos, ajuste a data manualmente. No Mac, abra a foto no Pré-Visualização ou no Fotos e altere a data. No Windows, clique com o botão direito no arquivo, escolha Propriedades, depois Detalhes, e edite "Data da captura". Faça isso em cinquenta fotos e você vai querer um jeito melhor.
Para a biblioteca inteira, a ferramenta que as pessoas usam é o exiftool. Um comando copia o timestamp de cada JSON para dentro da foto e para as datas do arquivo:
exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" \
"-DateTimeOriginal<PhotoTakenTimeTimestamp" \
"-FileCreateDate<PhotoTakenTimeTimestamp" \
"-FileModifyDate<PhotoTakenTimeTimestamp" \
-ext jpg -ext jpeg -overwrite_original "Takeout/Google Fotos"
Funciona, com ressalvas. O Google corta nomes longos de JSON em 46 caracteres, então o padrão acima deixa alguns passar. Duplicatas recebem um (1) em uma posição diferente no nome do JSON e no nome da foto. Vídeos precisam de outras tags. HEIC e PNG precisam de passadas separadas. Explicamos tudo isso no guia do exiftool. Também existem scripts gratuitos da comunidade, como o GooglePhotosTakeoutHelper, que cuidam dessas manias de nome para você, se você se sente à vontade no terminal.
O aplicativo
Se você prefere não passar uma noite inteira na linha de comando, o Takeout JSON Metadata Fixer faz isso como um programa de desktop no macOS, no Windows e no Linux.
Você aponta o app para os zips do Takeout ou para a pasta descompactada. Ele combina cada foto com o seu JSON, incluindo os nomes supplemental-metadata de 2024, os nomes cortados e as duplicatas com (1). Depois grava o photoTakenTime no EXIF da foto e ajusta as datas de criação e modificação do arquivo para bater. Fotos sem JSON mantêm a data EXIF se tiverem uma, e caem para a data do arquivo se não tiverem, então nenhuma sai sem data.
Vídeos também recebem a data, gravada no MP4 ou MOV onde os players procuram. O GPS volta para a foto quando o JSON tem coordenadas reais. Renomear os arquivos com a data e organizá-los em pastas por ano e mês é opcional. Se você só quer as datas corrigidas, escolha "Manter nomes" e "Manter minhas pastas".
Existe uma simulação que mostra o que mudaria sem gravar nada. As primeiras 1000 fotos são grátis, e uma compra única de US$ 19,99 remove o limite. Tudo roda no seu próprio computador; suas fotos nunca são enviadas para lugar nenhum.
Depois que as datas estão dentro dos arquivos, elas continuam certas para onde quer que as fotos vão: Fotos da Apple, um NAS, Immich, um pendrive ou um celular novo.
Perguntas frequentes
As datas vão ficar no fuso horário certo?
O JSON guarda um instante exato em UTC. As ferramentas convertem para o horário local do seu computador ao gravar o EXIF, que por padrão não carrega fuso horário. Uma foto tirada às 11h05 em São Paulo sai como 11h05 se o seu computador está no horário de Brasília, e como 14h05 se está em Lisboa. Antes de corrigir, coloque o computador no fuso em que a maioria das fotos foi tirada, ou aceite algumas horas de diferença nas fotos de viagem.
Perco alguma coisa gravando no EXIF?
Gravar uma tag de data altera só o bloco de metadados. Os pixels da imagem não são tocados. Guarde os zips originais até ficar satisfeito com o resultado.
Por que só algumas fotos estão erradas?
Porque só algumas fotos não tinham data EXIF para começar. Fotos de câmera normalmente têm. Prints, imagens de conversa, digitalizações e qualquer coisa que você redatou dentro do Google Fotos dependem do JSON.
Posso apagar os arquivos JSON depois de corrigir as datas?
Sim. Depois que a data e o GPS estão gravados nas fotos, os JSON cumpriram o papel deles. Guarde até conferir algumas fotos na biblioteca nova, depois apague. Veja posso apagar os arquivos JSON do Google Takeout.