mirror of
https://github.com/simon-ding/polaris.git
synced 2026-06-03 16:37:48 +08:00
fix download stats
This commit is contained in:
@@ -179,14 +179,6 @@ func (s *Server) Start(addr string) (int, error) {
|
|||||||
|
|
||||||
log.Infof("----------- Polaris Server Successfully Started on Port %d------------", p)
|
log.Infof("----------- Polaris Server Successfully Started on Port %d------------", p)
|
||||||
|
|
||||||
ticker := time.NewTicker(10 * time.Minute)
|
|
||||||
go func() {
|
|
||||||
for {
|
|
||||||
s.cacheDownloadedStatus()
|
|
||||||
<-ticker.C
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
return p, nil
|
return p, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -89,10 +89,16 @@ type MediaWithStatus struct {
|
|||||||
DownloadedNum int `json:"downloaded_num"`
|
DownloadedNum int `json:"downloaded_num"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) cacheDownloadedStatus() {
|
|
||||||
log.Info("cache watchlist downloaded/monitored status")
|
//missing: episode aired missing
|
||||||
|
//downloaded: all monitored episode downloaded
|
||||||
|
//monitoring: episode aired downloaded, but still has not aired episode
|
||||||
|
//for movie, only monitoring/downloaded
|
||||||
|
|
||||||
|
func (s *Server) GetTvWatchlist(c *gin.Context) (interface{}, error) {
|
||||||
list := s.db.GetMediaWatchlist(media.MediaTypeTv)
|
list := s.db.GetMediaWatchlist(media.MediaTypeTv)
|
||||||
for _, item := range list {
|
res := make([]MediaWithStatus, len(list))
|
||||||
|
for i, item := range list {
|
||||||
var ms = MediaWithStatus{
|
var ms = MediaWithStatus{
|
||||||
Media: item,
|
Media: item,
|
||||||
MonitoredNum: 0,
|
MonitoredNum: 0,
|
||||||
@@ -120,51 +126,6 @@ func (s *Server) cacheDownloadedStatus() {
|
|||||||
s.monitorNumCache.Set(item.ID, ms.MonitoredNum)
|
s.monitorNumCache.Set(item.ID, ms.MonitoredNum)
|
||||||
s.downloadNumCache.Set(item.ID, ms.DownloadedNum)
|
s.downloadNumCache.Set(item.ID, ms.DownloadedNum)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
list = s.db.GetMediaWatchlist(media.MediaTypeMovie)
|
|
||||||
for _, item := range list {
|
|
||||||
_, ok2 := s.downloadNumCache.Get(item.ID)
|
|
||||||
if ok2 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
dummyEp, err := s.db.GetMovieDummyEpisode(item.ID)
|
|
||||||
if err != nil {
|
|
||||||
log.Errorf("get dummy episode: %v", err)
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if dummyEp.Status == episode.StatusDownloaded {
|
|
||||||
s.downloadNumCache.Set(item.ID, 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//missing: episode aired missing
|
|
||||||
//downloaded: all monitored episode downloaded
|
|
||||||
//monitoring: episode aired downloaded, but still has not aired episode
|
|
||||||
//for movie, only monitoring/downloaded
|
|
||||||
|
|
||||||
func (s *Server) GetTvWatchlist(c *gin.Context) (interface{}, error) {
|
|
||||||
list := s.db.GetMediaWatchlist(media.MediaTypeTv)
|
|
||||||
res := make([]MediaWithStatus, len(list))
|
|
||||||
for i, item := range list {
|
|
||||||
var ms = MediaWithStatus{
|
|
||||||
Media: item,
|
|
||||||
MonitoredNum: 0,
|
|
||||||
DownloadedNum: 0,
|
|
||||||
}
|
|
||||||
mon, ok1 := s.monitorNumCache.Get(item.ID)
|
|
||||||
dow, ok2 := s.downloadNumCache.Get(item.ID)
|
|
||||||
if ok1 && ok2 {
|
|
||||||
ms.MonitoredNum = mon
|
|
||||||
ms.DownloadedNum = dow
|
|
||||||
} else {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
res[i] = ms
|
res[i] = ms
|
||||||
}
|
}
|
||||||
@@ -183,6 +144,18 @@ func (s *Server) GetMovieWatchlist(c *gin.Context) (interface{}, error) {
|
|||||||
dow, ok2 := s.downloadNumCache.Get(item.ID)
|
dow, ok2 := s.downloadNumCache.Get(item.ID)
|
||||||
if ok2 {
|
if ok2 {
|
||||||
ms.DownloadedNum = dow
|
ms.DownloadedNum = dow
|
||||||
|
} else {
|
||||||
|
dummyEp, err := s.db.GetMovieDummyEpisode(item.ID)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("get dummy episode: %v", err)
|
||||||
|
} else {
|
||||||
|
ms.DownloadedNum++
|
||||||
|
if dummyEp.Status == episode.StatusDownloaded {
|
||||||
|
s.downloadNumCache.Set(item.ID, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
res[i] = ms
|
res[i] = ms
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user