diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index f1624b651..985a22a1d 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -633,9 +633,9 @@ This filter only strips the GPS and location metadata with Exiftool leaving colo No specific configuration. -#### Pleroma.Upload.Filter.ExiftoolReadData +#### Pleroma.Upload.Filter.Exiftool.ReadDescription -This filter only reads metadata with Exiftool so clients can prefill the media description field. +This filter reads the ImageDescription and iptc:Caption-Abstract fields with Exiftool so clients can prefill the media description field. No specific configuration. diff --git a/docs/installation/optional/media_graphics_packages.md b/docs/installation/optional/media_graphics_packages.md index 47e2ef3fb..e43c748ea 100644 --- a/docs/installation/optional/media_graphics_packages.md +++ b/docs/installation/optional/media_graphics_packages.md @@ -30,4 +30,4 @@ It is required for the following Pleroma features: It is required for the following Pleroma features: * `Pleroma.Upload.Filters.Exiftool` upload filter (related config: `Plaroma.Upload/filters` in `config/config.exs`) - * `Pleroma.Upload.Filters.ExiftoolReadData` upload filter (related config: `Plaroma.Upload/filters` in `config/config.exs`) + * `Pleroma.Upload.Filters.Exiftool.ReadDescription` upload filter (related config: `Plaroma.Upload/filters` in `config/config.exs`) diff --git a/lib/mix/tasks/pleroma/instance.ex b/lib/mix/tasks/pleroma/instance.ex index d206e1622..40a8a2320 100644 --- a/lib/mix/tasks/pleroma/instance.ex +++ b/lib/mix/tasks/pleroma/instance.ex @@ -35,7 +35,7 @@ def run(["gen" | rest]) do listen_ip: :string, listen_port: :string, strip_uploads: :string, - read_uploads_data: :string, + read_uploads_description: :string, anonymize_uploads: :string, dedupe_uploads: :string ], @@ -179,7 +179,7 @@ def run(["gen" | rest]) do strip_uploads_default ) === "y" - {read_uploads_data_message, read_uploads_data_default} = + {read_uploads_description_message, read_uploads_description_default} = if Pleroma.Utils.command_available?("exiftool") do {"Do you want to read data from uploaded files so clients can use it to prefill fields like image description? This requires exiftool, it was detected as installed. (y/n)", "y"} @@ -188,12 +188,12 @@ def run(["gen" | rest]) do "n"} end - read_uploads_data = + read_uploads_description = get_option( options, - :read_uploads_data, - read_uploads_data_message, - read_uploads_data_default + :read_uploads_description, + read_uploads_description_message, + read_uploads_description_default ) === "y" anonymize_uploads = @@ -248,7 +248,7 @@ def run(["gen" | rest]) do upload_filters: upload_filters(%{ strip: strip_uploads, - read_data: read_uploads_data, + read_description: read_uploads_description, anonymize: anonymize_uploads, dedupe: dedupe_uploads }) @@ -323,8 +323,8 @@ defp upload_filters(filters) when is_map(filters) do end enabled_filters = - if filters.read_data do - enabled_filters ++ [Pleroma.Upload.Filter.ExiftoolReadData] + if filters.read_description do + enabled_filters ++ [Pleroma.Upload.Filter.Exiftool.ReadDescription] else enabled_filters end diff --git a/lib/pleroma/application_requirements.ex b/lib/pleroma/application_requirements.ex index ea1ee71c0..117aa88cb 100644 --- a/lib/pleroma/application_requirements.ex +++ b/lib/pleroma/application_requirements.ex @@ -165,7 +165,7 @@ defp do_check_rum!(setting, migrate) do defp check_system_commands!(:ok) do filter_commands_statuses = [ check_filter(Pleroma.Upload.Filter.Exiftool, "exiftool"), - check_filter(Pleroma.Upload.Filter.ExiftoolReadData, "exiftool"), + check_filter(Pleroma.Upload.Filter.Exiftool.ReadDescription, "exiftool"), check_filter(Pleroma.Upload.Filter.Mogrify, "mogrify"), check_filter(Pleroma.Upload.Filter.Mogrifun, "mogrify"), check_filter(Pleroma.Upload.Filter.AnalyzeMetadata, "mogrify"), diff --git a/lib/pleroma/upload/filter/exiftool.ex b/lib/pleroma/upload/filter/exiftool/exiftool.ex similarity index 100% rename from lib/pleroma/upload/filter/exiftool.ex rename to lib/pleroma/upload/filter/exiftool/exiftool.ex diff --git a/lib/pleroma/upload/filter/exiftool_read_data.ex b/lib/pleroma/upload/filter/exiftool/read_description.ex similarity index 96% rename from lib/pleroma/upload/filter/exiftool_read_data.ex rename to lib/pleroma/upload/filter/exiftool/read_description.ex index c8bedfbf8..3f7b7c798 100644 --- a/lib/pleroma/upload/filter/exiftool_read_data.ex +++ b/lib/pleroma/upload/filter/exiftool/read_description.ex @@ -2,7 +2,7 @@ # Copyright © 2017-2021 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Upload.Filter.ExiftoolReadData do +defmodule Pleroma.Upload.Filter.Exiftool.ReadDescription do @moduledoc """ Gets the description from the related EXIF tags and provides them in the response if no description is provided yet. It will first check ImageDescription, when that's too long or empty, it will check iptc:Caption-Abstract. diff --git a/test/mix/tasks/pleroma/instance_test.exs b/test/mix/tasks/pleroma/instance_test.exs index e72aab701..265b679f7 100644 --- a/test/mix/tasks/pleroma/instance_test.exs +++ b/test/mix/tasks/pleroma/instance_test.exs @@ -69,7 +69,7 @@ test "running gen" do "./test/../test/instance/static/", "--strip-uploads", "y", - "--read-uploads-data", + "--read-uploads-description", "y", "--dedupe-uploads", "n", @@ -95,7 +95,7 @@ test "running gen" do assert generated_config =~ "http: [ip: {127, 0, 0, 1}, port: 4000]" assert generated_config =~ - "filters: [Pleroma.Upload.Filter.Exiftool, Pleroma.Upload.Filter.ExiftoolReadData]" + "filters: [Pleroma.Upload.Filter.Exiftool, Pleroma.Upload.Filter.Exiftool.ReadDescription]" assert File.read!(tmp_path() <> "setup.psql") == generated_setup_psql() assert File.exists?(Path.expand("./test/instance/static/robots.txt")) diff --git a/test/pleroma/upload/filter/exiftool_test.exs b/test/pleroma/upload/filter/exiftool/exiftool_test.exs similarity index 100% rename from test/pleroma/upload/filter/exiftool_test.exs rename to test/pleroma/upload/filter/exiftool/exiftool_test.exs diff --git a/test/pleroma/upload/filter/exiftool_read_data_test.exs b/test/pleroma/upload/filter/exiftool/read_description_test.exs similarity index 88% rename from test/pleroma/upload/filter/exiftool_read_data_test.exs rename to test/pleroma/upload/filter/exiftool/read_description_test.exs index 0861d293a..0e97b424b 100644 --- a/test/pleroma/upload/filter/exiftool_read_data_test.exs +++ b/test/pleroma/upload/filter/exiftool/read_description_test.exs @@ -2,7 +2,7 @@ # Copyright © 2017-2021 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Upload.Filter.ExiftoolReadDataTest do +defmodule Pleroma.Upload.Filter.Exiftool.ReadDescriptionTest do use Pleroma.DataCase, async: true alias Pleroma.Upload.Filter @@ -29,7 +29,7 @@ test "keeps description when not empty" do description: "Eight different owls" } - assert Filter.ExiftoolReadData.filter(uploads) == + assert Filter.Exiftool.ReadDescription.filter(uploads) == {:ok, :noop} end @@ -46,7 +46,7 @@ test "otherwise returns ImageDescription when present" do description: "Pictures of eight different owls" } - assert Filter.ExiftoolReadData.filter(@uploads) == + assert Filter.Exiftool.ReadDescription.filter(@uploads) == {:ok, :filtered, uploads_after} end @@ -67,7 +67,7 @@ test "otherwise returns iptc:Caption-Abstract when present" do description: "Pictures of eight different owls - iptc" } - assert Filter.ExiftoolReadData.filter(upload) == + assert Filter.Exiftool.ReadDescription.filter(upload) == {:ok, :filtered, upload_after} end @@ -80,14 +80,14 @@ test "otherwise returns nil" do description: nil } - assert Filter.ExiftoolReadData.filter(uploads) == + assert Filter.Exiftool.ReadDescription.filter(uploads) == {:ok, :filtered, uploads} end test "Return nil when image description from EXIF data exceeds the maximum length" do clear_config([:instance, :description_limit], 5) - assert Filter.ExiftoolReadData.filter(@uploads) == + assert Filter.Exiftool.ReadDescription.filter(@uploads) == {:ok, :filtered, @uploads} end @@ -100,7 +100,7 @@ test "Return nil when image description from EXIF data can't be read" do description: nil } - assert Filter.ExiftoolReadData.filter(uploads) == + assert Filter.Exiftool.ReadDescription.filter(uploads) == {:ok, :filtered, uploads} end end