fileprop cache

This commit is contained in:
Timon Ringwald 2022-08-26 18:24:52 +02:00
parent 858c5806c4
commit 96189ef1bf
2 changed files with 21 additions and 7 deletions

View File

@ -11,10 +11,7 @@ import (
) )
var ( var (
Uid = envvars.Int("UID", 1000) PollRate = envvars.Duration("POLL_RATE", 30*time.Minute)
Gid = envvars.Int("GID", 1000)
PollRate = envvars.Object("POLL_RATE", 30*time.Minute, time.ParseDuration)
AnilistUsername = envvars.String("ANILIST_USERNAME", "username") AnilistUsername = envvars.String("ANILIST_USERNAME", "username")
AnilistAccessToken = envvars.String("ANILIST_TOKEN", "") AnilistAccessToken = envvars.String("ANILIST_TOKEN", "")
@ -73,7 +70,13 @@ var (
/* /*
TODO 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) PreferMoreLanguages = envvars.Bool("PREFERER_MORE_LANGUAGES", false)
PreferMoreSubtitles = envvars.Bool("PREFERER_MORE_SUBTITLES", false) PreferMoreSubtitles = envvars.Bool("PREFERER_MORE_SUBTITLES", false)
PreferMoreSeeders = envvars.Bool("PREFERER_MORE_SEEDERS", false)
PreferMoreDownloads = envvars.Bool("PREFERER_MORE_DOWNLOADS", false)
*/ */
) )

View File

@ -18,9 +18,20 @@ type FileProperties struct {
var _ model.PropertyHolder = &FileProperties{} var _ model.PropertyHolder = &FileProperties{}
// TODO cache var filePropCache = map[string]*FileProperties{}
func AnalyzeFile(path string) (*FileProperties, error) {
props := &FileProperties{Filepath: path} 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) file, err := os.Open(path)
if err != nil { if err != nil {