【问题标题】:Programmatically set a Google Photos caption以编程方式设置 Google 相册标题
【发布时间】:2022-08-09 21:18:34
【问题描述】:
我们有一大批照片,我想把它们放到谷歌照片中,我希望它们都有各自的字幕.我所说的标题是指在桌面网络上查看 Google 相册时滑出式信息 (i) 侧边栏中的右上角输入。标题我还指的是当您在信息侧边栏关闭时翻阅图像时覆盖图像的白色文本。字幕位于来自 Flickr 大下载的 json 文件中,但这不是挑战所在。这是我们尝试过的:
- 在手动上传之前将各种字段写入 .jpg 本身的 EXIF(使用 exiftool)。我发誓这在几年前曾经工作过。但现在我只看到信息栏中“其他”字段中的描述,而不是标题。有趣的是,我什至不记得以前的这个字段。
- 使用 Google Apps 脚本中的 Google Photos API for updating a mediaItem,在手动上传带有 EXIF 标记的 .jpgs 后,从“其他”字段中提取预先存在的照片中的数据并尝试设置“ description\" 字段使用该值。 (我很惊讶地发现,当我在桌面网络上作为“其他”查看时看到的内容已经是 API 中看到的描述!)值得一试,但这是不允许的,因为引用参考链接,\“The媒体项目一定是由开发者通过 API 创建的。\" 好的,好的,我知道了,所以我顺便走了一趟……
- 如果必须手动,我可以手动!我开始编写一些 Javascript 以在浏览器的开发人员控制台中运行,该控制台将找到 Other div,获取文本,将该文本插入到标题字段中,然后找到 Next 按钮并向其发送单击事件。一切正常,我什至在标题字段中看到了我的文字,但它不会保存!当我切换到下一个图像时,就像您实际用鼠标单击它时一样。从来没有弄清楚,但我想我不会因为谷歌的黑客攻击而生气。回到正轨...
- 考虑到文档中的引用,我决定着手实际执行 API 上传并一次性设置描述。我在 Windows 上使用了 Powershell,主要是因为这个脚本必须做的大部分工作都在我的文件系统上。我创建了相册,上传了文件,并成功创建了 mediaItems,确保将描述字段设置为我想要的,并且......这些描述仍然显示为其他!
我们对重新输入所有这些内容并不感到兴奋。我开始认为“其他”字段是“由键盘上的手指以外的任何内容定义的任何描述。”我们如何使用代码设置标题?!?!?!?!!?!?!?
我不想要的:
我想要什么:
标签:
google-photos
google-photos-api
【解决方案1】:
我一直在研究同样的问题,并尝试了你在帖子中提到的大部分相同的事情。 #4 是我名单上的下一个,我很失望地看到这种方法也不起作用。
就我而言,我在 Google 上已有大约 40k 张现有照片(可追溯到 Picasaweb 时代),我希望正确显示标题。
我对你的#4 方法有几个问题。
您是否上传了以前从未上传过的照片?到使用相同 API 创建的新专辑?在这种情况下,他们对哈希的使用可能会成为绊脚石。
我自己对#2 的实验使我相信这些项目(专辑、照片、视频等)有两个所有者——我(当然)和最初将项目插入谷歌云空间的任何程序的开发者 ID( Web 浏览器、API、手机应用程序等)。因此,我无法更改现有描述,因为我的开发者 ID 与处理上传的软件的 ID 不同。
我也有这样的印象,谷歌维护了他们用来加速以后上传的某种项目的哈希值。如果他们的上传者在要上传的项目列表中检测到匹配的哈希,它将跳过上传并在您使用新上传指定的任何新目标中创建指向已上传项目的链接。如果您尝试使用自己的 API 上传已上传的照片,这可能会导致您的 #4 方法出现问题。
对于 #3,我的印象是 Google 维护了一个单独的元数据数据库,该数据库无法通过照片 API 访问。这方面的一个示例是地理标记 LAT/LON 值,这些值无法从 API 访问,但仍显示在网页和应用程序中。我不得不想象在上传过程中从 EXIF 中抓取信息,存储在某个地方,并尽职尽责地呈现在网页上。 Google 似乎使用了他们向公众提供的 API 的超集。
我认为正是这个“某处”额外的数据库干扰了#3。他们自己的超集 API 似乎没有区分 EXIF 描述和项目描述。因此,当我尝试更改空白项目描述以匹配 EXIF 其他描述时,就他们的后端而言,我提出了一个毫无意义的请求,使描述成为描述。当然,他们会暂时在本地浏览器中执行此操作,但他们不会为自己执行数据库更新而烦恼。
从我自己上传的照片集来看,Google 的 API 之前似乎从 EXIF 中抓取了媒体描述。在过去一两年的某个时候,这种情况停止了。现在,他们系统的一部分在显示照片时会区分项目描述和 EXIF 其他内容。但是,对我很重要并且可以让我改变事情的部分并没有认识到这种区别。