🎇 google drive thumbnail

pull/548/head
微凉 2021-12-30 19:01:19 +08:00
parent 5f2621eca9
commit db06b627cc
2 changed files with 35 additions and 11 deletions

View File

@ -20,7 +20,6 @@ func (driver GoogleDrive) Config() base.DriverConfig {
OnlyProxy: true, OnlyProxy: true,
ApiProxy: true, ApiProxy: true,
NoNeedSetLink: true, NoNeedSetLink: true,
LocalSort: true,
} }
} }
@ -50,6 +49,20 @@ func (driver GoogleDrive) Items() []base.Item {
Type: base.TypeString, Type: base.TypeString,
Required: false, Required: false,
}, },
{
Name: "order_by",
Label: "order_by",
Type: base.TypeString,
Required: false,
Description: "such as: folder,name,modifiedTime",
},
{
Name: "order_direction",
Label: "order_direction",
Type: base.TypeSelect,
Values: "asc,desc",
Required: false,
},
} }
} }
@ -115,7 +128,7 @@ func (driver GoogleDrive) Files(path string, account *model.Account) ([]model.Fi
} }
files := make([]model.File, 0) files := make([]model.File, 0)
for _, file := range rawFiles { for _, file := range rawFiles {
files = append(files, *driver.FormatFile(&file)) files = append(files, *driver.FormatFile(&file, account))
} }
return files, nil return files, nil
} }

View File

@ -50,19 +50,19 @@ type File struct {
MimeType string `json:"mimeType"` MimeType string `json:"mimeType"`
ModifiedTime *time.Time `json:"modifiedTime"` ModifiedTime *time.Time `json:"modifiedTime"`
Size string `json:"size"` Size string `json:"size"`
ThumbnailLink string `json:"thumbnailLink"`
} }
func (driver GoogleDrive) IsDir(mimeType string) bool { func (driver GoogleDrive) IsDir(mimeType string) bool {
return mimeType == "application/vnd.google-apps.folder" || mimeType == "application/vnd.google-apps.shortcut" return mimeType == "application/vnd.google-apps.folder" || mimeType == "application/vnd.google-apps.shortcut"
} }
func (driver GoogleDrive) FormatFile(file *File) *model.File { func (driver GoogleDrive) FormatFile(file *File, account *model.Account) *model.File {
f := &model.File{ f := &model.File{
Id: file.Id, Id: file.Id,
Name: file.Name, Name: file.Name,
Driver: driver.Config().Name, Driver: driver.Config().Name,
UpdatedAt: file.ModifiedTime, UpdatedAt: file.ModifiedTime,
Thumbnail: "",
Url: "", Url: "",
} }
if driver.IsDir(file.MimeType) { if driver.IsDir(file.MimeType) {
@ -72,6 +72,13 @@ func (driver GoogleDrive) FormatFile(file *File) *model.File {
f.Size = size f.Size = size
f.Type = utils.GetFileType(filepath.Ext(file.Name)) f.Type = utils.GetFileType(filepath.Ext(file.Name))
} }
if file.ThumbnailLink != "" {
if account.DownProxyUrl != "" {
f.Thumbnail = fmt.Sprintf("%s/%s", account.DownProxyUrl, file.ThumbnailLink)
} else {
f.Thumbnail = file.ThumbnailLink
}
}
return f return f
} }
@ -102,9 +109,13 @@ func (driver GoogleDrive) GetFiles(id string, account *model.Account) ([]File, e
pageToken = "" pageToken = ""
} }
var resp Files var resp Files
orderBy := "folder,name,modifiedTime desc"
if account.OrderBy != "" {
orderBy = account.OrderBy + " " + account.OrderDirection
}
query := map[string]string{ query := map[string]string{
"orderBy": "folder,name,modifiedTime desc", "orderBy": orderBy,
"fields": "files(id,name,mimeType,size,modifiedTime),nextPageToken", "fields": "files(id,name,mimeType,size,modifiedTime,thumbnailLink),nextPageToken",
"pageSize": "1000", "pageSize": "1000",
"q": fmt.Sprintf("'%s' in parents and trashed = false", id), "q": fmt.Sprintf("'%s' in parents and trashed = false", id),
//"includeItemsFromAllDrives": "true", //"includeItemsFromAllDrives": "true",