iterative / iterative/PyDrive2

Support file revisions

Ouverte
#161 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
feature request
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.