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.
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.
- Uma foto e o arquivo JSON dela podem estar em zips diferentes. O FAQ de migração do Ente dá o exemplo de
flower.jpegem um zip eflower.jsonem 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). - Os nomes dos arquivos JSON não são padronizados. Para
IMG123.jpgvocê pode receberIMG123.jpg.jsonou sóIMG123.json, e algumas pastas têm arquivos JSON sem imagem correspondente (google-photos-exif). - 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 emIMG_0001-edited.jpgao lado deIMG_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.
- 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).
- Para uma pasta inteira: o ExifTool pode mostrar a tag
DateTimeOriginalde 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.
- 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
DateTimeOriginalem 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
- Ente: Google Photos migration FAQ (split zips, wrong dates, duplicates)
- PixelUnion: how to export your Google Photos library without losing the metadata
- Illinois Tech: use Google Takeout to export Google Photos
- google-photos-exif (GitHub README)
- Porte: fixing and organizing a Google Takeout photos export (GitHub README)
- Google Photos Takeout Helper, gpth (GitHub README)
- gphotos-takeout-repair 1.4.2 (README)
- ExifTool documentation