From 0e1bbe5da11b18cd6434d2f439f541f87c24a16d Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Thu, 3 Oct 2024 22:17:30 +0800 Subject: [PATCH] feat: allow set any media qulity --- ent/media/media.go | 3 ++- ent/migrate/schema.go | 2 +- ent/schema/media.go | 2 +- server/core/torrent.go | 9 +++++++-- ui/lib/search_page/submit_dialog.dart | 1 + 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ent/media/media.go b/ent/media/media.go index e092455..d602086 100644 --- a/ent/media/media.go +++ b/ent/media/media.go @@ -131,6 +131,7 @@ const ( Resolution720p Resolution = "720p" Resolution1080p Resolution = "1080p" Resolution2160p Resolution = "2160p" + ResolutionAny Resolution = "any" ) func (r Resolution) String() string { @@ -140,7 +141,7 @@ func (r Resolution) String() string { // ResolutionValidator is a validator for the "resolution" field enum values. It is called by the builders before save. func ResolutionValidator(r Resolution) error { switch r { - case Resolution720p, Resolution1080p, Resolution2160p: + case Resolution720p, Resolution1080p, Resolution2160p, ResolutionAny: return nil default: return fmt.Errorf("media: invalid enum value for resolution field: %q", r) diff --git a/ent/migrate/schema.go b/ent/migrate/schema.go index 0892d38..e05b17f 100644 --- a/ent/migrate/schema.go +++ b/ent/migrate/schema.go @@ -133,7 +133,7 @@ var ( {Name: "overview", Type: field.TypeString}, {Name: "created_at", Type: field.TypeTime}, {Name: "air_date", Type: field.TypeString, Default: ""}, - {Name: "resolution", Type: field.TypeEnum, Enums: []string{"720p", "1080p", "2160p"}, Default: "1080p"}, + {Name: "resolution", Type: field.TypeEnum, Enums: []string{"720p", "1080p", "2160p", "any"}, Default: "1080p"}, {Name: "storage_id", Type: field.TypeInt, Nullable: true}, {Name: "target_dir", Type: field.TypeString, Nullable: true}, {Name: "download_history_episodes", Type: field.TypeBool, Nullable: true, Default: false}, diff --git a/ent/schema/media.go b/ent/schema/media.go index ee58ade..bc18b1c 100644 --- a/ent/schema/media.go +++ b/ent/schema/media.go @@ -25,7 +25,7 @@ func (Media) Fields() []ent.Field { field.String("overview"), field.Time("created_at").Default(time.Now()), field.String("air_date").Default(""), - field.Enum("resolution").Values("720p", "1080p", "2160p").Default("1080p"), + field.Enum("resolution").Values("720p", "1080p", "2160p", "any").Default("1080p"), field.Int("storage_id").Optional(), field.String("target_dir").Optional(), field.Bool("download_history_episodes").Optional().Default(false).Comment("tv series only"), diff --git a/server/core/torrent.go b/server/core/torrent.go index d28f0b8..5318173 100644 --- a/server/core/torrent.go +++ b/server/core/torrent.go @@ -66,7 +66,10 @@ func SearchTvSeries(db1 *db.Client, param *SearchParam) ([]torznab.Result, error } else if len(param.Episodes) == 0 && !meta.IsSeasonPack { //want season pack, but not season pack continue } - if param.CheckResolution && meta.Resolution != series.Resolution.String() { + + if param.CheckResolution && + series.Resolution != media.ResolutionAny && + meta.Resolution != series.Resolution.String() { continue } @@ -188,7 +191,9 @@ func SearchMovie(db1 *db.Client, param *SearchParam) ([]torznab.Result, error) { } } - if param.CheckResolution && meta.Resolution != movieDetail.Resolution.String() { + if param.CheckResolution && + movieDetail.Resolution != media.ResolutionAny && + meta.Resolution != movieDetail.Resolution.String() { continue } diff --git a/ui/lib/search_page/submit_dialog.dart b/ui/lib/search_page/submit_dialog.dart index fd4f669..853c630 100644 --- a/ui/lib/search_page/submit_dialog.dart +++ b/ui/lib/search_page/submit_dialog.dart @@ -54,6 +54,7 @@ class _SubmitSearchResultState extends ConsumerState { name: "resolution", decoration: const InputDecoration(labelText: "清晰度"), items: const [ + DropdownMenuItem(value: "any", child: Text("不限")), DropdownMenuItem(value: "720p", child: Text("720p")), DropdownMenuItem(value: "1080p", child: Text("1080p")), DropdownMenuItem(value: "2160p", child: Text("2160p")),