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/"}])