From 979218f61501445dea451adbb523ce5a93bd1ddd Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Tue, 30 Jul 2024 20:01:41 +0800 Subject: [PATCH] feat: season plexmatch file --- server/integration.go | 19 +++++++++++++++++-- server/scheduler.go | 8 +++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/server/integration.go b/server/integration.go index d0353c3..a17ef77 100644 --- a/server/integration.go +++ b/server/integration.go @@ -1,6 +1,7 @@ package server import ( + "bytes" "fmt" "path/filepath" "polaris/db" @@ -10,7 +11,7 @@ import ( "github.com/pkg/errors" ) -func (s *Server) createPlexmatchIfNotExists(seriesId int) error { +func (s *Server) writePlexmatch(seriesId int, episodeNum int, targetDir, name string) error { if !s.plexmatchEnabled() { return nil @@ -33,7 +34,21 @@ func (s *Server) createPlexmatchIfNotExists(seriesId int) error { log.Warnf(".plexmatch file not found, create new one: %s", series.NameEn) return st.WriteFile(filepath.Join(series.TargetDir, ".plexmatch"), []byte(fmt.Sprintf("tmdbid: %d\n",series.TmdbID))) } - return nil + + if episodeNum == 0 { + return nil + } + buff := bytes.Buffer{} + seasonPlex := filepath.Join(targetDir, ".plexmatch") + data, err := st.ReadFile(seasonPlex) + if err != nil { + log.Infof("read season plexmatch: %v", err) + } else { + buff.Write(data) + } + buff.WriteString(fmt.Sprintf("ep: %d: %s\n", episodeNum, name)) + log.Infof("write season plexmatch file content: %s", buff.String()) + return st.WriteFile(seasonPlex, buff.Bytes()) } func (s *Server) plexmatchEnabled() bool { diff --git a/server/scheduler.go b/server/scheduler.go index 480f690..5c11f7a 100644 --- a/server/scheduler.go +++ b/server/scheduler.go @@ -71,9 +71,6 @@ func (s *Server) moveCompletedTask(id int) (err1 error) { log.Errorf("no season id: %v", r.TargetDir) seasonNum = -1 } - if err := s.createPlexmatchIfNotExists(r.MediaID); err != nil { - log.Errorf("create .plexmatch file error: %v", err) - } if err1 != nil { s.db.SetHistoryStatus(r.ID, history.StatusFail) @@ -84,6 +81,11 @@ func (s *Server) moveCompletedTask(id int) (err1 error) { } s.sendMsg(fmt.Sprintf(message.ProcessingFailed, err)) } else { + // .plexmatch file + if err := s.writePlexmatch(r.MediaID, r.EpisodeID, r.TargetDir, torrent.Name()); err != nil { + log.Errorf("create .plexmatch file error: %v", err) + } + delete(s.tasks, r.ID) s.db.SetHistoryStatus(r.ID, history.StatusSuccess) if r.EpisodeID != 0 {