golang: ausschließen Müll-Dateien von Google Drive
type listAllFilesArgs struct {
\t query string
\t fields []googleapi.Field
\t sortOrder string
\t maxFiles int64
}
type Field string
func (self *Drive) listAllFiles(args listAllFilesArgs) ([]*drive.File, error) {
\t var files []*drive.File
\t var pageSize int64
\t if args.maxFiles > 0 && args.maxFiles < 1000 {
\t \t pageSize = args.maxFiles
\t } else {
\t \t pageSize = 1000
\t }
\t controlledStop := fmt.Errorf("Controlled stop")
\t err := self.service.Files.List().Q(args.query).Fields(args.fields...).OrderBy(args.sortOrder).PageSize(pageSize).Pages(context.TODO(), func(fl *drive.FileList) error {
\t \t files = append(files, fl.Files...)
\t \t // Stop when we have all the files we need
\t \t if args.maxFiles > 0 && len(files) >= int(args.maxFiles) {
\t \t \t return controlledStop
\t \t }
\t \t return nil
\t })
\t if err != nil && err != controlledStop {
\t \t return nil, err
\t }
\t if args.maxFiles > 0 {
\t \t n := min(len(files), int(args.maxFiles))
\t \t return files[:n], nil
\t }
\t return files, nil
}
func (self *Drive) newPathfinder() *remotePathfinder {
\t return &remotePathfinder{
\t \t service: self.service.Files,
\t \t files: make(map[string]*drive.File),
\t }
}
ich für meine Google Drive api Entwicklung gehen verwende die Details Version Nutzung folgenden wre, go Version go1 .8.1 Fenster/amd64 und importiert "google.golang.org/api/drive/v3" „google.gola ng.org/api/googleapi“ für Entwicklung
err = gDrive.List(listArgs)
\t if err != nil {
\t \t fmt.Errorf("Failed to list files: %s", err)
\t }
func (self *Drive) List(args ListFilesArgs) (err error) {
\t listArgs := listAllFilesArgs{
\t \t query: args.Query,
\t \t fields: []googleapi.Field{"nextPageToken", "files(id,name,md5Checksum,mimeType,size,createdTime,parents)"},
\t \t sortOrder: args.SortOrder,
\t \t maxFiles: args.MaxFiles,
\t }
\t files, err := self.listAllFiles(listArgs)
\t if err != nil {
\t \t return fmt.Errorf("Failed to list files: %s /n", err)
\t }
\t pathfinder := self.newPathfinder()
\t if args.AbsPath {
\t \t // Replace name with absolute path
\t \t for _, f := range files {
\t \t \t f.Name, err = pathfinder.absPath(f)
\t \t \t if err != nil {
\t \t \t \t return err
\t \t \t }
\t \t }
\t }
\t PrintFileList(PrintFileListArgs{
\t \t Out: args.Out,
\t \t Files: files,
\t \t NameWidth: int(args.NameWidth),
\t \t SkipHeader: args.SkipHeader,
\t \t SizeInBytes: args.SizeInBytes,
\t })
\t return
}
Google Drive api für Golang Dateien Auflistung Müll inklusive. Ausschließen von Papierkorbdateien,
Ihr Snippet noch unklar ist, wie zum Beispiel 'self.listAllFiles' und' self.newPathfinder() 'umgesetzt wird? – putu
@putu können Sie sehen, –
aktualisiert Sie können die Datei filtern, indem Sie [ 'drive.File'] (https://godoc.org/google.golang.org/api/drive/v3#File). In der Struktur gibt es ein "Trash" - und ein "ExplicitlyTrashed" -Feld. Setze es in die Abfrage, die an 'Q (...)' übergeben wird. Weitere Informationen zur Abfrage finden Sie unter [Nach Dateien suchen] (https://developers.google.com/drive/v3/web/search-parameters) – putu