mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2025-03-12 14:43:03 +00:00
Rich Media Parser should use first og:image
This commit is contained in:
parent
63663ac88b
commit
cb073a9cd0
3 changed files with 173 additions and 1 deletions
|
@ -9,7 +9,7 @@ defmodule Pleroma.Web.RichMedia.Parsers.MetaTagsParser do
|
||||||
|> Enum.reduce(data, fn el, acc ->
|
|> Enum.reduce(data, fn el, acc ->
|
||||||
attributes = normalize_attributes(el, prefix, key_name, value_name)
|
attributes = normalize_attributes(el, prefix, key_name, value_name)
|
||||||
|
|
||||||
Map.merge(acc, attributes)
|
Map.merge(attributes, acc)
|
||||||
end)
|
end)
|
||||||
|> maybe_put_title(html)
|
|> maybe_put_title(html)
|
||||||
end
|
end
|
||||||
|
|
151
test/fixtures/fulmo.html
vendored
Normal file
151
test/fixtures/fulmo.html
vendored
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang='eo'>
|
||||||
|
<head>
|
||||||
|
<meta charset='utf-8'/>
|
||||||
|
<meta name='author' content='Tirifto'/>
|
||||||
|
<meta name='generator' content='Pageling'/>
|
||||||
|
<meta name='viewport' content='width=device-width,
|
||||||
|
height=device-height,
|
||||||
|
initial-scale=1.0'/>
|
||||||
|
<link rel='stylesheet' type='text/css' href='/r/stiloj/tiriftejo.css'/>
|
||||||
|
<link rel='alternate' type='application/atom+xml' href='/eo/novajhoj.atom'/>
|
||||||
|
<link rel='icon' size='16x16' type='image/vnd.microsoft.icon' href='/favicon.ico'/>
|
||||||
|
<link rel='icon' size='128x128' type='image/png' href='/icon.png'/>
|
||||||
|
<link rel='alternate' hreflang='eo' href='https://tirifto.xwx.moe/eo/rakontoj/fulmo.html'/>
|
||||||
|
<title>Fulmo</title>
|
||||||
|
<meta property='og:title' content='Fulmo'/>
|
||||||
|
<meta property='og:type' content='website'/>
|
||||||
|
<meta property='og:url' content='https://tirifto.xwx.moe/eo/rakontoj/fulmo.html'/>
|
||||||
|
<meta property='og:site_name' content='Tiriftejo'/>
|
||||||
|
<meta property='og:locale' content='eo'/>
|
||||||
|
<meta property='og:description' content='Pri feoj, kiuj devis ordigi falintan arbon.'/>
|
||||||
|
<meta property='og:image' content='https://tirifto.xwx.moe/r/ilustrajhoj/pinglordigado.png'/>
|
||||||
|
<meta property='og:image:alt' content='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.'/>
|
||||||
|
<meta property='og:image:height' content='630'/>
|
||||||
|
<meta property='og:image:width' content='1200'/>
|
||||||
|
<meta property='og:image' content='https://tirifto.xwx.moe/r/opengraph/eo.png'/>
|
||||||
|
<meta property='og:image:alt' content='La tirifta okulo ĉirkaŭita de ornamaj steloj kaj la teksto: »Tiriftejo. Esperanto.«'/>
|
||||||
|
<meta property='og:image:height' content='630'/>
|
||||||
|
<meta property='og:image:width' content='1200'/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header id='website-header'>
|
||||||
|
<nav id='website-navigation'>
|
||||||
|
<input type='checkbox' id='website-navigation-toggle'
|
||||||
|
aria-description='Montri ligilojn al ĉefaj paĝoj de la retejo.'/>
|
||||||
|
<label for='website-navigation-toggle'>Paĝoj</label>
|
||||||
|
<a href='/eo/verkoj.html'>Verkoj</a>
|
||||||
|
<a href='/eo/novajhoj.html'>Novaĵoj</a>
|
||||||
|
<a href='/eo/donacoj.html'>Donacoj</a>
|
||||||
|
<a href='/eo/prio.html'>Prio</a>
|
||||||
|
<a href='/eo/amikoj.html'>Amikoj</a>
|
||||||
|
<a href='/eo/kontakto.html'>Kontakto</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<span id='eye' role='img' aria-label=''></span>
|
||||||
|
<nav id='language-switcher'
|
||||||
|
aria-roledescription='lingvo-ŝanĝilo'>
|
||||||
|
<input type='checkbox' id='language-switcher-toggle'
|
||||||
|
aria-description='Montri ligilojn al tradukoj de tiu ĉi paĝo.'/>
|
||||||
|
<label for='language-switcher-toggle'>Lingvoj</label>
|
||||||
|
<a href='fulmo.html' lang='eo' hreflang='eo'><img aria-hidden='true' alt='' src='/r/flagoj/eo.png'/>Esperanto</a>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
<div class='bodier'>
|
||||||
|
<nav id='work-links'>
|
||||||
|
<a href='.'>Ceteraj rakontoj</a>
|
||||||
|
<a href='../bildosignoj'>Bildosignoj</a>
|
||||||
|
<a href='../eseoj'>Eseoj</a>
|
||||||
|
<a href='../ludoj'>Ludoj</a>
|
||||||
|
<a href='../poemoj'>Poemoj</a>
|
||||||
|
<a href='../vortaroj'>Vortaroj</a>
|
||||||
|
</nav>
|
||||||
|
<main>
|
||||||
|
<article>
|
||||||
|
<header>
|
||||||
|
<h1>Fulmo</h1>
|
||||||
|
<p>Skribis Tirifto</p>
|
||||||
|
<time datetime='2025-01-31'>2025-01-31</time>
|
||||||
|
</header>
|
||||||
|
<p>»Kial ĉiam mi? Tio ne justas! Oni kulpigas min, sed ja ne mi kulpas!« La nubofeo lamentis, dum ĝi ordigis restaĵojn de falinta arbo. Plejparto el la pingloj estis brulintaj, kaj el la trunko ankoraŭ leviĝis fumo.</p>
|
||||||
|
<p>Subite aŭdeblis ekstraj kraketoj deapude. Ĝi rigardis flanken, kaj vidis iun kaŭri apud la arbo, derompi branĉetojn, kaj orde ilin amasigi. Ŝajnis, ke ekde sia rimarkiĝo, la nekonatulo laŭeble kuntiriĝis, kaj strebis labori kiel eble plej silente.</p>
|
||||||
|
<p>»Saluton…?« La nubofeo stariĝis, alporolante la eston. Tiu kvazaŭ frostiĝis, sed timeme ankaŭ stariĝis.</p>
|
||||||
|
<p>»S- Saluton…« Ĝi respondis sen kuraĝo rigardi ĝiadirekten. Nun stare, videblis ke ĝi estas verdanta florofeo.</p>
|
||||||
|
<p>»… kion vi faras tie ĉi?« La nubofeo demandis.</p>
|
||||||
|
<p>»Nu… tiel kaj tiel… mi ordigas.«</p>
|
||||||
|
<p>»Ho. Mi ricevis taskon ordigi ĉi tie… se vi povas atendi, vi ne bezonas peni!«</p>
|
||||||
|
<p>»N- Nu… mi tamen volus…« Parolis la florofeo, plu deturnante la kapon.</p>
|
||||||
|
<p>»Nu… bone, se vi tion deziras… dankon!« La nubofeo dankis, kaj returniĝis al sia laboro.</p>
|
||||||
|
<p>Fojfoje ĝi scivole rigardis al sia nova kunlaboranto, kaj fojfoje renkontis similan rigardon de ĝia flanko, kiuokaze ambaŭ rigardoj rapide revenis al la ordigataj pingloj kaj branĉetoj. »(Kial tiom volonte helpi min?)« Pensis al si la nubofeo. »(Ĉu ĝi simple tiom bonkoras? Ĝi ja tre bele floras; eble ankaŭ ĝia koro tiel same belas…)« Kaj vere, ĝiaj surfloroj grandanime malfermis siajn belkolorajn folietojn, kaj bonodoris al mondo.</p>
|
||||||
|
<figure>
|
||||||
|
<picture>
|
||||||
|
<source srcset='/r/ilustrajhoj/pinglordigado.jxl' type='image/jxl'/>
|
||||||
|
<img src='/r/ilustrajhoj/pinglordigado.png' 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.'/>
|
||||||
|
</picture>
|
||||||
|
<figcaption>
|
||||||
|
Pinglordigado
|
||||||
|
<details>
|
||||||
|
<summary>© <time datetime='2025'>2025</time> Tirifto</summary>
|
||||||
|
<a href='https://artlibre.org/'><img src='/r/permesiloj/lal.svg' class='stamp licence' alt='Emblemo: Permesilo de arto libera'/></a>
|
||||||
|
</details>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
<p>Post iom da tempo, ĉiu feo tralaboris ĝis la trunkomezo, kaj proksimiĝis al la alia feo. Kaj tiam ekpezis sur ili devosento rompi la silenton.</p>
|
||||||
|
<p>»… kia bela vetero, ĉu ne?« Diris la nubofeo, tuj rimarkonte, ke mallumiĝas, kaj la ĉielo restas kovrita de nuboj.</p>
|
||||||
|
<p>»Jes ja! Tre nube. Mi ŝatas nubojn!« Respondis la alia entuziasme, sed tuj haltetis kaj deturnis la kapon. Ambaŭ feoj daŭrigis laboron silente, kaj plu proksimiĝis, ĝis tiu preskaŭ estis finita.</p>
|
||||||
|
<p>»H… H… Ho ne…!« Subite ekdiris la nubofeo urĝe.</p>
|
||||||
|
<p>»Kio okazas?!«</p>
|
||||||
|
<p>»T… Tern…!«</p>
|
||||||
|
<p>»Jen! Tenu!« La florofeo etendis manon kun granda folio. La nubofeo ĝin prenis, kaj tien ternis. Aperis ekfulmo, kaj la cindriĝinta folio disfalis.</p>
|
||||||
|
<p>»Pardonu… mi ne volis…« Bedaŭris la nubofeo. »Mi ne scias, kial tio ĉiam okazas! Tiom plaĉas al mi promeni tere, sed ĉiuj diras, ke mi maldevus, ĉar ial ĝi ĉiam finiĝas tiel ĉi.« Ĝi montris al la arbo. »Eble ili pravas…«</p>
|
||||||
|
<p>»Nu…« diris la florofeo bedaŭre, kaj etendis la manon.</p>
|
||||||
|
<p>»H… H… Ne ree…!«</p>
|
||||||
|
<p>Ekfulmis. Alia ĵus metita folio cindriĝis en la manoj de la florofeo, time ferminta la okulojn.</p>
|
||||||
|
<p>»Dankegon… mi tre ŝatas vian helpon! Kaj mi ne… ne…«</p>
|
||||||
|
<p>Metiĝis. Ekfulmis. Cindriĝis.</p>
|
||||||
|
<p>»Io tre iritas mian nazon!« Plendis la nubofeo. Poste ĝi rimarkis la florpolvon, kiu disŝutiĝis el la florofeo en la tutan ĉirkaŭaĵon, kaj eĉ tuj antaŭ la nubofeon.</p>
|
||||||
|
<p>»N- Nu…« Diris la florofeo, honte rigardanta la teron. »… pardonu.«</p>
|
||||||
|
<footer>
|
||||||
|
<noscript><p>Ĉu vi ŝatas la verkon? <a href='/eo/donacoj.html'>Subtenu min</a> aŭ kopiu adreson de la verko por diskonigi ĝin!</p></noscript>
|
||||||
|
<script id='underbuttons'>
|
||||||
|
/* @license magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt CC0-1.0 */
|
||||||
|
document.getElementById('underbuttons').outerHTML = "<p><a href='/eo/donacoj.html' class='button' target='_blank'>Subtenu min</a> <button onclick='navigator.clipboard.writeText(window.location.href.split(\"\#\")[0]).then(() => window.alert(\"Ligilo al ĉi tiu verko estas kopiita. Sendu ĝin al iu por diskonigi la verkon! 🐱\"))'>Diskonigu la verkon</button></p>"
|
||||||
|
/* @license-end */
|
||||||
|
</script>
|
||||||
|
<details class='history'>
|
||||||
|
<summary>Historio</summary>
|
||||||
|
<dl>
|
||||||
|
<dt><time datetime='2025-01-31'>2025-01-31</time></dt>
|
||||||
|
<dd>Unua publikigo.</dd>
|
||||||
|
</dl>
|
||||||
|
</details>
|
||||||
|
<details class='licence' open='details'>
|
||||||
|
<summary>Permesilo</summary>
|
||||||
|
<p>Ĉi tiun verkon vi rajtas libere kopii, disdoni, kaj ŝanĝi, laŭ kondiĉoj de la <a href='https://artlibre.org/'>Permesilo de arto libera</a>. (Resume: Vi devas mencii la aŭtoron kaj doni ligilon al la verko. Se vi ŝanĝas la verkon, vi devas laŭeble noti la faritajn ŝanĝojn, ilian daton, kaj eldoni ilin sub la sama permesilo.)</p>
|
||||||
|
<a href='https://artlibre.org/'><img src='/r/permesiloj/lal.svg' class='stamp licence' alt='Emblemo: Permesilo de arto libera'/></a>
|
||||||
|
</details>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
<footer id='website-footer'>
|
||||||
|
<div class='stamps'>
|
||||||
|
<a href='https://gnu.org/'>
|
||||||
|
<img class='stamp' src='/r/retetikedoj/gnu.png' lang='en' alt='GNU'/></a>
|
||||||
|
<img class='stamp' src='/r/retetikedoj/ihhtus.png' lang='el' alt='ΙΧΘΥΣ'/>
|
||||||
|
<img class='stamp' src='/r/retetikedoj/be-kind.apng' lang='en' alt='Be kind.'/>
|
||||||
|
<img class='stamp' src='/r/retetikedoj/kulturo-libera.png' lang='eo' alt='Kulturo libera.'/>
|
||||||
|
<img class='stamp' src='/r/retetikedoj/discord.png' lang='en' alt='Say ‘no’ to Discord.'/>
|
||||||
|
<a href='https://xwx.moe/'>
|
||||||
|
<img class='stamp' src='/r/retetikedoj/xwx-moe.png' alt='xwx.moe'/></a>
|
||||||
|
<a href='https://mojeek.co.uk' hreflang='en'>
|
||||||
|
<img class='stamp' src='/r/retetikedoj/mojeek.png' lang='en' alt='Mojeek'/></a>
|
||||||
|
<a href='https://raku.org/' hreflang='en'>
|
||||||
|
<img class='stamp' src='/r/retetikedoj/raku.png' alt='Raku'/></a>
|
||||||
|
<picture>
|
||||||
|
<source srcset='/r/retetikedoj/jxl.jxl' type='image/jxl'/>
|
||||||
|
<img class='stamp' src='/r/retetikedoj/jxl.png' alt='JPEG XL'/></picture>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -124,4 +124,25 @@ defmodule Pleroma.Web.RichMedia.Parsers.TwitterCardTest do
|
||||||
"https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html"
|
"https://www.nytimes.com/2019/08/01/nyregion/nypd-facial-recognition-children-teenagers.html"
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "takes first image if multiple are specified" do
|
||||||
|
html =
|
||||||
|
File.read!("test/fixtures/fulmo.html")
|
||||||
|
|> Floki.parse_document!()
|
||||||
|
|
||||||
|
assert TwitterCard.parse(html, %{}) ==
|
||||||
|
%{
|
||||||
|
"description" => "Pri feoj, kiuj devis ordigi falintan arbon.",
|
||||||
|
"image" => "https://tirifto.xwx.moe/r/ilustrajhoj/pinglordigado.png",
|
||||||
|
"title" => "Fulmo",
|
||||||
|
"type" => "website",
|
||||||
|
"url" => "https://tirifto.xwx.moe/eo/rakontoj/fulmo.html",
|
||||||
|
"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.",
|
||||||
|
"image:height" => "630",
|
||||||
|
"image:width" => "1200",
|
||||||
|
"locale" => "eo",
|
||||||
|
"site_name" => "Tiriftejo"
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue