Merge remote-tracking branch 'pleroma/develop' into remote-deletions
[akkoma] / lib / pleroma / web / metadata / providers / open_graph.ex
index 332684782a49df192657cdd335565a38b784ddc2..df0cca74a6ce5a58a12f19af7966d170afa22f2a 100644 (file)
@@ -37,7 +37,8 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do
     ] ++
       if attachments == [] or Metadata.activity_nsfw?(object) do
         [
-          {:meta, [property: "og:image", content: MediaProxy.preview_url(User.avatar_url(user))], []},
+          {:meta, [property: "og:image", content: MediaProxy.preview_url(User.avatar_url(user))],
+           []},
           {:meta, [property: "og:image:width", content: 150], []},
           {:meta, [property: "og:image:height", content: 150], []}
         ]
@@ -58,7 +59,8 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do
         {:meta, [property: "og:url", content: user.uri || user.ap_id], []},
         {:meta, [property: "og:description", content: truncated_bio], []},
         {:meta, [property: "og:type", content: "article"], []},
-        {:meta, [property: "og:image", content: MediaProxy.preview_url(User.avatar_url(user))], []},
+        {:meta, [property: "og:image", content: MediaProxy.preview_url(User.avatar_url(user))],
+         []},
         {:meta, [property: "og:image:width", content: 150], []},
         {:meta, [property: "og:image:height", content: 150], []}
       ]
@@ -78,10 +80,11 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do
                 | acc
               ]
 
-            # Not using preview_url for this. It saves bandwidth, but the image dimensions will be wrong.
-            # We generate it on the fly and have no way to capture or analyze the image to get the dimensions.
-            # This can be an issue for apps/FEs rendering images in timelines too, but you can get clever with
-            # the aspect ratio metadata as a workaround.
+            # Not using preview_url for this. It saves bandwidth, but the image dimensions will
+            # be wrong. We generate it on the fly and have no way to capture or analyze the
+            # image to get the dimensions. This can be an issue for apps/FEs rendering images
+            # in timelines too, but you can get clever with the aspect ratio metadata as a
+            # workaround.
             "image" ->
               [
                 {:meta, [property: "og:image", content: MediaProxy.url(url["href"])], []},
@@ -126,14 +129,17 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do
     end
   end
 
-  defp maybe_add_video_thumbnail(url, metadata) do
+  # Media Preview Proxy makes thumbnails of videos without resizing, so we can trust the
+  # width and height of the source video.
+  defp maybe_add_video_thumbnail(metadata, url) do
     cond do
       Pleroma.Config.get([:media_preview_proxy, :enabled], false) ->
-        [
-          {:meta, [property: "og:image:width", content: "#{url["width"]}"], []},
-          {:meta, [property: "og:image:height", content: "#{url["height"]}"], []},
-          {:meta, [property: "og:image", content: MediaProxy.preview_url(url["href"])], []}
-        ]
+        metadata ++
+          [
+            {:meta, [property: "og:image:width", content: "#{url["width"]}"], []},
+            {:meta, [property: "og:image:height", content: "#{url["height"]}"], []},
+            {:meta, [property: "og:image", content: MediaProxy.preview_url(url["href"])], []}
+          ]
 
       true ->
         metadata