From 2c3fd89f2ab243931930571bb9a1d8a762a8b47e Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Tue, 30 Jul 2024 20:56:44 +0800 Subject: [PATCH] fix: plexmatch --- README.md | 7 +++++++ db/db.go | 4 ++++ server/integration.go | 11 +++++++---- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d96f678..7b7db60 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,13 @@ Polaris 是一个电视剧和电影的追踪软件。配置好了之后,当剧 使用此程序参考 [【快速开始】](./doc/quick_start.md) +## 原理 + +本程序不提供任何视频相关资源,所有的资源都通过 jackett/prowlarr 所对接的BT/PT站点提供。 + +1. 此程序通过调用 jackett/prowlarr API搜索相关资源,然后匹配上对应的剧集 +2. 把搜索到的资源送到下载器下载 +3. 下载完成后归入对应的路径 ## 对比 sonarr/radarr * 更好的中文支持 diff --git a/db/db.go b/db/db.go index 68e4cd5..a4ea7a7 100644 --- a/db/db.go +++ b/db/db.go @@ -167,6 +167,10 @@ func (c *Client) GetEpisode(seriesId, seasonNum, episodeNum int) (*ent.Episode, return c.ent.Episode.Query().Where(episode.MediaID(seriesId), episode.SeasonNumber(seasonNum), episode.EpisodeNumber(episodeNum)).First(context.TODO()) } +func (c *Client) GetEpisodeByID(epID int) (*ent.Episode, error) { + return c.ent.Episode.Query().Where(episode.ID(epID)).First(context.TODO()) +} + func (c *Client) UpdateEpiode(episodeId int, name, overview string) error { return c.ent.Episode.Update().Where(episode.ID(episodeId)).SetTitle(name).SetOverview(overview).Exec(context.TODO()) diff --git a/server/integration.go b/server/integration.go index 905828d..1346805 100644 --- a/server/integration.go +++ b/server/integration.go @@ -11,7 +11,7 @@ import ( "github.com/pkg/errors" ) -func (s *Server) writePlexmatch(seriesId int, episodeNum int, targetDir, name string) error { +func (s *Server) writePlexmatch(seriesId int, episodeId int, targetDir, name string) error { if !s.plexmatchEnabled() { return nil @@ -28,6 +28,7 @@ func (s *Server) writePlexmatch(seriesId int, episodeNum int, targetDir, name st return errors.Wrap(err, "get storage") } + //series plexmatch file _, err = st.ReadFile(filepath.Join(series.TargetDir, ".plexmatch")) if err != nil { //create new @@ -37,8 +38,10 @@ func (s *Server) writePlexmatch(seriesId int, episodeNum int, targetDir, name st } } - if episodeNum == 0 { - return nil + //season plexmatch file + ep, err := s.db.GetEpisodeByID(episodeId) + if err != nil { + return errors.Wrap(err, "query episode") } buff := bytes.Buffer{} seasonPlex := filepath.Join(targetDir, ".plexmatch") @@ -48,7 +51,7 @@ func (s *Server) writePlexmatch(seriesId int, episodeNum int, targetDir, name st } else { buff.Write(data) } - buff.WriteString(fmt.Sprintf("\nep: %d: %s\n", episodeNum, name)) + buff.WriteString(fmt.Sprintf("\nep: %d: %s\n", ep.EpisodeNumber, name)) log.Infof("write season plexmatch file content: %s", buff.String()) return st.WriteFile(seasonPlex, buff.Bytes()) }