Merge branch 'feat/rich-media-improvements' into 'develop'
[akkoma] / lib / pleroma / html.ex
index 2cae29f35170fe5b952551b405db677c8baba9f2..20b02f091f52c2828c8c79f92101b85ab635f32c 100644 (file)
@@ -1,5 +1,5 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.HTML do
@@ -10,9 +10,7 @@ defmodule Pleroma.HTML do
     dir = Path.join(:code.priv_dir(:pleroma), "scrubbers")
 
     dir
-    |> File.ls!()
-    |> Enum.map(&Path.join(dir, &1))
-    |> Kernel.ParallelCompiler.compile()
+    |> Pleroma.Utils.compile_dir()
     |> case do
       {:error, _errors, _warnings} ->
         raise "Compiling scrubbers failed"
@@ -110,8 +108,10 @@ defmodule Pleroma.HTML do
     Cachex.fetch!(:scrubber_cache, key, fn _key ->
       result =
         content
-        |> Floki.filter_out("a.mention,a.hashtag,a[rel~=\"tag\"]")
-        |> Floki.attribute("a", "href")
+        |> Floki.parse_fragment!()
+        |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])")
+        |> Enum.take(1)
+        |> Floki.attribute("href")
         |> Enum.at(0)
 
       {:commit, {:ok, result}}