Instagram media.json 如何将它们添加到 exif?

Instagram media.json How to add them to exif?

我从 Instagram 获取我的照片,我得到包含所有照片的 zip 文件,但它们没有任何 exif 数据。

zip 文件还有一个名为 media.json 的 json 文件,其中包含所有这些重要的元数据。那么有什么方法可以获取这些照片exif的元数据吗?

Exiftool 可以将文件中的内容导入到 exif,但首先我需要知道元数据文件必须是哪种格式?

这是 instagram media.json 文件内容和格式的示例:

{
   "photos": [
      {
         "caption": "#nautitaan #kesä2019",
         "taken_at": "2019-06-08T03:30:25",
         "location": "Jokioinen",
         "path": "photos/201906/b65bbda42ba74424a9d7be0c5163f78d.jpg"
      },
      {
         "caption": "#lupanauttia #kesä2019",
         "taken_at": "2019-06-07T07:42:38",
         "location": "Jokioinen",
         "path": "photos/201906/29fb24838136a1e80439ad7dcae00b4f.jpg"
      }
   ]
}

我只需要这taken_at条,其他的都加就好了。

Exiftool 可以读取 JSON 个文件。如果您在示例 JSON 文件中 运行 命令 exiftool -g1 -a -s ,您将获得可用于复制到图像文件中的标签名称列表。使用您的示例,结果将是

[JSON]          PhotosCaption                   : #nautitaan #kesä2019, #lupanauttia #kesä2019
[JSON]          PhotosLocation                  : Jokioinen, Jokioinen
[JSON]          PhotosPath                      : photos/201906/b65bbda42ba74424a9d7be0c5163f78d.jpg, photos/201906/29fb24838136a1e80439ad7dcae00b4f.jpg
[JSON]          PhotosTaken_at                  : 2019-06-08T03:30:25, 2019-06-07T07:42:38

现在的问题是因为每个标签名称都有多个项目。 Exiftool 工具在读取时间戳数字方面非常灵活(参见 exiftool FAQ 5),因此如果第一个条目是正确的,您可以简单地使用
exiftool -TagsFromFile FILE.Json "-DateTimeOriginal<PhotosTaken_at" FILE.jpg

如果要使用第二个条目,可以使用-listitem option
exiftool -listitem 1 -TagsFromFile FILE.Json "-DateTimeOriginal<PhotosTaken_at" FILE.jpg
请注意,列表索引从 0 开始,因此要获取第二个项目,您需要索引 #1。

要批量复制,假设 json 文件的基本文件名与图像文件相同并且在同一目录中,您可以使用此命令
exiftool -TagsFromFile %d%f.Json "-DateTimeOriginal<PhotosTaken_at" /path/to/image/files/

此命令创建备份文件。添加 -overwrite_original 以禁止创建备份文件。添加 -r 以递归到子目录。如果此命令是 Unix/Mac 下的 运行,请反转任何 double/single 引号以避免 bash 解释。