mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 21:46:11 +05:00
101 lines
1.9 KiB
Go
101 lines
1.9 KiB
Go
package settings
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"server/log"
|
|
)
|
|
|
|
type Viewed struct {
|
|
Hash string `json:"hash"`
|
|
FileIndex int `json:"file_index"`
|
|
}
|
|
|
|
func SetViewed(vv *Viewed) {
|
|
var indexes map[int]struct{}
|
|
var err error
|
|
|
|
buf := tdb.Get("Viewed", vv.Hash)
|
|
if len(buf) == 0 {
|
|
indexes = make(map[int]struct{})
|
|
indexes[vv.FileIndex] = struct{}{}
|
|
buf, err = json.Marshal(indexes)
|
|
if err == nil {
|
|
tdb.Set("Viewed", vv.Hash, buf)
|
|
}
|
|
} else {
|
|
err = json.Unmarshal(buf, &indexes)
|
|
if err == nil {
|
|
indexes[vv.FileIndex] = struct{}{}
|
|
buf, err = json.Marshal(indexes)
|
|
if err == nil {
|
|
tdb.Set("Viewed", vv.Hash, buf)
|
|
}
|
|
}
|
|
}
|
|
if err != nil {
|
|
log.TLogln("Error set viewed:", err)
|
|
}
|
|
}
|
|
|
|
func RemViewed(vv *Viewed) {
|
|
buf := tdb.Get("Viewed", vv.Hash)
|
|
var indeces map[int]struct{}
|
|
err := json.Unmarshal(buf, &indeces)
|
|
if err == nil {
|
|
if vv.FileIndex != -1 {
|
|
delete(indeces, vv.FileIndex)
|
|
buf, err = json.Marshal(indeces)
|
|
if err == nil {
|
|
tdb.Set("Viewed", vv.Hash, buf)
|
|
}
|
|
} else {
|
|
tdb.Rem("Viewed", vv.Hash)
|
|
}
|
|
}
|
|
if err != nil {
|
|
log.TLogln("Error rem viewed:", err)
|
|
}
|
|
}
|
|
|
|
func ListViewed(hash string) []*Viewed {
|
|
var err error
|
|
if hash != "" {
|
|
buf := tdb.Get("Viewed", hash)
|
|
if len(buf) == 0 {
|
|
return []*Viewed{}
|
|
}
|
|
var indeces map[int]struct{}
|
|
err = json.Unmarshal(buf, &indeces)
|
|
if err == nil {
|
|
var ret []*Viewed
|
|
for i, _ := range indeces {
|
|
ret = append(ret, &Viewed{hash, i})
|
|
}
|
|
return ret
|
|
}
|
|
} else {
|
|
var ret []*Viewed
|
|
keys := tdb.List("Viewed")
|
|
for _, key := range keys {
|
|
buf := tdb.Get("Viewed", key)
|
|
if len(buf) == 0 {
|
|
return []*Viewed{}
|
|
}
|
|
var indeces map[int]struct{}
|
|
err = json.Unmarshal(buf, &indeces)
|
|
if err == nil {
|
|
for i, _ := range indeces {
|
|
ret = append(ret, &Viewed{key, i})
|
|
}
|
|
}
|
|
}
|
|
return ret
|
|
}
|
|
|
|
if err != nil {
|
|
log.TLogln("Error list viewed:", err)
|
|
}
|
|
return []*Viewed{}
|
|
}
|