package cache import ( "errors" "fmt" "io/ioutil" "os" "strings" ) var ( CACHE_LIST map[[2]string]string = make(map[[2]string]string) ) func LoadCache(path string) error { cacheFileContent, err := ioutil.ReadFile(path) if err != nil { return errors.New("Could Not Read From Cache File") } lineSlice := strings.Split(string(cacheFileContent), "\n") for _, line := range lineSlice { if len(line) != 0 { param := strings.Split(line, "\t") if len(param) == 3 { CACHE_LIST[[2]string{param[0], param[1]}] = param[2] } } } return nil } func GetFromCache(artist, album string) (string, error) { if val, ok := CACHE_LIST[[2]string{artist, album}]; ok { return val, nil } else { return "", errors.New("Element Not In Cache") } } func AddToCache(artist, album string) { CACHE_LIST[[2]string{artist, album}] = GenerateName(artist, album) } func WriteCache(path string) { b, err := os.Create(path) if err == nil { for k, v := range CACHE_LIST { b.Write([]byte(fmt.Sprintf("%s\t%s\t%s\n", k[0], k[1], v))) } } } func GenerateName(artist, album string) string { return strings.Replace(fmt.Sprintf("%s-%s.jpg", artist, album), " ", "_", -1) }