diff --git a/lib/pinchflat/downloading/media_downloader.ex b/lib/pinchflat/downloading/media_downloader.ex index 312c149..249752c 100644 --- a/lib/pinchflat/downloading/media_downloader.ex +++ b/lib/pinchflat/downloading/media_downloader.ex @@ -9,6 +9,7 @@ defmodule Pinchflat.Downloading.MediaDownloader do alias Pinchflat.Repo alias Pinchflat.Media + alias Pinchflat.Sources alias Pinchflat.Media.MediaItem alias Pinchflat.Utils.StringUtils alias Pinchflat.Metadata.NfoBuilder @@ -151,7 +152,8 @@ defmodule Pinchflat.Downloading.MediaDownloader do defp download_with_options(url, item_with_preloads, output_filepath, override_opts) do {:ok, options} = DownloadOptionBuilder.build(item_with_preloads, override_opts) - use_cookies = item_with_preloads.source.use_cookies + # TODO: test + use_cookies = Sources.use_cookies?(item_with_preloads.source, :downloading) runner_opts = [output_filepath: output_filepath, use_cookies: use_cookies] case YtDlpMedia.get_downloadable_status(url, use_cookies: use_cookies) do diff --git a/lib/pinchflat/fast_indexing/fast_indexing_helpers.ex b/lib/pinchflat/fast_indexing/fast_indexing_helpers.ex index 6edd3e5..bda355e 100644 --- a/lib/pinchflat/fast_indexing/fast_indexing_helpers.ex +++ b/lib/pinchflat/fast_indexing/fast_indexing_helpers.ex @@ -12,6 +12,7 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpers do alias Pinchflat.Repo alias Pinchflat.Media alias Pinchflat.Tasks + alias Pinchflat.Sources alias Pinchflat.Sources.Source alias Pinchflat.FastIndexing.YoutubeRss alias Pinchflat.FastIndexing.YoutubeApi @@ -88,12 +89,14 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpers do defp create_media_item_from_media_id(source, media_id) do url = "https://www.youtube.com/watch?v=#{media_id}" + should_use_cookies = Sources.use_cookies?(source, :metadata) command_opts = [output: DownloadOptionBuilder.build_output_path_for(source)] ++ DownloadOptionBuilder.build_quality_options_for(source) - case YtDlpMedia.get_media_attributes(url, command_opts, use_cookies: source.use_cookies) do + # TODO: test + case YtDlpMedia.get_media_attributes(url, command_opts, use_cookies: should_use_cookies) do {:ok, media_attrs} -> Media.create_media_item_from_backend_attrs(source, media_attrs) diff --git a/lib/pinchflat/metadata/metadata_file_helpers.ex b/lib/pinchflat/metadata/metadata_file_helpers.ex index 7adc632..bb8e4ea 100644 --- a/lib/pinchflat/metadata/metadata_file_helpers.ex +++ b/lib/pinchflat/metadata/metadata_file_helpers.ex @@ -9,6 +9,7 @@ defmodule Pinchflat.Metadata.MetadataFileHelpers do needed """ + alias Pinchflat.Sources alias Pinchflat.Utils.FilesystemUtils alias Pinchflat.YtDlp.Media, as: YtDlpMedia @@ -66,7 +67,8 @@ defmodule Pinchflat.Metadata.MetadataFileHelpers do yt_dlp_filepath = generate_filepath_for(media_item_with_preloads, "thumbnail.%(ext)s") real_filepath = generate_filepath_for(media_item_with_preloads, "thumbnail.jpg") command_opts = [output: yt_dlp_filepath] - addl_opts = [use_cookies: media_item_with_preloads.source.use_cookies] + # TODO: test + addl_opts = [use_cookies: Sources.use_cookies?(media_item_with_preloads.source, :metadata)] case YtDlpMedia.download_thumbnail(media_item_with_preloads.original_url, command_opts, addl_opts) do {:ok, _} -> real_filepath diff --git a/lib/pinchflat/metadata/source_metadata_storage_worker.ex b/lib/pinchflat/metadata/source_metadata_storage_worker.ex index adaf0df..adaae95 100644 --- a/lib/pinchflat/metadata/source_metadata_storage_worker.ex +++ b/lib/pinchflat/metadata/source_metadata_storage_worker.ex @@ -93,7 +93,7 @@ defmodule Pinchflat.Metadata.SourceMetadataStorageWorker do defp determine_series_directory(source) do output_path = DownloadOptionBuilder.build_output_path_for(source) runner_opts = [output: output_path] - addl_opts = [use_cookies: source.use_cookies] + addl_opts = [use_cookies: Sources.use_cookies?(source, :metadata)] {:ok, %{filepath: filepath}} = MediaCollection.get_source_details(source.original_url, runner_opts, addl_opts) case MetadataFileHelpers.series_directory_from_media_filepath(filepath) do @@ -113,6 +113,8 @@ defmodule Pinchflat.Metadata.SourceMetadataStorageWorker do defp fetch_metadata_for_source(source) do tmp_output_path = "#{tmp_directory()}/#{StringUtils.random_string(16)}/source_image.%(ext)S" base_opts = [convert_thumbnails: "jpg", output: tmp_output_path] + # TODO: test + should_use_cookies = Sources.use_cookies?(source, :metadata) opts = if source.collection_type == :channel do @@ -121,7 +123,8 @@ defmodule Pinchflat.Metadata.SourceMetadataStorageWorker do base_opts ++ [:write_thumbnail, playlist_items: 1] end - MediaCollection.get_source_metadata(source.original_url, opts, use_cookies: source.use_cookies) + # TODO: test + MediaCollection.get_source_metadata(source.original_url, opts, use_cookies: should_use_cookies) end defp tmp_directory do diff --git a/lib/pinchflat/slow_indexing/slow_indexing_helpers.ex b/lib/pinchflat/slow_indexing/slow_indexing_helpers.ex index 60d0446..3b24b3e 100644 --- a/lib/pinchflat/slow_indexing/slow_indexing_helpers.ex +++ b/lib/pinchflat/slow_indexing/slow_indexing_helpers.ex @@ -132,13 +132,15 @@ defmodule Pinchflat.SlowIndexing.SlowIndexingHelpers do {:ok, pid} = FileFollowerServer.start_link() handler = fn filepath -> setup_file_follower_watcher(pid, filepath, source) end + # TODO: test + should_use_cookies = Sources.use_cookies?(source, :indexing) command_opts = [output: DownloadOptionBuilder.build_output_path_for(source)] ++ DownloadOptionBuilder.build_quality_options_for(source) ++ build_download_archive_options(source, was_forced) - runner_opts = [file_listener_handler: handler, use_cookies: source.use_cookies] + runner_opts = [file_listener_handler: handler, use_cookies: should_use_cookies] result = MediaCollection.get_media_attributes_for_collection(source.original_url, command_opts, runner_opts) FileFollowerServer.stop(pid) diff --git a/lib/pinchflat/sources/sources.ex b/lib/pinchflat/sources/sources.ex index ad8365c..a0f1313 100644 --- a/lib/pinchflat/sources/sources.ex +++ b/lib/pinchflat/sources/sources.ex @@ -32,6 +32,15 @@ defmodule Pinchflat.Sources do source.output_path_template_override || media_profile.output_path_template end + # TODO: test + def use_cookies?(source, operation) when operation in [:indexing, :downloading, :metadata] do + case source.cookie_behaviour do + :disabled -> false + :all_operations -> true + :indexing_only -> operation == :indexing + end + end + @doc """ Returns the list of sources. Returns [%Source{}, ...] """ @@ -181,9 +190,10 @@ defmodule Pinchflat.Sources do defp add_source_details_to_changeset(source, changeset) do original_url = changeset.changes.original_url - use_cookies = Ecto.Changeset.get_field(changeset, :use_cookies) + # TODO: test + should_use_cookies = Ecto.Changeset.get_field(changeset, :cookie_behaviour) == :all_operations # Skipping sleep interval since this is UI blocking and we want to keep this as fast as possible - addl_opts = [use_cookies: use_cookies, skip_sleep_interval: true] + addl_opts = [use_cookies: should_use_cookies, skip_sleep_interval: true] case MediaCollection.get_source_details(original_url, [], addl_opts) do {:ok, source_details} ->