lib/exyt_behaviour.ex

defmodule ExytBehaviour do
  @callback download(url :: String.t(), opts :: Keyword.t(), :async) :: {atom(), String.t()}
  @callback download(url :: String.t(), opts :: Keyword.t()) :: {atom(), String.t()}
  @callback get_duration(url :: String.t()) :: {atom(), String.t()}
  @callback list_formats(url :: String.t()) :: {atom(), list()}
  @callback get_title(url :: String.t()) :: {atom(), String.t()}
  @callback get_filename(url :: String.t()) :: {atom(), String.t()}
  @callback get_description(url :: String.t()) :: {atom(), String.t()}
  @callback get_thumbnail(url :: String.t()) :: {atom(), String.t()}
  @callback get_format(url :: String.t()) :: {atom(), String.t()}
  @callback get_id(url :: String.t()) :: {atom(), String.t()}
  @callback get_url(url :: String.t()) :: {atom(), String.t()}
  @callback ytdlp(params :: list(), url :: String.t()) :: {atom(), String.t()}
end