mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 21:46:11 +05:00
87 lines
1.8 KiB
Go
87 lines
1.8 KiB
Go
package torr
|
|
|
|
import (
|
|
"encoding/json"
|
|
"time"
|
|
|
|
"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 utils.CheckImgUrl(torr.Poster) {
|
|
t.Poster = torr.Poster
|
|
}
|
|
t.Size = torr.Size
|
|
if t.Size == 0 && torr.Torrent != nil {
|
|
t.Size = torr.Torrent.Length()
|
|
}
|
|
t.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
|
|
}
|