Pacix Labs

Fotos

Google Takeout fotos JSON: como juntar os arquivos às fotos e corrigir as datas

O Google Takeout guarda as datas das suas fotos em arquivos JSON separados. Quatro ferramentas gratuitas juntam tudo de volta: o que cada uma corrige, os comandos exatos e como conferir.

· 8 min de leitura

Também disponível em: العربيةবাংলাDeutschespañolfrançaisગુજરાતીहिन्दीIndonesiaitaliano日本語ಕನ್ನಡ한국어EnglishमराठीpolskiрусскийKiswahiliதமிழ்తెలుగుไทยTürkçeукраїнськаاردوTiếng Việt中文

Você baixou sua biblioteca do Google Fotos com o Google Takeout. Agora tem milhares de fotos ao lado de milhares de arquivos .json, e o seu visualizador diz que uma foto de 2019 foi tirada ontem. Para resolver, é preciso juntar cada arquivo JSON do Google Takeout à sua foto. Uma ferramenta lê no arquivo JSON a data em que a foto foi tirada e a grava na foto, para que todos os aplicativos voltem a mostrar a data certa.

Este guia explica por que os arquivos JSON existem, por que a junção às vezes falha e como quatro ferramentas gratuitas fazem esse trabalho. Você vai ver o comando exato de cada uma, qual data cada uma altera e uma forma de conferir o resultado antes de apagar qualquer coisa.

Por que suas fotos vêm com arquivos JSON

Para cada foto, o Takeout entrega dois arquivos: a imagem, por exemplo IMG_1234.jpg, e um arquivo JSON com a data original, as coordenadas de GPS, a descrição e os álbuns dos quais ela faz parte. Um guia de exportação descreve a primeira impressão típica: uma foto de 2019 aparecia com a data de "ontem", sem local e sem álbum, embora nada tivesse sido perdido. A informação estava no arquivo JSON (PixelUnion). O Illinois Tech dá a mesma explicação para o fato de uma exportação ter mais arquivos do que a sua biblioteca tem fotos (Illinois Tech).

O arquivo da foto pode não bater com o arquivo JSON. O autor do google-photos-exif percebeu que, se você muda uma data dentro do Google Fotos, os metadados dentro da imagem não são atualizados: a nova data fica só no arquivo JSON. Algumas imagens, muitas vezes as que outras pessoas compartilharam com você, não têm data nenhuma dentro (google-photos-exif). O README do gphotos-takeout-repair mostra a outra metade do problema: em uma exportação extraída, a foto, a versão editada dela e o arquivo JSON mostram a data da exportação do Takeout como data de criação (gphotos-takeout-repair).

Então, um aplicativo que lê só o arquivo da foto não vê data nenhuma ou vê o dia em que você exportou. A data certa está no arquivo JSON, e a junção a coloca de volta.

Três coisas que estragam a junção

Toda ferramenta de junção precisa encontrar o arquivo JSON certo para cada foto. Três detalhes do Takeout dificultam isso.

  1. Uma foto e o arquivo JSON dela podem estar em zips diferentes. O FAQ de migração do Ente dá o exemplo de flower.jpeg em um zip e flower.json em outro, o que impede que os dois sejam associados (Ente). O README do Porte lista o mesmo caso como limitação conhecida: ele não encontra arquivos de metadados que estão em um arquivo compactado diferente do da imagem (Porte).
  2. Os nomes dos arquivos JSON não são padronizados. Para IMG123.jpg você pode receber IMG123.jpg.json ou só IMG123.json, e algumas pastas têm arquivos JSON sem imagem correspondente (google-photos-exif).
  3. Fotos editadas saem duas vezes. O Takeout exporta o original e a cópia editada como arquivos separados, com hashes diferentes, então um localizador de duplicatas que compara hashes não aponta os dois (Ente). O arquivo editado leva o sufixo -edited, como em IMG_0001-edited.jpg ao lado de IMG_0001.jpg (gphotos-takeout-repair).

