Added setting for form; updated setting name

This commit is contained in:
Kieran Eglin 2025-01-10 16:09:00 -08:00
parent 7f2ec1e802
commit 2cbcf263e0
No known key found for this signature in database
GPG key ID: 193984967FCF432D
7 changed files with 21 additions and 13 deletions

View file

@ -15,7 +15,7 @@ defmodule Pinchflat.Settings.Setting do
:video_codec_preference,
:audio_codec_preference,
:youtube_api_key,
:extractor_sleep_interval
:extractor_sleep_interval_seconds
]
@required_fields [
@ -23,7 +23,7 @@ defmodule Pinchflat.Settings.Setting do
:pro_enabled,
:video_codec_preference,
:audio_codec_preference,
:extractor_sleep_interval
:extractor_sleep_interval_seconds
]
schema "settings" do
@ -34,7 +34,7 @@ defmodule Pinchflat.Settings.Setting do
field :apprise_server, :string
field :youtube_api_key, :string
field :route_token, :string
field :extractor_sleep_interval, :integer, default: 0
field :extractor_sleep_interval_seconds, :integer, default: 0
field :video_codec_preference, :string
field :audio_codec_preference, :string
@ -45,6 +45,6 @@ defmodule Pinchflat.Settings.Setting do
setting
|> cast(attrs, @allowed_fields)
|> validate_required(@required_fields)
|> validate_number(:extractor_sleep_interval, greater_than: 0)
|> validate_number(:extractor_sleep_interval_seconds, greater_than: 0)
end
end

View file

@ -99,7 +99,7 @@ defmodule Pinchflat.YtDlp.CommandRunner do
end
defp sleep_interval_opts(addl_opts) do
sleep_interval = Settings.get!(:extractor_sleep_interval)
sleep_interval = Settings.get!(:extractor_sleep_interval_seconds)
if sleep_interval <= 0 || Keyword.get(addl_opts, :skip_sleep_interval) do
[]

View file

@ -29,7 +29,7 @@
<section class="mt-8">
<section>
<h3 class="text-2xl text-black dark:text-white">
Indexing Settings
Extractor Settings
</h3>
<.input
@ -41,6 +41,14 @@
html_help={true}
inputclass="font-mono text-sm mr-4"
/>
<.input
field={f[:extractor_sleep_interval_seconds]}
placeholder="0"
type="number"
label="Sleep Interval"
help="Sleep interval in seconds between each extractor request. Must be a positive whole number (or set to 0 to disable)"
/>
</section>
</section>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 443 KiB

After

Width:  |  Height:  |  Size: 443 KiB

View file

@ -3,7 +3,7 @@ defmodule Pinchflat.Repo.Migrations.AddExtractorSleepIntervalToSettings do
def change do
alter table(:settings) do
add :extractor_sleep_interval, :number, null: false, default: 0
add :extractor_sleep_interval_seconds, :number, null: false, default: 0
end
end
end

View file

@ -81,9 +81,9 @@ defmodule Pinchflat.SettingsTest do
test "ensures the extractor sleep interval is positive" do
setting = Settings.record()
assert %Ecto.Changeset{valid?: true} = Settings.change_setting(setting, %{extractor_sleep_interval: 1})
assert %Ecto.Changeset{valid?: true} = Settings.change_setting(setting, %{extractor_sleep_interval: 0})
assert %Ecto.Changeset{valid?: false} = Settings.change_setting(setting, %{extractor_sleep_interval: -1})
assert %Ecto.Changeset{valid?: true} = Settings.change_setting(setting, %{extractor_sleep_interval_seconds: 1})
assert %Ecto.Changeset{valid?: true} = Settings.change_setting(setting, %{extractor_sleep_interval_seconds: 0})
assert %Ecto.Changeset{valid?: false} = Settings.change_setting(setting, %{extractor_sleep_interval_seconds: -1})
end
end
end

View file

@ -98,7 +98,7 @@ defmodule Pinchflat.YtDlp.CommandRunnerTest do
describe "run/4 when testing sleep interval options" do
test "includes sleep interval options by default" do
Settings.set(extractor_sleep_interval: 5)
Settings.set(extractor_sleep_interval_seconds: 5)
assert {:ok, output} = Runner.run(@media_url, :foo, [], "")
@ -115,8 +115,8 @@ defmodule Pinchflat.YtDlp.CommandRunnerTest do
refute String.contains?(output, "--sleep-subtitles")
end
test "doesn't include sleep interval options when extractor_sleep_interval is 0" do
Settings.set(extractor_sleep_interval: 0)
test "doesn't include sleep interval options when extractor_sleep_interval_seconds is 0" do
Settings.set(extractor_sleep_interval_seconds: 0)
assert {:ok, output} = Runner.run(@media_url, :foo, [], "")