media:description
a JSON-LD data ImageObject->creditText
Hodnoty zpracovávané dle standardu RSS přímo ze seznamu RSS položek.
Hlídejte prosím konzistenci dat vydaných v rámci RSS položek a samotného obsahu článku (data ve zdrojovém kódu dostupném pod URL článku). Článek nejprve uložíme společně s jeho položkami z RSS.
Pokud dochází k následným aktualizacím dat v článku, stahujeme obsah už ze zdrojového kódu dle priorit. Problém může např. nastat, když RSS položka pro správný náhledový obrázek použije tag media:content
(viz RSS media),
ale ve zdrojovém kódu bude kromě obrázku s tagem media:content
také jiný další obrázek s tagem og:image
(viz open graph), pak má dle priorit obrázků obrázek tagovaný og:image
přednost
a přepíše (načítáním aktualizovaných dat na naší straně) náhledový obrázek získaný z RSS. Tím by vzniklo nežádoucí chování z pohledu správného publikování dat.
Volte ve zdrojovém kódu takové tagy, které nebudou přetěžovat prioritu tagů vydaných v RSS (pokud to není záměr).
Ze standardních hodnot RSS položek načítáme hodnoty title
, description
, link
, guid
<rss version="2.0">
<channel>
...
<item>
<title>Nadpis článku</title>
<description>Popis článku</description>
<link>http://www.foo.com/bar</link>
<guid isPermaLink="false">http://www.foo.com/article/123456</guid>
</item>
</channel>
</rss>
RSS obsahuje maximálně 20 nejnovějších článků.
szn
)<rss xmlns:szn="https://www.seznam.cz" version="2.0">
<channel>
...
<item>
...
<szn:image>
<szn:url>http://www.foo.com/bar.jpg</szn:url>
</szn:image>
</item>
</channel>
</rss>
media
)Tady jsou 3 možnosti zpracovávaných obrázků. První dvě přes prvek media:content
, kde je obrázek načten podle MIMEtype určeného atributem type
nebo je obrázek načten podle atributu medium=image
. Další možností je detekce obrázku, když je obsažen prvek media:thumbnail
. U všech se poté vybere atribut url
. Popis obrázku je volitelný a je možné jej přidat přes tag media:description
<rss xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
<channel>
...
<item>
...
<media:content type="image/jpeg" url="http://www.foo.com/bar.jpg"/>
<media:description type="text/plain">Popis obrázku</media:description>
</item>
<item>
...
<media:content medium="image" url="http://www.foo.com/bar.jpg"/>
<media:description type="text/plain">Popis obrázku</media:description>
</item>
<item>
...
<media:thumbnail url="http://www.foo.com/bar.jpg" />
<media:description type="text/plain">Popis obrázku</media:description>
</item>
</channel>
</rss>
enclosure
U enclosure se bere podobně jako u media MIMEtype z atributu type
<rss xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
<channel>
...
<item>
...
<enclosure type="image/jpeg" url="http://www.foo.com/bar.jpg"/>
</item>
</channel>
</rss>
geo
)<rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">
<channel>
...
<item>
...
<geo:lat>49.868168</geo:lat>
<geo:long>12.743797</geo:long>
</item>
</channel>
</rss>
Zpracovávané jsou meta
tagy v hlavičce HTML stránky článku. Načtou se jen v případě, že data z RSS nebyla dodána nebo nebyla kompletní
<!DOCTYPE html>
<html>
<head>
...
<meta property="og:title" content="Titulek článku" />
<meta property="og:description" content="Popis článku" />
<meta property="og:image" content="http://www.foo.com/bar/image.jpg" />
</head>
...
</html>
Hodnotu pro obrázek je možno zapsat dvěma způsoby, buď hodnotou twitter:image
nebo twitter:image:src
<!DOCTYPE html>
<html>
<head>
...
<meta property="twitter:title" content="Titulek článku" />
<meta property="twitter:description" content="Popis článku" />
<meta property="twitter:image" content="http://www.foo.com/bar/image.jpg" />
<meta property="twitter:image:src" content="http://www.foo.com/bar/image.jpg" />
</head>
...
</html>
Tyto hodnoty se použijí jen pokud nebyla nastavena již dříve
<!DOCTYPE html>
<html>
<head>
...
<meta name="title" content="Titulek článku" />
<meta name="description" content="Popis článku" />
</head>
...
</html>
szn
Rozšířená nastavení článku. Některá se používají pro autopublikaci
<!DOCTYPE html>
<html>
<head>
...
<meta name="szn:galleries-image-link" content="http://www.odkaz.na/json/data/pro/galerii" />
<meta name="szn:hp-expire" content="2020-02-19T07:25:35.531Z" />
<meta name="szn:is-family-friendly" content="false" />
<meta name="szn:section" content="sport,atletika" />
</head>
...
</html>
Popis typů:
Struktura JSON-LD musí být přítomna už při načtení HTML kódu stránky. Pokud bude dogenerovávána až javascriptem, tak se data JSON-LD nezpracují. Bližší popis k jednotlivým typů naleznete na https://schema.org/. Otestovat, jestli je vaše JSON-LD validní, můžete tímto nástrojem: https://search.google.com/structured-data/testing-tool?hl=cs
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Toto je název článku",
"description": "Toto je perex článku",
"image": [
"https://example.com/photos/photo.jpg",
{
"@type": "ImageObject",
"url": "https://example.com/photos/photo2.jpg",
"caption": "Titulek obrázku",
"description": "Popis obrázku",
"creditText": "Zdroj obrázku nebo další informace o obrázku"
}
],
"datePublished": "2015-02-05T08:00:00+08:00",
"dateModified": "2015-02-05T09:20:00+08:00",
"author": {
"@id": "wd:Q12024882",
"@type": "Person",
"name": "Jindřich Šídlo",
"url" : "https://www.seznamzpravy.cz/autor/jindrich-sidlo-54",
"sameAs" : [
"https://www.facebook.com/jindrich.sidlo",
"https://twitter.com/jindrichsidlo"
]
},
"about": [
{"name":"Fotbal", "@id": "wd:Q2736"},
{"name":"Arsenal", "@id": "wd:Q9617"}
],
"contentLocation" : {
"@type" : "Place",
"geo": {
"@type": "GeoCoordinates",
"latitude": "50.0713456",
"longitude": "14.4008142"
}
},
"publisher": {
"@type": "Organization",
"name": "Název firmy",
"logo": {
"@type": "ImageObject",
"url": "https://vasedomena.com/logo.jpg"
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://vas-server.cz/url-tohoto-clanku"
},
"isFamilyFriendly": true,
"hasPart": {
"@type": "ImageGallery",
"url": "https://www.foo.com/bar/gallery/1/",
"image": [
{
"@type": "ImageObject",
"url": "https://www.foo.com/bar/gallery/1/image1.jpg",
"caption": "Titulek obrázku",
"description": "Popis obrázku"
},
...
]
},
"discussionUrl": "https://www.foo.com/bar/comments/1/",
}
</script>
Výchozí hlavní obrázek pro článek se načítá podle dostupnosti dat v daném pořadí. Nastavený obrázek článku ale může ovlivnit editor z redakce. Rozdíl mezi načtení z RSS a zdrojového kódu článku popisují způsoby načítání.
szn:image
media:content
nebo media:thumbnail
enclosure
image
v hlavní úrovni článkuog:image
, twitter:image
nebo twitter:image:src
Pro integraci tlačítka „Líbí se“ do webu můžete použít buďto jedno z předpřipravených řešení, nebo zvolit vlastnoruční integraci.
K dispozici jsou tyto přepřipravená řešení pro snadnou integraci:
Pro integraci je nutné nejdřív vložit do stránky script tlačítka (např. do <head>
nebo na
konec <body>
):
<script src="https://pocitadlolibise.seznam.cz/pocitadlolibise.js" async></script>
Tlačítko je možné umístit do stránky vložením <seznam-pocitadlolibise>
elementu na požadované
místo. Tento element má povinný atribut entity
, jehož hodnota by měla být kanonická URL stránky,
pro kterou se mají hlasy započítávat:
<seznam-pocitadlolibise entity="https://www.vasestranky.cz/zajimavy-clanek"></seznam-pocitadlolibise>
Pozor, zajištění správné funkčnosti je nutné použít samostatnou uzavírací značku
</seznam-pocitadlolibise>
, není možné použít samo-zavírací značky
(<seznam-pocitadlolibise entity="..."/>
).
Pro další možnosti integrace viz podrobný integrační návod (aktuálně pouze v angličtině).
Ukázky:
Pro předání informací o aktuálně hraných skladbách (nebo pořadech) můžete využít některý z následujících formátů. Ve všech variantách můžete vyplnit (až na uvedené výjimky povinných položek) položky podle potřeby. Pokud zvolíte variantu pluginu, musíte nám tento způsob použití (typ pluginu) oznámit, abychom data správně načítali. Pokud si nejste jistí výběrem, doporučujeme plugin songtext nebo jednu z variant přehledu dat. U varianty, která neobsahuje položky pro pořad a moderátora, můžete k tomuto účelu využít položky pro interpreta a skladbu.
Informace o právě přehrávané skladbě nebo pořadu můžete vystavit formou jednoduchého řetězce na vlastním api, které je volně přístupné přes URL. Načtení pak probíhá prostřednictvím metody GET, protokolu HTTP/1.1. Z praktických důvodů uvažujeme jen prvních 150 znaků řetězce a ostatní znaky se ignorují. Interpreta (případně jméno moderátora) doporučujeme uvést velkými písmeny.
INTERPRET - Název skladby
Předávaná data načítáme podle statusu, který mají nastavený. Status je povinná položka. Časové údaje jsou dle uvedeného formátu (viz RFC 3339).
{
"data": {
"status": "quiet", // povinná hodnota v případě, že nic nehraje
"since": "2021-01-29T10:59:56+01:00" // čas od kdy nic nehraje (RFC 3339)
}
}
{
"data": {
"status": "onair",
"interpret": "Interpret",
"track": "Název skladby",
"since": "2021-01-29T11:05:53+01:00", // čas začátku přehrávání skladby (RFC 3339)
}
}
Přehled dat je třetí možnou variantou, která nemá dohodnutý žádný plugin, kterým rozlišujeme jak data zpracovat. Data mohou být strukturovaná nebo nestrukturovaná, což rozlišujeme podle nastavené hodnoty statusu. Status určuje, zda jsou data strukturovaná nebo ne. Pozor na to, že názvy některých položek dat nemusí být u obou variant stejné.
starttime
nebo timestamp
v podobě timestamp.
{
"status": "ok", // musí být vyplněno (např. "ok")
"title": "Název skladby",
"artist": "Interpret",
"album": "Album",
"starttime": 1598439601, // čas (timestamp) začátku přehrávání skladby
"moderatorName": "Jméno moderátora",
"showName": "Název pořadu",
}
timestamp
uvádějte v podobě timestamp.
{
"song": {
"artist": "Interpret",
"title": "Název skladby",
"played_on": {
"timestamp": 1611915950 // čas (timestamp) začátku přehrávání skladby
}
},
"programme": {
"title": "Název pořadu"
},
"speaker": {
"title": "Jméno moderátora"
}
}