defmodule LSG.IRC.LinkPlugin.PDF do require Logger @behaviour LSG.IRC.LinkPlugin @impl true def match(_, _), do: false @impl true def post_match(_url, "application/pdf"<>_, _header, _opts) do {:file, nil} end def post_match(_, _, _, _), do: false @impl true def post_expand(url, file, _, _) do case System.cmd("pdftitle", ["-p", file]) do {text, 0} -> text = text |> String.trim() if text == "" do :error else basename = Path.basename(url, ".pdf") text = "[#{basename}] " <> text |> String.split("\n") {:ok, text} end {_, 127} -> Logger.error("dependency `pdftitle` is missing, please install it: `pip3 install pdftitle`.") :error {error, code} -> Logger.warn("command `pdftitle` exited with status code #{code}:\n#{inspect error}") :error end end end