A solução para o primeiro ponto é a mesma para todas as ferramentas: baixe todos os zips e depois extraia todos eles em uma mesma pasta principal, mantendo as subpastas como estão (Ente). Se dois zips tiverem uma pasta com o mesmo nome, junte o conteúdo das pastas em vez de substituir uma pela outra (google-photos-exif).

Uma dica do Illinois Tech para o download: mantenha a janela do Takeout em primeiro plano. Se você minimizar ou trabalhar em outra janela, os downloads falham depois de 15 minutos, porque o Google pede que você faça login de novo (Illinois Tech).

Quatro ferramentas gratuitas para Google Takeout fotos JSON e a data que cada uma corrige

Uma foto tem dois tipos de data. A data EXIF (DateTimeOriginal) fica dentro da imagem e vai com ela para qualquer aplicativo ou serviço. A data do arquivo (modificação ou criação) pertence ao sistema de arquivos. É fácil perdê-la: o README do gpth avisa que mover arquivos em um celular Android costuma redefini-la (gpth). Antes de escolher uma ferramenta, confira qual das duas ela grava.

Em todos os comandos abaixo, a primeira pasta é o seu Takeout extraído e a segunda é uma pasta de saída nova e vazia.

Porte: grava a data e o local dentro da foto

O Porte copia o carimbo de data e hora e a geolocalização do arquivo JSON correspondente para os dados EXIF da imagem, sem recomprimir a imagem. Se não encontra data, ele tenta o nome do arquivo e usa a data mais antiga que encontrar, para que uma data de modificação do arquivo não seja tomada como data da foto. Ele copia os arquivos para a pasta de saída em vez de alterá-los no lugar, coloca os arquivos com falha em uma pasta separada e salva um log. Ele não preserva os dados de álbum. Você pode baixar um programa pronto na página de releases do projeto (Porte):

porte srcpath destpath

google-photos-exif: preenche a data EXIF que falta

Esta ferramenta em Node.js lê photoTakenTime em cada arquivo JSON. Ela define a data de modificação do arquivo e preenche DateTimeOriginal só quando a foto ainda não tem esse dado. Os arquivos que ela não consegue processar vão para uma pasta de erros (google-photos-exif). O autor do PixelUnion usou a ferramenta e conta que ela processou a biblioteca inteira em cerca de vinte minutos (PixelUnion).

yarn start --inputDir ~/takeout --outputDir ~/output --errorDir ~/error

gpth: organiza em uma pasta só ou por mês e depois define a data do arquivo

O Google Photos Takeout Helper é interativo: você o executa e responde às perguntas dele. Ele reúne todas as fotos em uma única pasta, ou em pastas por mês com a opção --divide-to-dates, e define a data da última modificação do arquivo. Gravar os dados do JSON de volta no EXIF ainda está na lista de pendências dele, por isso o README traz um comando exiftool extra que copia a data do arquivo para as datas EXIF das fotos que não têm nenhuma. Rode esse comando antes de mexer de novo nos arquivos. Observe que o gpth move os arquivos por padrão, então guarde os seus zips originais (gpth).

exiftool -overwrite_original -r -if 'not defined DateTimeOriginal' -P "-AllDates<FileModifyDate" "your/output/folder/ALL_PHOTOS/"

gphotos-takeout-repair: remove os arquivos JSON e as duplicatas editadas

Esta ferramenta copia suas fotos para uma pasta nova, mantém a estrutura de pastas e define a data de criação de cada arquivo a partir de photoTakenTime no arquivo JSON. Onde existe uma cópia -edited, ela fica com essa versão (normalmente a melhor) e deixa o original de fora, então a saída não tem arquivos JSON nem duplicatas editadas (gphotos-takeout-repair). Instale com npm install -g gphotos-takeout-repair e depois:

gphotos-takeout-repair --src ./unzipped-takeout-dir --dest ./output-dir

Se você quer a data dentro da imagem em todas as fotos, o Porte a grava diretamente. Com as outras três, confira a data EXIF depois, como mostrado abaixo.

Confira se as datas estão mesmo dentro das fotos

