WIP: size limiter

This commit is contained in:
Simon Ding
2024-11-19 18:22:40 +08:00
parent be07e457d0
commit b69881d26b
4 changed files with 83 additions and 16 deletions

View File

@@ -14,10 +14,12 @@ const (
SettingNfoSupportEnabled = "nfo_support_enabled"
SettingAllowQiangban = "filter_qiangban"
SettingEnableTmdbAdultContent = "tmdb_adult_content"
SetttingSizeLimiter = "size_limiter"
SettingTvNamingFormat = "tv_naming_format"
SettingMovieNamingFormat = "movie_naming_format"
SettingProwlarrInfo = "prowlarr_info"
Setting720pSizeLimiter = "720p_size_limiter"
Setting1080ppSizeLimiter = "1080p_size_limiter"
Setting2160ppSizeLimiter = "2160p_size_limiter"
)
const (
@@ -52,14 +54,9 @@ type ResolutionType string
const JwtSerectKey = "jwt_secrect_key"
type SizeLimiter struct {
R720p Limiter `json:"720p"`
R1080p Limiter `json:"1080p"`
R2160p Limiter `json:"2160p"`
}
type Limiter struct {
Max int `json:"max"`
Min int `json:"min"`
MaxSIze int64 `json:"max_size"`
MinSize int64 `json:"min_size"`
PreferSIze int64 `json:"prefer_size"`
}
type ProwlarrSetting struct {

View File

@@ -631,19 +631,41 @@ func (c *Client) DeleteImportlist(id int) error {
return c.ent.ImportList.DeleteOneID(id).Exec(context.TODO())
}
func (c *Client) GetSizeLimiter() (*SizeLimiter, error) {
v := c.GetSetting(SetttingSizeLimiter)
func (c *Client) GetSizeLimiter(r media.Resolution) (*SizeLimiter, error) {
var v string
if r == media.Resolution720p {
v = c.GetSetting(Setting720pSizeLimiter)
} else if r == media.Resolution1080p {
v = c.GetSetting(Setting1080ppSizeLimiter)
} else if r == media.Resolution2160p {
v = c.GetSetting(Setting2160ppSizeLimiter)
} else {
return nil, errors.Errorf("resolution not supported: %v", r)
}
var limiter SizeLimiter
if v == "" {
return &limiter, nil
}
err := json.Unmarshal([]byte(v), &limiter)
return &limiter, err
}
func (c *Client) SetSizeLimiter(limiter *SizeLimiter) error {
func (c *Client) SetSizeLimiter(r media.Resolution, limiter *SizeLimiter) error {
data, err := json.Marshal(limiter)
if err != nil {
return err
}
return c.SetSetting(SetttingSizeLimiter, string(data))
if r == media.Resolution720p {
return c.SetSetting(Setting720pSizeLimiter, string(data))
} else if r == media.Resolution1080p {
return c.SetSetting(Setting1080ppSizeLimiter, string(data))
} else if r == media.Resolution2160p {
return c.SetSetting(Setting2160ppSizeLimiter, string(data))
} else {
return errors.Errorf("resolution not supported: %v", r)
}
}
func (c *Client) GetTvNamingFormat() string {