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