From a7418162a73345e191785c9a598979f1f3a8bf3e Mon Sep 17 00:00:00 2001 From: alxarno Date: Thu, 14 Nov 2024 10:43:21 +0300 Subject: [PATCH] refactor: process biggest files first --- cmd/tinytune/tinytune.go | 1 + internal/preview.go | 2 +- pkg/index/builder.go | 16 ++++++++++++++++ web/scss/_preview.scss | 1 + web/scss/_zoom.scss | 7 +++++++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/cmd/tinytune/tinytune.go b/cmd/tinytune/tinytune.go index 263db32..95c2255 100644 --- a/cmd/tinytune/tinytune.go +++ b/cmd/tinytune/tinytune.go @@ -170,6 +170,7 @@ func start(config Config) { slog.Info( "TinyTune", + slog.String("dir", config.dir), slog.String("version", Version), slog.Bool("image-processing", config.imageProcessing), slog.Bool("video-processing", config.videoProcessing), diff --git a/internal/preview.go b/internal/preview.go index e0e4906..db68267 100644 --- a/internal/preview.go +++ b/internal/preview.go @@ -86,7 +86,7 @@ func (p Previewer) Pull(path string) (preview.Data, error) { if contentType == index.ContentTypeVideo && p.video { preview, err := VideoPreview(path, p.videoParams) - if err != nil { + if err != nil || preview.Duration == 0 { return defaultPreview, err } diff --git a/pkg/index/builder.go b/pkg/index/builder.go index 1335d54..6864b03 100644 --- a/pkg/index/builder.go +++ b/pkg/index/builder.go @@ -7,6 +7,7 @@ import ( "io" "log/slog" "path/filepath" + "slices" "sync" "sync/atomic" "time" @@ -34,6 +35,18 @@ type FileMeta interface { Size() int64 } +func compareFileMetaSize(a, b FileMeta) int { + if a.Size() == b.Size() { + return 0 + } + + if a.Size() < b.Size() { + return 1 + } + + return -1 +} + type indexBuilderParams struct { preview PreviewGenerator id IDGenerator @@ -136,6 +149,9 @@ func (ib *indexBuilder) loadFiles(ctx context.Context) error { withSemaphore(sem), withWaitGroup(waitGroup)) + // pass biggest files first + slices.SortStableFunc(ib.params.files, compareFileMetaSize) + for _, file := range ib.params.files { id, err := ib.filePass(file) if err != nil { diff --git a/web/scss/_preview.scss b/web/scss/_preview.scss index 47cab94..152815d 100644 --- a/web/scss/_preview.scss +++ b/web/scss/_preview.scss @@ -14,6 +14,7 @@ display: -webkit-box; padding-left: 1rem; padding-right: 1rem; + overflow-wrap: anywhere; } > .wrap { diff --git a/web/scss/_zoom.scss b/web/scss/_zoom.scss index 3336305..b37f1d7 100644 --- a/web/scss/_zoom.scss +++ b/web/scss/_zoom.scss @@ -8,11 +8,18 @@ margin-bottom: 2px; border-radius: 0.25rem !important; } + + .dir-list-item>figcaption { + font-size: 0.8rem; + } } .zoom-small{ --wrap-width: 160px; --wrap-height: 140px; + .dir-list-item>figcaption { + font-size: 0.9rem; + } } .zoom-medium{