iterative / iterative/PyDrive2

Support file revisions

Aperta
#161 0 commenti 1 reazione 0 assegnatari Vedi su GitHub
feature request
Lingua principale
Python
Stelle
670
Fork
75
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.