iterative / iterative/PyDrive2

Support file revisions

Open
#161 0 comments 1 reaction 0 assignees View on GitHub
feature request
Dominant language
Python
Stars
670
Forks
75
PR merge metrics
No merged PRs in 30d

Description

Hello PyDrive2 team,

First, thank you for developing and maintaining this package, I find it very helpful.

Second, I wanted to propose a new feature, which I personally find very useful (e.g. I am planning to use it for creating a simplified configuration management tool):

_possibility to download a particular [file revision](https://developers.google.com/drive/api/v3/reference/revisions) by its `id`_.

I have a code snipped that worked for me (based on [`GetContentFile`](https://github.com/iterative/PyDrive2/blob/master/pydrive2/files.py#L293) function), but It has many shortcuts and potential flaws, therefore, I don't think it is good idea to create a PR with this code. Unfortunately, I don't have much experience working with the GDrive API to fix it myself.

```python
@LoadAuth
def _GetContentRevision(
file,
rev_id,
filename,
chunksize=DEFAULT_CHUNK_SIZE,
):
revisions = file.auth.service.revisions()
file_id = file.metadata.get("id") or file.get("id")
if not file_id:
raise ValueError('No ID')

def _download(fd, request):
downloader = MediaIoBaseDownload(
fd, file._WrapRequest(request), chunksize=chunksize
)
done = False
while done is False:
status, done = downloader.next_chunk()

with open(filename, mode="w+b") as fd:
rev = revisions.get(fileId=file_id, revisionId=rev_id)
revision_metadata = rev.execute()
rev.uri = revision_metadata["downloadUrl"]
_download(fd, rev)
```

Hope you will find this feature useful as well.

-- Nikita

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.