fix: plexmatch

This commit is contained in:
Simon Ding
2024-07-30 20:56:44 +08:00
parent 19ab8c65de
commit 2c3fd89f2a
3 changed files with 18 additions and 4 deletions

View File

@@ -22,6 +22,13 @@ Polaris 是一个电视剧和电影的追踪软件。配置好了之后,当剧
使用此程序参考 [【快速开始】](./doc/quick_start.md)
## 原理
本程序不提供任何视频相关资源,所有的资源都通过 jackett/prowlarr 所对接的BT/PT站点提供。
1. 此程序通过调用 jackett/prowlarr API搜索相关资源然后匹配上对应的剧集
2. 把搜索到的资源送到下载器下载
3. 下载完成后归入对应的路径
## 对比 sonarr/radarr
* 更好的中文支持

View File

@@ -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())

View File

@@ -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())
}