From 954acefee50f3c47d055b1864ce53392e1ec93ec Mon Sep 17 00:00:00 2001 From: Chaska <166928710+chaskayote@users.noreply.github.com> Date: Fri, 26 Apr 2024 01:13:29 -0500 Subject: [PATCH] Trying to add webp --- lib/philomena/analyzers.ex | 2 ++ lib/philomena/analyzers/webp.ex | 29 +++++++++++++++++++++++++++++ lib/philomena/scrapers/pixiv.ex | 2 +- 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 lib/philomena/analyzers/webp.ex diff --git a/lib/philomena/analyzers.ex b/lib/philomena/analyzers.ex index 1a3961ec..ccb9e53d 100644 --- a/lib/philomena/analyzers.ex +++ b/lib/philomena/analyzers.ex @@ -9,6 +9,7 @@ defmodule Philomena.Analyzers do alias Philomena.Analyzers.Jpeg alias Philomena.Analyzers.Png alias Philomena.Analyzers.Svg + alias Philomena.Analyzers.Webp alias Philomena.Analyzers.Webm @doc """ @@ -33,6 +34,7 @@ defmodule Philomena.Analyzers do def analyzer("image/jpeg"), do: {:ok, Jpeg} def analyzer("image/png"), do: {:ok, Png} def analyzer("image/svg+xml"), do: {:ok, Svg} + def analyzer("image/webp"), do: {:ok, Webp} def analyzer("video/webm"), do: {:ok, Webm} def analyzer(_content_type), do: :error diff --git a/lib/philomena/analyzers/webp.ex b/lib/philomena/analyzers/webp.ex new file mode 100644 index 00000000..768347d2 --- /dev/null +++ b/lib/philomena/analyzers/webp.ex @@ -0,0 +1,29 @@ +defmodule Philomena.Analyzers.Jpeg do + def analyze(file) do + stats = stats(file) + + %{ + extension: "jpg", + mime_type: "image/webp", + animated?: false, + duration: stats.duration, + dimensions: stats.dimensions + } + end + + defp stats(file) do + case System.cmd("mediastat", [file]) do + {output, 0} -> + [_size, _frames, width, height, num, den] = + output + |> String.trim() + |> String.split(" ") + |> Enum.map(&String.to_integer/1) + + %{dimensions: {width, height}, duration: num / den} + + _ -> + %{dimensions: {0, 0}, duration: 0.0} + end + end +end diff --git a/lib/philomena/scrapers/pixiv.ex b/lib/philomena/scrapers/pixiv.ex index b339e332..91f59431 100644 --- a/lib/philomena/scrapers/pixiv.ex +++ b/lib/philomena/scrapers/pixiv.ex @@ -23,7 +23,7 @@ defmodule Philomena.Scrapers.Pixiv do end images = for x <- images do - pre = x["url_small"] || x["url_ss"] + pre = x["url_small"] || x["url_s"] {:ok, %Tesla.Env{status: 200, body: body, headers: headers}} = Philomena.Http.get(pre, [{"Referer", "https://pixiv.net/"}])