Added cookie file option to DL option builder

This commit is contained in:
Kieran Eglin 2024-03-24 18:43:16 -07:00
parent 0d9998939c
commit 78d33db169
No known key found for this signature in database
GPG key ID: 193984967FCF432D
3 changed files with 50 additions and 2 deletions

View file

@ -53,7 +53,7 @@ defmodule Pinchflat.Boot.PreJobStartupTasks do
defp create_blank_cookie_file do defp create_blank_cookie_file do
base_dir = Application.get_env(:pinchflat, :extras_directory) base_dir = Application.get_env(:pinchflat, :extras_directory)
filepath = Path.join([base_dir, "cookies.txt"]) filepath = Path.join(base_dir, "cookies.txt")
FilesystemHelpers.write_p!(filepath, "") FilesystemHelpers.write_p!(filepath, "")
end end

View file

@ -18,6 +18,7 @@ defmodule Pinchflat.Downloading.DownloadOptionBuilder do
built_options = built_options =
default_options() ++ default_options() ++
cookie_options() ++
subtitle_options(media_profile) ++ subtitle_options(media_profile) ++
thumbnail_options(media_item_with_preloads) ++ thumbnail_options(media_item_with_preloads) ++
metadata_options(media_profile) ++ metadata_options(media_profile) ++
@ -43,6 +44,19 @@ defmodule Pinchflat.Downloading.DownloadOptionBuilder do
[:no_progress, :windows_filenames] [:no_progress, :windows_filenames]
end end
defp cookie_options do
base_dir = Application.get_env(:pinchflat, :extras_directory)
cookie_file = Path.join(base_dir, "cookies.txt")
case File.read(cookie_file) do
{:ok, cookie_data} ->
if String.trim(cookie_data) != "", do: [cookies: cookie_file], else: []
{:error, _} ->
[]
end
end
defp subtitle_options(media_profile) do defp subtitle_options(media_profile) do
mapped_struct = Map.from_struct(media_profile) mapped_struct = Map.from_struct(media_profile)

View file

@ -1,10 +1,11 @@
defmodule Pinchflat.Downloading.DownloadOptionBuilderTest do defmodule Pinchflat.Downloading.DownloadOptionBuilderTest do
use Pinchflat.DataCase use Pinchflat.DataCase
import Pinchflat.MediaFixtures import Pinchflat.MediaFixtures
import Pinchflat.ProfilesFixtures
import Pinchflat.SourcesFixtures import Pinchflat.SourcesFixtures
import Pinchflat.ProfilesFixtures
alias Pinchflat.Profiles alias Pinchflat.Profiles
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Downloading.DownloadOptionBuilder alias Pinchflat.Downloading.DownloadOptionBuilder
setup do setup do
@ -41,6 +42,39 @@ defmodule Pinchflat.Downloading.DownloadOptionBuilderTest do
end end
end end
describe "build/1 when testing cookie options" do
setup do
base_dir = Application.get_env(:pinchflat, :extras_directory)
fpath = Path.join(base_dir, "cookies.txt")
{:ok, fpath: fpath}
end
test "includes cookie options when cookies.txt exists", %{media_item: media_item, fpath: fpath} do
FilesystemHelpers.write_p!(fpath, "cookie data")
assert {:ok, res} = DownloadOptionBuilder.build(media_item)
assert {:cookies, fpath} in res
end
test "doesn't include cookie options when cookies.txt blank", %{media_item: media_item, fpath: fpath} do
FilesystemHelpers.write_p!(fpath, " \n \n ")
assert {:ok, res} = DownloadOptionBuilder.build(media_item)
refute {:cookies, fpath} in res
end
test "doesn't include cookie options when cookies.txt doesn't exist", %{media_item: media_item, fpath: fpath} do
File.rm(fpath)
assert {:ok, res} = DownloadOptionBuilder.build(media_item)
refute {:cookies, fpath} in res
end
end
describe "build/1 when testing subtitle options" do describe "build/1 when testing subtitle options" do
test "includes :write_subs option when specified", %{media_item: media_item} do test "includes :write_subs option when specified", %{media_item: media_item} do
media_item = update_media_profile_attribute(media_item, %{download_subs: true}) media_item = update_media_profile_attribute(media_item, %{download_subs: true})