feat: proxy only affects tmdb

This commit is contained in:
Simon Ding
2024-08-03 09:54:23 +08:00
parent f4da80c845
commit 578b6a9d78
4 changed files with 30 additions and 32 deletions

View File

@@ -1,9 +1,12 @@
package tmdb
import (
"net/http"
"net/url"
"polaris/log"
"strconv"
"strings"
"time"
tmdb "github.com/cyruzin/golang-tmdb"
"github.com/pkg/errors"
@@ -14,11 +17,29 @@ type Client struct {
tmdbClient *tmdb.Client
}
func NewClient(apiKey string) (*Client, error) {
func NewClient(apiKey, proxyUrl string) (*Client, error) {
tmdbClient, err := tmdb.Init(apiKey)
if err != nil {
return nil, errors.Wrap(err, "new tmdb client")
}
if proxyUrl != "" {
//set proxy
u, err := url.Parse(proxyUrl)
if err != nil {
log.Errorf("parse proxy %v error, skip: %v", proxyUrl, err)
} else {
tmdbClient.SetClientConfig(http.Client{
Timeout: time.Second * 10,
Transport: &http.Transport{
Proxy: http.ProxyURL(u),
MaxIdleConns: 10,
IdleConnTimeout: 15 * time.Second,
},
})
}
}
return &Client{
apiKey: apiKey,
@@ -50,7 +71,6 @@ func (c *Client) GetTvDetails(id int, language string) (*tmdb.TVDetails, error)
}
}
return d, err
}
@@ -152,7 +172,7 @@ func (c *Client) GetEposideDetail(id, seasonNumber, eposideNumber int, language
return d, err
}
d.Name = detailEN.Name
d.Overview = detailEN.Overview
d.Overview = detailEN.Overview
}
return d, err
@@ -172,7 +192,7 @@ func (c *Client) GetSeasonDetails(id, seasonNumber int, language string) (*tmdb.
}
for i, ep := range detailCN.Episodes {
if !episodeNameUseful(ep.Name) && episodeNameUseful(detailEN.Episodes[i].Name){
if !episodeNameUseful(ep.Name) && episodeNameUseful(detailEN.Episodes[i].Name) {
detailCN.Episodes[i].Name = detailEN.Episodes[i].Name
detailCN.Episodes[i].Overview = detailEN.Episodes[i].Overview
}
@@ -198,7 +218,6 @@ func withLangOption(language string) map[string]string {
}
}
func episodeNameUseful(name string) bool {
return !strings.HasSuffix(name, "集") && !strings.HasPrefix(strings.ToLower(name), "episode")
}
}

View File

@@ -66,7 +66,8 @@ func (c *Client) TMDB() (*tmdb.Client, error) {
if api == "" {
return nil, errors.New("TMDB apiKey not set")
}
return tmdb.NewClient(api)
proxy := c.db.GetSetting(db.SettingProxy)
return tmdb.NewClient(api, proxy)
}
func (c *Client) MustTMDB() *tmdb.Client {

View File

@@ -39,8 +39,6 @@ type Server struct {
func (s *Server) Serve() error {
s.core.Init()
s.restoreProxy()
s.jwtSerect = s.db.GetSetting(db.JwtSerectKey)
//st, _ := fs.Sub(ui.Web, "build/web")
@@ -129,7 +127,8 @@ func (s *Server) TMDB() (*tmdb.Client, error) {
if api == "" {
return nil, errors.New("TMDB apiKey not set")
}
return tmdb.NewClient(api)
proxy := s.db.GetSetting(db.SettingProxy)
return tmdb.NewClient(api, proxy)
}
func (s *Server) MustTMDB() *tmdb.Client {

View File

@@ -3,8 +3,6 @@ package server
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"polaris/db"
"polaris/ent"
"polaris/log"
@@ -55,29 +53,10 @@ func (s *Server) SetSetting(c *gin.Context) (interface{}, error) {
s.db.SetSetting(db.SettingPlexMatchEnabled, "false")
}
s.setProxy(in.Proxy)
s.db.SetSetting(db.SettingProxy, in.Proxy)
return nil, nil
}
func (s *Server) setProxy(proxy string) {
proxyUrl, err := url.Parse(proxy)
tp := http.DefaultTransport.(*http.Transport)
if proxy == "" || err != nil {
log.Warnf("proxy url not valid, disabling: %v", proxy)
tp.Proxy = nil
s.db.SetSetting(db.SettingProxy, "")
} else {
log.Infof("set proxy to %v", proxy)
tp.Proxy = http.ProxyURL(proxyUrl)
s.db.SetSetting(db.SettingProxy, proxy)
}
}
func (s *Server) restoreProxy() {
p := s.db.GetSetting(db.SettingProxy)
s.setProxy(p)
}
func (s *Server) GetSetting(c *gin.Context) (interface{}, error) {
tmdb := s.db.GetSetting(db.SettingTmdbApiKey)
downloadDir := s.db.GetSetting(db.SettingDownloadDir)