mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-20 05:56:10 +05:00
viewed db
This commit is contained in:
@@ -15,26 +15,16 @@ func SetViewed(hash, filename string) error {
|
|||||||
return db.Update(func(tx *bolt.Tx) error {
|
return db.Update(func(tx *bolt.Tx) error {
|
||||||
dbt, err := tx.CreateBucketIfNotExists(dbViewedName)
|
dbt, err := tx.CreateBucketIfNotExists(dbViewedName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("could not find torrent")
|
return fmt.Errorf("error save viewed %v", err)
|
||||||
}
|
}
|
||||||
hdb, err := dbt.CreateBucketIfNotExists([]byte(hash))
|
hdb, err := dbt.CreateBucketIfNotExists([]byte(hash))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("could not find torrent")
|
return fmt.Errorf("error save viewed %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fdb, err := hdb.CreateBucketIfNotExists([]byte("Files"))
|
err = hdb.Put([]byte(filename), []byte{1})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("could not find torrent")
|
return fmt.Errorf("error save viewed %v", err)
|
||||||
}
|
|
||||||
|
|
||||||
fdb, err = fdb.CreateBucketIfNotExists([]byte(filename))
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("could not find torrent")
|
|
||||||
}
|
|
||||||
|
|
||||||
err = fdb.Put([]byte("Viewed"), []byte{1})
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("error save torrent %v", err)
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
@@ -69,82 +59,45 @@ func GetViewed(hash, filename string) bool {
|
|||||||
err = db.View(func(tx *bolt.Tx) error {
|
err = db.View(func(tx *bolt.Tx) error {
|
||||||
hdb := tx.Bucket(dbViewedName)
|
hdb := tx.Bucket(dbViewedName)
|
||||||
if hdb == nil {
|
if hdb == nil {
|
||||||
return fmt.Errorf("could not find torrent")
|
return fmt.Errorf("error get viewed")
|
||||||
}
|
}
|
||||||
hdb = hdb.Bucket([]byte(hash))
|
hdb = hdb.Bucket([]byte(hash))
|
||||||
if hdb != nil {
|
if hdb != nil {
|
||||||
fdb := hdb.Bucket([]byte("Files"))
|
vw := hdb.Get([]byte(filename))
|
||||||
if fdb == nil {
|
viewed = vw != nil && vw[0] == 1
|
||||||
return fmt.Errorf("error load torrent files")
|
|
||||||
}
|
|
||||||
cf := fdb.Cursor()
|
|
||||||
for fn, _ := cf.First(); fn != nil; fn, _ = cf.Next() {
|
|
||||||
if string(fn) != filename {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
ffdb := fdb.Bucket(fn)
|
|
||||||
if ffdb == nil {
|
|
||||||
return fmt.Errorf("error load torrent files")
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp := ffdb.Get([]byte("Viewed"))
|
|
||||||
if tmp == nil {
|
|
||||||
return fmt.Errorf("error load torrent file")
|
|
||||||
}
|
|
||||||
if len(tmp) > 0 && tmp[0] == 1 {
|
|
||||||
viewed = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
return viewed
|
return viewed
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetViewedList() []struct {
|
func GetViewedList() map[string][]string {
|
||||||
Hash string
|
|
||||||
File string
|
|
||||||
} {
|
|
||||||
err := openDB()
|
err := openDB()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
viewed := false
|
|
||||||
|
var list = make(map[string][]string)
|
||||||
|
|
||||||
err = db.View(func(tx *bolt.Tx) error {
|
err = db.View(func(tx *bolt.Tx) error {
|
||||||
hdb := tx.Bucket(dbViewedName)
|
rdb := tx.Bucket(dbViewedName)
|
||||||
if hdb == nil {
|
if rdb == nil {
|
||||||
return fmt.Errorf("could not find torrent")
|
return fmt.Errorf("could not find torrent")
|
||||||
}
|
}
|
||||||
hdb = hdb.Bucket([]byte(hash))
|
|
||||||
if hdb != nil {
|
rdb.ForEach(func(hash, _ []byte) error {
|
||||||
|
hdb := rdb.Bucket(hash)
|
||||||
fdb := hdb.Bucket([]byte("Files"))
|
fdb := hdb.Bucket([]byte("Files"))
|
||||||
if fdb == nil {
|
fdb.ForEach(func(fileName, _ []byte) error {
|
||||||
return fmt.Errorf("error load torrent files")
|
vw := fdb.Get(fileName)
|
||||||
}
|
if vw != nil && vw[0] == 1 {
|
||||||
cf := fdb.Cursor()
|
list[string(hash)] = append(list[string(hash)], string(fileName))
|
||||||
for fn, _ := cf.First(); fn != nil; fn, _ = cf.Next() {
|
|
||||||
if string(fn) != filename {
|
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
ffdb := fdb.Bucket(fn)
|
})
|
||||||
if ffdb == nil {
|
return nil
|
||||||
return fmt.Errorf("error load torrent files")
|
})
|
||||||
}
|
|
||||||
|
|
||||||
tmp := ffdb.Get([]byte("Viewed"))
|
|
||||||
if tmp == nil {
|
|
||||||
return fmt.Errorf("error load torrent file")
|
|
||||||
}
|
|
||||||
if len(tmp) > 0 && tmp[0] == 1 {
|
|
||||||
viewed = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
return viewed
|
return list
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user