Added cookie file option to DL option builder
This commit is contained in:
parent
0d9998939c
commit
78d33db169
3 changed files with 50 additions and 2 deletions
|
|
@ -53,7 +53,7 @@ defmodule Pinchflat.Boot.PreJobStartupTasks do
|
|||
|
||||
defp create_blank_cookie_file do
|
||||
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, "")
|
||||
end
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ defmodule Pinchflat.Downloading.DownloadOptionBuilder do
|
|||
|
||||
built_options =
|
||||
default_options() ++
|
||||
cookie_options() ++
|
||||
subtitle_options(media_profile) ++
|
||||
thumbnail_options(media_item_with_preloads) ++
|
||||
metadata_options(media_profile) ++
|
||||
|
|
@ -43,6 +44,19 @@ defmodule Pinchflat.Downloading.DownloadOptionBuilder do
|
|||
[:no_progress, :windows_filenames]
|
||||
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
|
||||
mapped_struct = Map.from_struct(media_profile)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
defmodule Pinchflat.Downloading.DownloadOptionBuilderTest do
|
||||
use Pinchflat.DataCase
|
||||
import Pinchflat.MediaFixtures
|
||||
import Pinchflat.ProfilesFixtures
|
||||
import Pinchflat.SourcesFixtures
|
||||
import Pinchflat.ProfilesFixtures
|
||||
|
||||
alias Pinchflat.Profiles
|
||||
alias Pinchflat.Filesystem.FilesystemHelpers
|
||||
alias Pinchflat.Downloading.DownloadOptionBuilder
|
||||
|
||||
setup do
|
||||
|
|
@ -41,6 +42,39 @@ defmodule Pinchflat.Downloading.DownloadOptionBuilderTest do
|
|||
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
|
||||
test "includes :write_subs option when specified", %{media_item: media_item} do
|
||||
media_item = update_media_profile_attribute(media_item, %{download_subs: true})
|
||||
|
|
|
|||
Loading…
Reference in a new issue