616c6b1c62
Release Docker multi arch / docker (push) Has been cancelled
Test Install Script / Test Script Syntax (push) Has been cancelled
Test Install Script / Test on almalinux-10 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-10 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (root) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (default) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (root) (push) Has been cancelled
Test Install Script / Test on debian-11 (default) (push) Has been cancelled
Test Install Script / Test on debian-11 (root) (push) Has been cancelled
Test Install Script / Test on debian-12 (default) (push) Has been cancelled
Test Install Script / Test on debian-12 (root) (push) Has been cancelled
Test Install Script / Test on debian-13 (default) (push) Has been cancelled
Test Install Script / Test on debian-13 (root) (push) Has been cancelled
Test Install Script / Test on fedora-latest (default) (push) Has been cancelled
Test Install Script / Test on fedora-latest (root) (push) Has been cancelled
Test Install Script / Test on rocky-10 (default) (push) Has been cancelled
Test Install Script / Test on rocky-10 (root) (push) Has been cancelled
Test Install Script / Test on rocky-8 (default) (push) Has been cancelled
Test Install Script / Test on rocky-8 (root) (push) Has been cancelled
Test Install Script / Test on rocky-9 (default) (push) Has been cancelled
Test Install Script / Test on rocky-9 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (root) (push) Has been cancelled
89 lines
1.9 KiB
Go
89 lines
1.9 KiB
Go
package torr
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"server/settings"
|
|
"server/torr/state"
|
|
"server/torr/utils"
|
|
|
|
"github.com/anacrolix/torrent/metainfo"
|
|
)
|
|
|
|
type tsFiles struct {
|
|
TorrServer struct {
|
|
Files []*state.TorrentFileStat `json:"Files"`
|
|
} `json:"TorrServer"`
|
|
}
|
|
|
|
func AddTorrentDB(torr *Torrent) {
|
|
t := new(settings.TorrentDB)
|
|
t.TorrentSpec = torr.TorrentSpec
|
|
t.Title = torr.Title
|
|
t.Category = torr.Category
|
|
if torr.Data == "" {
|
|
files := new(tsFiles)
|
|
files.TorrServer.Files = torr.Status().FileStats
|
|
buf, err := json.Marshal(files)
|
|
if err == nil {
|
|
t.Data = string(buf)
|
|
torr.Data = t.Data
|
|
}
|
|
} else {
|
|
t.Data = torr.Data
|
|
}
|
|
|
|
if torr.Poster != "" && utils.CheckImgUrl(torr.Poster) {
|
|
t.Poster = torr.Poster
|
|
}
|
|
t.Size = torr.Size
|
|
if t.Size == 0 && torr.Torrent != nil {
|
|
t.Size = torr.Torrent.Length()
|
|
}
|
|
// don't override timestamp from DB on edit
|
|
t.Timestamp = torr.Timestamp // time.Now().Unix()
|
|
|
|
settings.AddTorrent(t)
|
|
}
|
|
|
|
func GetTorrentDB(hash metainfo.Hash) *Torrent {
|
|
list := settings.ListTorrent()
|
|
for _, db := range list {
|
|
if hash == db.InfoHash {
|
|
torr := new(Torrent)
|
|
torr.TorrentSpec = db.TorrentSpec
|
|
torr.Title = db.Title
|
|
torr.Poster = db.Poster
|
|
torr.Category = db.Category
|
|
torr.Timestamp = db.Timestamp
|
|
torr.Size = db.Size
|
|
torr.Data = db.Data
|
|
torr.Stat = state.TorrentInDB
|
|
return torr
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func RemTorrentDB(hash metainfo.Hash) {
|
|
settings.RemTorrent(hash)
|
|
}
|
|
|
|
func ListTorrentsDB() map[metainfo.Hash]*Torrent {
|
|
ret := make(map[metainfo.Hash]*Torrent)
|
|
list := settings.ListTorrent()
|
|
for _, db := range list {
|
|
torr := new(Torrent)
|
|
torr.TorrentSpec = db.TorrentSpec
|
|
torr.Title = db.Title
|
|
torr.Poster = db.Poster
|
|
torr.Category = db.Category
|
|
torr.Timestamp = db.Timestamp
|
|
torr.Size = db.Size
|
|
torr.Data = db.Data
|
|
torr.Stat = state.TorrentInDB
|
|
ret[torr.TorrentSpec.InfoHash] = torr
|
|
}
|
|
return ret
|
|
}
|