设置Google相册日期

时间:2015-09-19 11:05:55

标签: google-api google-drive-api google-photos

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

到目前为止,我尝试使用Drive API来更改修改日期,我可以更改它但不使用它。我也尝试修改imageMediaMetadata.date,但它对我来说似乎是只读的。

代码:

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
      }
    }
  }

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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

在使用新版Google Photos API上传旧照片时,我还将寻找一种方便的方法来提供照片日期。我的照片不一定具有EXIF数据;我尝试在MacOS计算机磁盘上的一个JPEG上设置创建日期/上次修改日期,然后通过Google Photos Web界面手动将其上传,然后本地磁盘上JPEG文件的日期变为照预期,照片在Google相册中的日期。该文件没有EXIF数据,如果有,则不会包含相同的日期,因此显然Google图片网络上传者会尊重该照片的本地文件系统日期。

然后,我尝试使用Charles Proxy嗅探流量,但显然Web界面使用的Google Photos API与我们外部开发人员的使用方式不同,它似乎并没有发布到https://photoslibrary.googleapis.com/v1/uploads。因此,我无法对该流程进行反向工程。另外我也看不到文件创建日期在哪里传递。

很棒的是在上传POST请求中有一个HTTP标头来设置该日期。我看不到batchCreate(https://developers.google.com/photos/library/reference/rest/v1/mediaItems/batchCreate)方法具有设置此方法的任何方法。