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 解释。
我从 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 解释。