From 96189ef1bf864625b6cf4e7e4b03678cefaa5cce Mon Sep 17 00:00:00 2001 From: Timon Ringwald Date: Fri, 26 Aug 2022 18:24:52 +0200 Subject: [PATCH] fileprop cache --- envvars.go | 11 +++++++---- file_properties.go | 17 ++++++++++++++--- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/envvars.go b/envvars.go index 2880637..3d036c3 100644 --- a/envvars.go +++ b/envvars.go @@ -11,10 +11,7 @@ import ( ) var ( - Uid = envvars.Int("UID", 1000) - Gid = envvars.Int("GID", 1000) - - PollRate = envvars.Object("POLL_RATE", 30*time.Minute, time.ParseDuration) + PollRate = envvars.Duration("POLL_RATE", 30*time.Minute) AnilistUsername = envvars.String("ANILIST_USERNAME", "username") AnilistAccessToken = envvars.String("ANILIST_TOKEN", "") @@ -73,7 +70,13 @@ var ( /* TODO + better idea? implementation in torrent_sort.go (sort.Slice) + PreferredTorrents = envvars.StringSlice("PREFERRED_TORRENTS", []string{"seeders", "subtitles", "languages", "downloads"}) + + old idea? PreferMoreLanguages = envvars.Bool("PREFERER_MORE_LANGUAGES", false) PreferMoreSubtitles = envvars.Bool("PREFERER_MORE_SUBTITLES", false) + PreferMoreSeeders = envvars.Bool("PREFERER_MORE_SEEDERS", false) + PreferMoreDownloads = envvars.Bool("PREFERER_MORE_DOWNLOADS", false) */ ) diff --git a/file_properties.go b/file_properties.go index cf2e766..a77c9be 100644 --- a/file_properties.go +++ b/file_properties.go @@ -18,9 +18,20 @@ type FileProperties struct { var _ model.PropertyHolder = &FileProperties{} -// TODO cache -func AnalyzeFile(path string) (*FileProperties, error) { - props := &FileProperties{Filepath: path} +var filePropCache = map[string]*FileProperties{} + +func AnalyzeFile(path string) (props *FileProperties, err error) { + // caching + if cacheEntry, ok := filePropCache[path]; ok { + return cacheEntry, nil + } + defer func() { + if err == nil { + filePropCache[path] = props + } + }() + + props = &FileProperties{Filepath: path} file, err := os.Open(path) if err != nil {