Add resolution option (#21)
* added preferred resolution to profiles * Add resolution to download option builder
This commit is contained in:
@@ -21,6 +21,7 @@ defmodule Pinchflat.Profiles.MediaProfile do
|
||||
embed_metadata
|
||||
shorts_behaviour
|
||||
livestream_behaviour
|
||||
preferred_resolution
|
||||
)a
|
||||
|
||||
@required_fields ~w(name output_path_template)a
|
||||
@@ -48,8 +49,10 @@ defmodule Pinchflat.Profiles.MediaProfile do
|
||||
# livestreams _only_ and ignore regular videos. The redundant case
|
||||
# is when one is set to :only and the other is set to :exclude.
|
||||
# See `build_format_clauses` in the Media context for more.
|
||||
field :shorts_behaviour, Ecto.Enum, values: [:include, :exclude, :only], default: :include
|
||||
field :livestream_behaviour, Ecto.Enum, values: [:include, :exclude, :only], default: :include
|
||||
field :shorts_behaviour, Ecto.Enum, values: ~w(include exclude only)a, default: :include
|
||||
field :livestream_behaviour, Ecto.Enum, values: ~w(include exclude only)a, default: :include
|
||||
|
||||
field :preferred_resolution, Ecto.Enum, values: ~w(2160p 1080p 720p 480p 360p)a, default: :"1080p"
|
||||
|
||||
has_many :sources, Source
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ defmodule Pinchflat.Profiles.Options.YtDlp.DownloadOptionBuilder do
|
||||
subtitle_options(media_profile) ++
|
||||
thumbnail_options(media_profile) ++
|
||||
metadata_options(media_profile) ++
|
||||
quality_options(media_profile) ++
|
||||
output_options(media_profile)
|
||||
|
||||
{:ok, built_options}
|
||||
@@ -87,6 +88,19 @@ defmodule Pinchflat.Profiles.Options.YtDlp.DownloadOptionBuilder do
|
||||
end)
|
||||
end
|
||||
|
||||
defp quality_options(media_profile) do
|
||||
codec_options = "+codec:avc:m4a"
|
||||
|
||||
case media_profile.preferred_resolution do
|
||||
:"360p" -> [format_sort: "res:360,#{codec_options}"]
|
||||
:"480p" -> [format_sort: "res:480,#{codec_options}"]
|
||||
:"720p" -> [format_sort: "res:720,#{codec_options}"]
|
||||
:"1080p" -> [format_sort: "res:1080,#{codec_options}"]
|
||||
:"1440p" -> [format_sort: "res:1440,#{codec_options}"]
|
||||
:"2160p" -> [format_sort: "res:2160,#{codec_options}"]
|
||||
end
|
||||
end
|
||||
|
||||
defp output_options(media_profile) do
|
||||
{:ok, output_path} = OutputPathBuilder.build(media_profile.output_path_template)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user