Não confie na coluna "data de modificação" do gerenciador de arquivos. Confira os próprios metadados.

  1. Sem programas extras: clique com o botão direito em uma foto e escolha Obter Informações no Mac ou Propriedades no Windows. Depois de uma boa junção, você deve ver a data certa da foto, as coordenadas de GPS se a foto as tinha e o modelo da câmera quando disponível (PixelUnion).
  2. Para uma pasta inteira: o ExifTool pode mostrar a tag DateTimeOriginal de cada JPG de uma pasta. Esta linha se baseia em um exemplo da documentação dele (ExifTool):
exiftool -DateTimeOriginal -S -s -ext jpg .

Uma linha vazia ou uma data da semana da sua exportação significa que aquela foto não foi juntada. Nesse caso, veja a pasta de erros ou de falhas da ferramenta e confira se o arquivo JSON correspondente veio de outro zip.

  1. Compare as contagens. A pasta de saída mais a pasta de erros devem ter mais ou menos tantas fotos e vídeos quanto o Takeout extraído, menos as duplicatas editadas se a sua ferramenta as remove.

Uma alternativa com um clique

Se você não quer usar a linha de comando, um aplicativo de computador pode fazer o mesmo trabalho. O PHOTOK é um produto da Pacix Labs. Segundo a página dele, ele lê os arquivos .json que o Google espalha por todo lado e devolve às fotos as datas e os locais reais; depois organiza as fotos em pastas de Ano / Mês / Local e separa as duplicatas exatas. Funciona no Windows 10 e 11 e em Macs com chip Apple, não envia nada para a internet e nunca apaga arquivos. A prévia é gratuita, e a versão completa custa €49 em pagamento único (PHOTOK).

Seja qual for o caminho, as ferramentas gratuitas acima ou um aplicativo, as regras são as mesmas: trabalhe em uma cópia, confira uma amostra e guarde os zips.

Checklist

  • Baixe todos os zips e guarde uma cópia em um segundo disco.
  • Extraia todos os zips em uma mesma pasta principal, mantenha as subpastas e junte as pastas com o mesmo nome.
  • Escolha uma ferramenta e saiba qual data ela grava: data EXIF, data do arquivo ou as duas.
  • Rode a ferramenta em uma cópia, com saída para uma pasta nova.
  • Confira DateTimeOriginal em uma amostra de anos diferentes e olhe a pasta de erros.
  • Decida o que fazer com as cópias -edited.
  • Apague os arquivos JSON e os zips só depois da conferência e de um segundo backup.

Perguntas frequentes

Por que o Google Takeout me entrega arquivos JSON junto com as fotos?

O Google guarda a data em que a foto foi tirada, o local, a descrição e as informações de álbum que conhece sobre cada foto em um arquivo .json separado, ao lado da foto. O próprio arquivo da foto pode não ter as mesmas informações, por exemplo se você alterou a data dentro do Google Fotos.

Posso apagar os arquivos JSON?

Só depois que as datas e os locais estiverem dentro das fotos e você tiver conferido uma amostra. Antes disso, o arquivo JSON é o único lugar onde ficam a data e o local que o Google tem da foto.

Qual data uma ferramenta de junção corrige?

Depende da ferramenta. Algumas gravam a data nos metadados EXIF da foto (DateTimeOriginal), que acompanham o arquivo. Outras definem só a data de modificação ou de criação do arquivo, que alguns métodos de cópia redefinem. Leia o README da ferramenta antes de escolher.

Por que algumas fotos continuam erradas depois da junção?

Normalmente porque a foto e o arquivo JSON dela estavam em zips diferentes e nunca foram reunidos, ou porque o arquivo JSON tem um nome diferente do da foto. Extraia todos os zips em uma única pasta, rode a ferramenta de novo em uma cópia nova e veja a pasta de erros ou de falhas da ferramenta.

Preciso guardar os arquivos zip originais?

Sim, até a biblioteca resultante ter sido conferida e você ter outro backup. Algumas ferramentas movem os arquivos em vez de copiá-los, e os zips são a sua única forma de recomeçar.

Fontes