diff --git a/lib/pinchflat/settings/setting.ex b/lib/pinchflat/settings/setting.ex index be1e596..be644f2 100644 --- a/lib/pinchflat/settings/setting.ex +++ b/lib/pinchflat/settings/setting.ex @@ -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 diff --git a/lib/pinchflat/yt_dlp/command_runner.ex b/lib/pinchflat/yt_dlp/command_runner.ex index 4e9e279..a2454a8 100644 --- a/lib/pinchflat/yt_dlp/command_runner.ex +++ b/lib/pinchflat/yt_dlp/command_runner.ex @@ -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 [] diff --git a/lib/pinchflat_web/controllers/settings/setting_html/setting_form.html.heex b/lib/pinchflat_web/controllers/settings/setting_html/setting_form.html.heex index 7fe2c94..8ca8c17 100644 --- a/lib/pinchflat_web/controllers/settings/setting_html/setting_form.html.heex +++ b/lib/pinchflat_web/controllers/settings/setting_html/setting_form.html.heex @@ -29,7 +29,7 @@

- Indexing Settings + Extractor Settings

<.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)" + />
diff --git a/priv/repo/erd.png b/priv/repo/erd.png index 3934f51..60d5efd 100644 Binary files a/priv/repo/erd.png and b/priv/repo/erd.png differ diff --git a/priv/repo/migrations/20250110231704_add_extractor_sleep_interval_to_settings.exs b/priv/repo/migrations/20250110231704_add_extractor_sleep_interval_to_settings.exs index 875fbc9..17dd735 100644 --- a/priv/repo/migrations/20250110231704_add_extractor_sleep_interval_to_settings.exs +++ b/priv/repo/migrations/20250110231704_add_extractor_sleep_interval_to_settings.exs @@ -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 diff --git a/test/pinchflat/settings_test.exs b/test/pinchflat/settings_test.exs index f6117cf..56b9579 100644 --- a/test/pinchflat/settings_test.exs +++ b/test/pinchflat/settings_test.exs @@ -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 diff --git a/test/pinchflat/yt_dlp/command_runner_test.exs b/test/pinchflat/yt_dlp/command_runner_test.exs index 61a91c6..9f8382b 100644 --- a/test/pinchflat/yt_dlp/command_runner_test.exs +++ b/test/pinchflat/yt_dlp/command_runner_test.exs @@ -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, [], "")