From fb13dae1366e8ff7b6de0206260f61c7d4ab404c Mon Sep 17 00:00:00 2001 From: Nick Wang Date: Wed, 27 Sep 2023 13:57:10 +0800 Subject: [PATCH] feat(crypt): optional pre-generated thumbnails (#5284) --- drivers/crypt/driver.go | 6 +++++- drivers/crypt/meta.go | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/crypt/driver.go b/drivers/crypt/driver.go index 221ee8cb4b2..d8783b6ea14 100644 --- a/drivers/crypt/driver.go +++ b/drivers/crypt/driver.go @@ -16,6 +16,7 @@ import ( "github.com/alist-org/alist/v3/internal/op" "github.com/alist-org/alist/v3/pkg/http_range" "github.com/alist-org/alist/v3/pkg/utils" + "github.com/alist-org/alist/v3/server/common" rcCrypt "github.com/rclone/rclone/backend/crypt" "github.com/rclone/rclone/fs/config/configmap" "github.com/rclone/rclone/fs/config/obscure" @@ -152,7 +153,10 @@ func (d *Crypt) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([ Ctime: obj.CreateTime(), // discarding hash as it's encrypted } - if !ok { + if d.Thumbnail && thumb == "" { + thumb = utils.EncodePath(common.GetApiUrl(nil) + stdpath.Join("/d", args.ReqPath, ".thumbnails", name+".webp"), true) + } + if !ok && !d.Thumbnail { result = append(result, &objRes) } else { objWithThumb := model.ObjThumb{ diff --git a/drivers/crypt/meta.go b/drivers/crypt/meta.go index 76dd2bcb235..ffa4af71bdc 100644 --- a/drivers/crypt/meta.go +++ b/drivers/crypt/meta.go @@ -19,6 +19,8 @@ type Addition struct { Salt string `json:"salt" confidential:"true" help:"If you don't know what is salt, treat it as a second password. Optional but recommended"` EncryptedSuffix string `json:"encrypted_suffix" required:"true" default:".bin" help:"for advanced user only! encrypted files will have this suffix"` FileNameEncoding string `json:"filename_encoding" type:"select" required:"true" options:"base64,base32,base32768" default:"base64" help:"for advanced user only!"` + + Thumbnail bool `json:"thumbnail" required:"true" default:"false" help:"enable thumbnail which pre-generated under .thumbnails folder"` } var config = driver.Config{