Filter the parsed OpenGraph/Twittercard tags and only retain the ones we intend to use.
This commit is contained in:
parent
2137b681dc
commit
ac0882e348
4 changed files with 13 additions and 18 deletions
1
changelog.d/rich-media-twittercard.fix
Normal file
1
changelog.d/rich-media-twittercard.fix
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Fix Rich Media parsing of TwitterCards/OpenGraph to adhere to the spec and always choose the first image if multiple are provided.
|
||||||
|
|
@ -11,5 +11,16 @@ defmodule Pleroma.Web.RichMedia.Parsers.TwitterCard do
|
||||||
|> MetaTagsParser.parse(html, "og", "property")
|
|> MetaTagsParser.parse(html, "og", "property")
|
||||||
|> MetaTagsParser.parse(html, "twitter", "name")
|
|> MetaTagsParser.parse(html, "twitter", "name")
|
||||||
|> MetaTagsParser.parse(html, "twitter", "property")
|
|> MetaTagsParser.parse(html, "twitter", "property")
|
||||||
|
|> filter_tags()
|
||||||
|
end
|
||||||
|
|
||||||
|
defp filter_tags(tags) do
|
||||||
|
Map.filter(tags, fn {k, _v} ->
|
||||||
|
cond do
|
||||||
|
k in ["card", "description", "image", "title", "ttl", "type", "url"] -> true
|
||||||
|
String.starts_with?(k, "image:") -> true
|
||||||
|
true -> false
|
||||||
|
end
|
||||||
|
end)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,6 @@ defmodule Pleroma.Web.RichMedia.ParserTest do
|
||||||
{:ok,
|
{:ok,
|
||||||
%{
|
%{
|
||||||
"card" => "summary",
|
"card" => "summary",
|
||||||
"site" => "@flickr",
|
|
||||||
"image" => "https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg",
|
"image" => "https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg",
|
||||||
"title" => "Small Island Developing States Photo Submission",
|
"title" => "Small Island Developing States Photo Submission",
|
||||||
"description" => "View the album on Flickr.",
|
"description" => "View the album on Flickr.",
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,6 @@ defmodule Pleroma.Web.RichMedia.Parsers.TwitterCardTest do
|
||||||
|
|
||||||
assert TwitterCard.parse(html, %{}) ==
|
assert TwitterCard.parse(html, %{}) ==
|
||||||
%{
|
%{
|
||||||
"app:id:googleplay" => "com.nytimes.android",
|
|
||||||
"app:name:googleplay" => "NYTimes",
|
|
||||||
"app:url:googleplay" => "nytimes://reader/id/100000006583622",
|
|
||||||
"site" => nil,
|
|
||||||
"description" =>
|
"description" =>
|
||||||
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
||||||
"image" =>
|
"image" =>
|
||||||
|
|
@ -61,16 +57,12 @@ defmodule Pleroma.Web.RichMedia.Parsers.TwitterCardTest do
|
||||||
|
|
||||||
assert TwitterCard.parse(html, %{}) ==
|
assert TwitterCard.parse(html, %{}) ==
|
||||||
%{
|
%{
|
||||||
"app:id:googleplay" => "com.nytimes.android",
|
|
||||||
"app:name:googleplay" => "NYTimes",
|
|
||||||
"app:url:googleplay" => "nytimes://reader/id/100000006583622",
|
|
||||||
"card" => "summary_large_image",
|
"card" => "summary_large_image",
|
||||||
"description" =>
|
"description" =>
|
||||||
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
||||||
"image" =>
|
"image" =>
|
||||||
"https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-facebookJumbo.jpg",
|
"https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-facebookJumbo.jpg",
|
||||||
"image:alt" => "",
|
"image:alt" => "",
|
||||||
"site" => nil,
|
|
||||||
"title" =>
|
"title" =>
|
||||||
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
|
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
|
||||||
"url" =>
|
"url" =>
|
||||||
|
|
@ -90,13 +82,11 @@ defmodule Pleroma.Web.RichMedia.Parsers.TwitterCardTest do
|
||||||
|
|
||||||
assert TwitterCard.parse(html, %{}) ==
|
assert TwitterCard.parse(html, %{}) ==
|
||||||
%{
|
%{
|
||||||
"site" => "@atlasobscura",
|
|
||||||
"title" => "The Missing Grave of Margaret Corbin, Revolutionary War Veteran",
|
"title" => "The Missing Grave of Margaret Corbin, Revolutionary War Veteran",
|
||||||
"card" => "summary_large_image",
|
"card" => "summary_large_image",
|
||||||
"image" => image_path,
|
"image" => image_path,
|
||||||
"description" =>
|
"description" =>
|
||||||
"She's the only woman veteran honored with a monument at West Point. But where was she buried?",
|
"She's the only woman veteran honored with a monument at West Point. But where was she buried?",
|
||||||
"site_name" => "Atlas Obscura",
|
|
||||||
"type" => "article",
|
"type" => "article",
|
||||||
"url" => "http://www.atlasobscura.com/articles/margaret-corbin-grave-west-point"
|
"url" => "http://www.atlasobscura.com/articles/margaret-corbin-grave-west-point"
|
||||||
}
|
}
|
||||||
|
|
@ -109,12 +99,8 @@ defmodule Pleroma.Web.RichMedia.Parsers.TwitterCardTest do
|
||||||
|
|
||||||
assert TwitterCard.parse(html, %{}) ==
|
assert TwitterCard.parse(html, %{}) ==
|
||||||
%{
|
%{
|
||||||
"site" => nil,
|
|
||||||
"title" =>
|
"title" =>
|
||||||
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
|
"She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
|
||||||
"app:id:googleplay" => "com.nytimes.android",
|
|
||||||
"app:name:googleplay" => "NYTimes",
|
|
||||||
"app:url:googleplay" => "nytimes://reader/id/100000006583622",
|
|
||||||
"description" =>
|
"description" =>
|
||||||
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
"With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
|
||||||
"image" =>
|
"image" =>
|
||||||
|
|
@ -140,9 +126,7 @@ defmodule Pleroma.Web.RichMedia.Parsers.TwitterCardTest do
|
||||||
"image:alt" =>
|
"image:alt" =>
|
||||||
"Meze de arbaro kuŝas falinta trunko, sen pingloj kaj kun branĉoj derompitaj. Post ĝi videblas du feoj: florofeo maldekstre kaj nubofeo dekstre. La florofeo iom kaŝas sin post la trunko. La nubofeo staras kaj tenas amason da pigloj. Ili iom rigardas al si.",
|
"Meze de arbaro kuŝas falinta trunko, sen pingloj kaj kun branĉoj derompitaj. Post ĝi videblas du feoj: florofeo maldekstre kaj nubofeo dekstre. La florofeo iom kaŝas sin post la trunko. La nubofeo staras kaj tenas amason da pigloj. Ili iom rigardas al si.",
|
||||||
"image:height" => "630",
|
"image:height" => "630",
|
||||||
"image:width" => "1200",
|
"image:width" => "1200"
|
||||||
"locale" => "eo",
|
|
||||||
"site_name" => "Tiriftejo"
|
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue