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
|
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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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})
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue