Embedding av video
Video-objektene embeddes på sidene de er lagt inn på ved at templaten bruker vår egendefinerte template tag artikkel_video.
artikkel_video
bruker wagtails innebygde {% embed %}
tag
for å inkludere videoen,
og legger også på figurtekst med tittel/lengde av videoen.
Den innebygde {% embed %}
støtter ikke å embedde videoer fra
NTNUs strømmetjenester
(se liste),
men
Wagtail-dokumentasjonen for embedded content
forklarer hvordan
en hjelpeklasse for å håndtere Mediasite
kan legges til.
Hjelpeklassen artikkel.embeds.MediasiteFinder
- Kode:
src/artikkel/embeds/mediasite.py
Klassen artikkel.embeds.MediasiteFinder
implementerer en
EmbedFinder
som gjenkjenner Mediasite-videoer hostet på https://mediasite.ntnu.no/.
Mediasite støtter dessverre ikke oEmbed-protokollen, og vi har heller ikke funnet et eget API i Mediasite for å hente ut informasjonen som trengs for å embedde videoer.
Vi må derfor gjøre noen antakelser, mellom annet at Mediasite ikke kommer til å drastisk endre hvordan URL-ene er bygget opp:
Mediasite-URL-er kommer i flere versjoner, eksempelvis:
Vanlig nettside: https://mediasite.ntnu.no/Mediasite/Showcase/default/Presentation/2376995bec65411699d7e20001672d8e1d
Embeddbar side: https://mediasite.ntnu.no/Mediasite/Play/2376995bec65411699d7e20001672d8e1d
Den vanlige nettsiden har ingen <meta>
eller <link>
tags som henviser
til den embeddbare URL-en, informasjonen ligger inne i en <script>
tag
som er et javascript-objekt (som ikke er i 100% json-format, og som dessuten
ligger sammen med annen javascript-kode).
Vi omskriver derfor URL-er på den førstnevnte formen til sistnevnte form,
dermed kan vi embedde både Video-objekter som lenker til den fullstendige
Mediasite-nettsiden og objekter som lenker direkte til videostrømmen
(se metoden MediasiteFinder.rewrite_path
).
Deretter genereres en passende HTML-snippet (iframe)
for å embedde Mediasite-videoen
(se metoden MediasiteFinder.find_embed
).
Hjelpeklassen artikkel.embeds.PanoptoFinder
- Kode:
src/artikkel/embeds/panopto.py
Panopto støtter heller ikke oEmbed-protokollen, og vi har heller ikke funnet et eget API i Panopto for å hente ut informasjonen som trengs for å embedde videoer.
Vi gjør derfor som for Mediasite og skriver om URL-ene manuelt.
Installasjon
Wagtail gjøres oppmerksom på at hjelpeklassene finnes
via følgende innstilling i settings.py
:
WAGTAILEMBEDS_FINDERS = [
{
'class': 'artikkel.embeds.panopto',
},
{
'class': 'artikkel.embeds.mediasite',
},
{
'class': 'wagtail.embeds.finders.oembed',
}
]