mirror of
https://github.com/simon-ding/polaris.git
synced 2026-05-26 20:47:57 +08:00
feat: change task scheduler
This commit is contained in:
@@ -35,7 +35,7 @@ func (s *Server) mustAddCron(spec string, cmd func()) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) checkTasks() {
|
func (s *Server) checkTasks() {
|
||||||
log.Infof("begin check tasks...")
|
log.Debug("begin check tasks...")
|
||||||
for id, t := range s.tasks {
|
for id, t := range s.tasks {
|
||||||
if !t.Exists() {
|
if !t.Exists() {
|
||||||
log.Infof("task no longer exists: %v", id)
|
log.Infof("task no longer exists: %v", id)
|
||||||
@@ -213,50 +213,27 @@ func (s *Server) downloadTvSeries() {
|
|||||||
log.Infof("begin check all tv series resources")
|
log.Infof("begin check all tv series resources")
|
||||||
allSeries := s.db.GetMediaWatchlist(media.MediaTypeTv)
|
allSeries := s.db.GetMediaWatchlist(media.MediaTypeTv)
|
||||||
for _, series := range allSeries {
|
for _, series := range allSeries {
|
||||||
detail, err := s.MustTMDB().GetTvDetails(series.TmdbID, s.language)
|
tvDetail := s.db.GetMediaDetails(series.ID)
|
||||||
if err != nil {
|
for _, ep := range tvDetail.Episodes {
|
||||||
log.Errorf("get tv details error: %v", err)
|
t, err := time.ParseInLocation("2006-01-02", ep.AirDate, time.Local)
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
lastEpisode, err := s.db.GetEpisode(series.ID, detail.LastEpisodeToAir.SeasonNumber, detail.LastEpisodeToAir.EpisodeNumber)
|
|
||||||
if err != nil {
|
|
||||||
log.Errorf("get last episode error: %v", err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if lastEpisode.Title != detail.LastEpisodeToAir.Name {
|
|
||||||
s.db.UpdateEpiode(lastEpisode.ID, detail.LastEpisodeToAir.Name, detail.LastEpisodeToAir.Overview)
|
|
||||||
}
|
|
||||||
|
|
||||||
nextEpisode, err := s.db.GetEpisode(series.ID, detail.NextEpisodeToAir.SeasonNumber, detail.NextEpisodeToAir.EpisodeNumber)
|
|
||||||
if err == nil {
|
|
||||||
if nextEpisode.Title != detail.NextEpisodeToAir.Name {
|
|
||||||
s.db.UpdateEpiode(nextEpisode.ID, detail.NextEpisodeToAir.Name, detail.NextEpisodeToAir.Overview)
|
|
||||||
log.Errorf("updated next episode name to %v", detail.NextEpisodeToAir.Name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if lastEpisode.Status == episode.StatusMissing {
|
|
||||||
if lastEpisode.AirDate != "" {
|
|
||||||
t, err := time.ParseInLocation("2006-01-02", lastEpisode.AirDate, time.Local)
|
|
||||||
if err != nil {
|
|
||||||
log.Errorf("parse air date error: airdate %v, error %v",lastEpisode.AirDate, err)
|
|
||||||
} else {
|
|
||||||
if series.CreatedAt.Sub(t) > 24*time.Hour { //24h容错时间
|
|
||||||
log.Infof("episode were aired 24h before monitoring, skipping: %v", lastEpisode.Title)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
name, err := s.searchAndDownload(series.ID, lastEpisode.SeasonNumber, lastEpisode.EpisodeNumber)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Infof("cannot find resource to download for %s: %v", lastEpisode.Title, err)
|
log.Error("air date not known, skip: %v", ep.Title)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if series.CreatedAt.Sub(t) > 24*time.Hour { //剧集在加入watchlist之前,不去下载
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if ep.Status != episode.StatusMissing { //已经下载的不去下载
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
name, err := s.searchAndDownload(series.ID, ep.SeasonNumber, ep.EpisodeNumber)
|
||||||
|
if err != nil {
|
||||||
|
log.Infof("cannot find resource to download for %s: %v", ep.Title, err)
|
||||||
} else {
|
} else {
|
||||||
log.Infof("begin download torrent resource: %v", name)
|
log.Infof("begin download torrent resource: %v", name)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -359,8 +336,10 @@ func (s *Server) checkSeiesNewSeason(media *ent.Media) error{
|
|||||||
s.db.SaveEposideDetail2(episode)
|
s.db.SaveEposideDetail2(episode)
|
||||||
}
|
}
|
||||||
} else {//update episode
|
} else {//update episode
|
||||||
log.Infof("update new episode: %+v", ep)
|
if ep.Name != epDb.Title || ep.Overview != epDb.Overview || ep.AirDate != epDb.AirDate {
|
||||||
s.db.UpdateEpiode2(epDb.ID, ep.Name, ep.Overview, ep.AirDate)
|
log.Infof("update new episode: %+v", ep)
|
||||||
|
s.db.UpdateEpiode2(epDb.ID, ep.Name, ep.Overview, ep.AirDate)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Reference in New Issue
Block a user