检测Google云端硬盘更改

时间:2017-04-08 00:48:24

标签: api google-drive-api drive

我对如何操作更改API感到很困惑。

目前,我只是提出请求:

https://www.googleapis.com/drive/v3/changes?access_token=**my_token**&pageToken=68485 **Last few additions to the list

我明白了:

{
 "kind": "drive#changeList",
 "newStartPageToken": "68489",
 "changes": [
  {
   "kind": "drive#change",
   "type": "file",
   "time": "2017-04-08T00:40:36.141Z",
   "removed": false,
   "fileId": "***ID",
   "file": {
    "kind": "drive#file",
    "id": "***ID",
    "name": "***NAME",
    "mimeType": "application/vnd.google-apps.folder"
   }
  },
  {
   "kind": "drive#change",
   "type": "file",
   "time": "2017-04-08T00:41:00.171Z",
   "removed": false,
   "fileId": "***ID2",
   "file": {
    "kind": "drive#file",
    "id": "***ID2",
    "name": "***NAME2",
    "mimeType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
   }
  }
 ]

我不知道对更改数组中的第一项进行了更改。

玩完之后,我意识到每次打开文件夹时都会添加更改,为什么?是因为元数据正在发生变化,即last-accessed

预览/打开/下载文件时是否会发生同样的事情?

我在数组中删除了第二项,但它没有显示任何内容。

我究竟能告诉你什么是改变的。我试图检索文件更新,创建,删除等事件。

2 个答案:

答案 0 :(得分:0)

更改使用的官方属性,可在Changes resource representations中找到:

price = [9.95, 14.95, 19.95, 24.95, 29.95, 34.95, 39.95, 44.95, 49.95]
discount = range(0, 51, 5)
for i in discount:
    K = 1 - (i/100)
    for j in price:
        P = j * K
        V ="${:.2f}".format(P)
        C ='{:>7}'.format(V)
        print("o f f : " +str(i) + "%" if i else "Normal P r i c e : " if j else "", str(C).replace("."," . "), end=" ")
    print()

答案 1 :(得分:0)

现在这可能不是一个完整的答案,但我想分享一些观点。

  

是因为元数据正在改变,即最后一次访问?

是的,确实如此。它有点奇怪,但是,即使预览文件也算作变化。如果您密切关注云端硬盘的Android应用,您可以看到只需查看照片就会将其填充到"最近的"标签

在API v2中,甚至有一个files.touch()方法,仅用于更新文件的上次访问时间!

  

我到底要告诉我们要改变什么?

changes.list()返回了一个名为changes[]的属性,该属性包含更改。您可以使用它来确定更改是否与您相关(如更新,创建,删除)或忽略它只是一个预览。

要添加此功能,不是连续检查更改,而是更有效地检测更改,方法是使用changes.watch()方法订阅更改的更新,我希望您已经知道。< / p>

关于捣乱。垃圾并没有真正改变&#34; Drive中的文件。丢失的文件被视为普通文件,除了具有&#34; Trashed&#34;标志,这使它直接隐形。请注意,协作者仍可以访问共享文件,即使它已被删除。但是,如果文件被永久删除,则应触发更改。