设置谷歌照片日期



我上传了许多没有EXIF数据的照片,但名字中有日期。Google Photos使用上传日期对照片进行排序。我想用他们名字里的日期来修改他们。

到目前为止,我试图使用驱动器API来更改修改日期,我可以更改它,但它没有使用。我还尝试修改imageMediaMetadata。日期,但对我来说似乎是只读的。

代码:

function myFunction() {
  var files = DriveApp.getFilesByName("IMG-20150402-WA0002_1.jpg")
  while (files.hasNext()) {
    var file = files.next();
    var name = file.getName().toUpperCase();
    if (name.indexOf("-WA") > -1) {
      if (name.indexOf("IMG-20") == 0 || name.indexOf("VID-20") == 0) {
        var y = name.substr(4, 4);
        var m = name.substr(8, 2);
        var d = name.substr(10, 2);
        var file2 = Drive.Files.get(file.getId());
        file2.imageMediaMetadata.date = y+"-"+m+"-"+d+"T12:00:00.000Z";
        var file3 = Drive.Files.patch(file2, file.getId());
        Logger.log(name + " no ok " + file3.imageMediaMetadata.date);  // same as file2
      }
    }
  }

我可以删除它们,修改原始文件并重新上传,但在此之前我想确定没有其他方法。

谢谢。

也许您可以通过编程方式将EXIF头写入文件?

我也会寻找一个方便的方式来提供照片日期时,使用新的谷歌照片API上传旧照片。我的照片不一定有EXIF数据;我试着在MacOS机器的磁盘上设置一张JPEG文件的创建/最后修改日期,然后通过Google Photos web界面手动上传,本地磁盘上JPEG文件的日期就变成了Google Photos中照片的日期,和预期的一样。该文件没有EXIF数据,如果有,它将不包含相同的日期,因此显然google照片web上传程序尊重照片的本地文件系统日期。

然后我尝试使用Charles Proxy嗅探流量,但显然web界面不使用我们外部开发人员使用的Google Photos API相同的方式—它不POST到https://photoslibrary.googleapis.com/v1/uploads或看起来如此。所以我不能逆向工程这个过程。我也看不到文件创建日期是在哪里传入的。

最好在上传POST请求中有一个HTTP头来设置这个日期。我没有看到batchCreate (https://developers.google.com/photos/library/reference/rest/v1/mediaItems/batchCreate)方法有任何方法来设置这个

相关内容

  • 没有找到相关文章

最新更新