iterative / iterative/PyDrive2
Support file revisions
- Langage dominant
- Python
- Étoiles
- 670
- Forks
- 75
- Métriques de merge des PR
- Aucune PR mergée en 30 j
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
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez dans pydrive2/files.py à GetContentFile et lisez la référence liée de la Google Drive revisions API, puis suivez la manière dont les ID de fichiers et les requêtes de téléchargement sont encapsulés. Le travail est terminé lorsque le package peut télécharger une révision de fichier spécifiée par son id tout en préservant le comportement de téléchargement existant.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- api
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100