Packages

Furlex is a structured data extraction tool written in Elixir. It currently supports unfurling oEmbed, Twitter Card, Facebook Open Graph, JSON-LD and plain ole' HTML `<meta />` data out of any url you supply.

Current section

Files

Jump to
furlex lib furlex parser facebook.ex
Raw

lib/furlex/parser/facebook.ex

defmodule Furlex.Parser.Facebook do
@behaviour Furlex.Parser
alias Furlex.Parser
@tags ~w(
fb:app_id fb:pages
og:url og:title og:description og:image og:type og:locale og:video
og:video:url og:video:secure_url og:video:type og:video:width
og:video:height og:image:url og:image:secure_url og:image:type
og:image:width og:image:height og:audio og:determiner og:locale:alternate
og:site_name og:image:alt
article:published_time article:modified_time
article:expiration_time article:author article:section article:tag
book:author book:isbn book:release_date book:tag
profile:first_name profile:last_name profile:username profile:gender
music:duration music:album music:album:disc music:album:track
music:musician music:song music:song:disc music:song:track
music:release_date music:creator
video:actor video:actor:role video:director video:duration
video:release_date video:tag video:writer video:series
)
@spec parse(String.t) :: {:ok, Map.t}
def parse(html) do
meta = &("meta[property=\"#{&1}\"]")
map = Parser.extract tags(), html, meta
{:ok, map}
end
def tags do
(config(:tags) || [])
|> Enum.concat(@tags)
|> Enum.uniq()
end
defp config(key), do: Application.get_env(:furlex, __MODULE__)[key]
end