Lav dit eget slideshow til Flickr

Sådan laver du et slideshow med dine foretrukne skærmbilleder ved hjælp af JavaScript og lidt PHP.

Artikel top billede

(Foto: Computerworld)

Af Redaktionen, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Hvad enten du bruger Flickr til at uploade billeder, se billeder eller begge dele, er her en glimrende metode, når det gælder om at præsentere photostreams. Med en stump PHP til at få adgang til Flickrs RSS-feeds og en lille smule JavaScript til a trække fotos ind og lade dem afløse hinanden kan vi nemt lave slideshows, der ser professionelle ud.

Vi valgte at lade være med at bruge Flickrs API, der kræver, at man lader sig registrere hos tjeneste og skaffer en API-nøgle. I stedet tager vi den langt enklere vej, der består i at skrive et program, der viser fotos fra en photostream-RSS-feed. Det betyder, at vi kun skal skrive kode til at hente et feed og parse de elementer fra det, som vi skal bruge.

I dette tilfælde skal vi kun bruge fotografiernes url’er, og det gør koden meget enkel.Hent et Flickr-feedEnhver Flickr-bruger har sin egen photostream. Hvis man besøger Flickrs hjemmeside (www.flickr.com) eller går til www.flickr.com/photos, kan man klikke på ethvert brugernavn for at se den tilsvarende stream.

Somme tider bliver brugernavnet brugt i url’en til at identificere stream’en, andre gange bliver en id-streng som for eksempel ”42555660@N00” brugt. Når du skal bruge det program, vi laver i denne guide, skal du bruge en af disse to strenge. Vi går ud fra, at du kalder programmet ”flickr.php”, og syntaksen ser sådan ud:

www.server.com/fl ickr.php?u=username. I denne kommando er ”www.server.com” navnet på din webserver (hvis der er tale om en lokal udviklingsserver, kan du bruge ”http://127.0.0.1/”) og ”username” identificerer den pågældende photostream. Det med ”u=” beder PHP-programmet videresende strengnavnet til GET-variablen ”u”.Vi skal bruge nogle få linjer PHP-kode for at komme i gang:

$u=stripslashes($_GET[u]);
$url=”http://flickr.com/photos”;
$rss=file_get_contents(“$url/$u/”);
$rss=strstr($rss,”rss+xml”);
$rss=strstr($rss,”http://”);
$rss=substr($rss,0,strpos($rss,’”’));
$xml=file_get_contents($rss);
$sxml=simplexml_load_string($xml);

Hvis vi ser på koden linje for linje, er det første, der sker, at indholdet af GET-variablen ”u” bliver anbragt i PHP-variablen ”$u” med alle backslash’er fjernet. Backslash’er fremkommer i strengen, hvis der er blevet skrevet en apostrof, og backslash’en står foran den. Da vi ikke vil have backslash’er, bliver de fjernet af scriptet.

Dernæst bliver der skabt en url-streng, der skal til den identificerede photostream i formatet ”http://flickr.com/photos/identifier/”. Nu bliver photostream-websiden hentet ved hjælp af funktionen ”file_get_contents()”, før den bliver parset med det formål at finde den indlejrede RSS-url. Når man ser nærmere på photostream-websider, er der en ”

Den indeholder feed’ens url. AF den grund kalder vi funktionen ”strstr()” og sætter den til at lede efter strengen ”rss+xml”. Den returnerer hele strengen, der begynder ved dette punkt. For kun at udlede url’en kalder vi funktionen igen, men beder den om at finde den næste forekomst af ”http://”, nemlig begyndelsen på RSS-url’en. Så snart vi har den, kalder vi funktionen ”substr()” for at returnere det hele op til url’ens afsluttende markeringer.

Nu, da vi har den ønskede RSS-feed’ens url i hænde, kalder vi igen file_get_contents() for at hente den og gemme dens indhold i ”$xml”. Til sidst bliver $xml parset af ”simplexml_load_string()” ind i variablen ”$sxml”, hvorfra vi kan hente de dele, vi vil.
Nu, da vi har alle vore data gemt og klar til brug, leverer den følgende kode programmets grundlæggende HTML.

Echo <<<_END
<html><head><title>Flickr Slideshow: $u</title><head>
<body bgcolor=black style=”margin:0px;”><font colour=white>
<table border=0 width=100% height=100%><tr><td><center>
<table border=1 width=810 height=610><tr><td valign=top>
<img id=p1 style=”position:absolute” width=800 height=600>
<img id=p2 style=”position:absolute” width=800 height=600>
</td></tr></table></td></tr></table>
<script>
_END;

Kommandoen “echo” bruges i denne form, hvor alt mellem de to ”_END”-tags bliver sendt til browseren. Det bliver brugt frem for simpelt hen at droppe ud af PHP og ind i HTML, så streamens titel kan blive vist rigtigt ved hjælp af variablen $u. Dernæst bliver browserens baggrundsfarve sat til sort, uden nogen margen. For at gøre det muligt at se tekst bliver skriftens farve sat til hvid. Derefter bliver der oprettet to tabeller. Den ene inden i den anden.

Den ydre tabel overtager hele det synlige område, så den indre kan blive centreret. Den indre tabel er der, for at man kan anbringe en ramme omkring slideshow-billederne.

$numpics=0;
foreach($sxml->entry as $item) {
for ($j=0 ; $j < sizeof($item->link); ++$j) {
if (strstr($item->link[$j] [type],”image”)) {
$t=str_replace(‘_m’,’’,$item->link[$j] [href]);
$t=str_replace(‘_t’,’’,$t);
$pics[$numpics++]=$t; } } }

Den første linje indstiller variablen “$numpics” til nul. Det er en tæller, der bliver brugt til at rumme antallet af fotos, der bliver fundet i RSS-feed’en.

Computerworld Events

Vi samler hvert år mere end 6.000 deltagere på mere end 70 events for it-professionelle.

Ekspertindsigt – Lyt til førende specialister og virksomheder, der deler viden om den nyeste teknologi og de bedste løsninger.
Netværk – Mød beslutningstagere, kolleger og samarbejdspartnere på tværs af brancher.
Praktisk viden – Få konkrete cases, værktøjer og inspiration, som du kan tage direkte med hjem i organisationen.
Aktuelle tendenser – Bliv opdateret på de vigtigste dagsordener inden for cloud, sikkerhed, data, AI og digital forretning.

Sikkerhed | København

Cyber Threats

Få teknisk indsigt og konkrete løsninger til at modstå moderne cyberangreb. Lær af fejl, stop angreb i tide og byg systemer med ægte resiliens. Fokus på lavniveau-detektion, netværksovervågning og hurtig gendannelse. Deltag i Cyber Threats fra...

It-løsninger | København V

Platform X 2026: Forretning, teknologi og transformation

Mød verdens stærkeste og mest effektive platforme der driver den digitale transformation samlet i København - og dyk ned i den nyeste teknologi.

Andre events | Kongens Lyngby

Årets CIO 2026

Vi samler Danmarks stærkeste digitale ledere til en dag med viden og visioner. Årets CIO 2026 fejrer 21 års jubilæum, og NEXT CIO sætter spotlight på næste generation. Deltag og bliv inspireret til at forme fremtidens strategi og eksekvering.

Se alle vores events inden for it

Navnenyt fra it-Danmark

Comsystem A/S har pr. 15. april 2026 ansat Iver Jakobsen som Technical Key Account Manager. Han skal især beskæftige sig med teknisk løsningssalg. Iver Jakobsen har 25 års erfaring fra TelCo-branchen. Han kommer fra en stilling som Key Account Manager hos E.ON Drive ApS. Han har tidligere beskæftiget sig med rådgivning og løsningssalg. Nyt job

Iver Jakobsen

Comsystem A/S

Renewtech ApS har pr. 1. april 2026 ansat Boris Sudar som Senior IT Specialist. Han skal især beskæftige sig med at sikre, at Renewtech cloudbaseret infrastruktur fortsætter på sit højeste niveau, mens han også skal drive system udvikling. Han kommer fra en stilling som Senior IT Specialist hos Eurowind Energy. Han har tidligere beskæftiget sig med Microsoft 365, Intune og sikker endepunktsstyring for hybrid og cloudbaseret infrastrukturer. Nyt job

Boris Sudar

Renewtech ApS

Den danske eID-virksomhed Idura har pr. 1. april 2026 ansat Kari Lehtimäki som Country Manager. Han skal især beskæftige sig med at styrke kendskabet til Iduras løsninger i Finland samt fremme samarbejdet med økosystemet omkring det finske Trust Network. Han kommer fra en stilling som Salgschef hos Telia Finland. Han er uddannet uddannet civilingeniør (M.Sc. Tech.) og medbringer ledelse, markedsindsigt og praktisk erfaring. Han har tidligere beskæftiget sig med salg og forretningsudvikling inden for Telias trust services-forretning. Nyt job

Kari Lehtimäki

Den danske eID-virksomhed Idura

Renewtech ApS har pr. 15. marts 2026 ansat Per Forberg som Account Manager for Sustainable Relations. Han skal især beskæftige sig med etablere nye partnerskaber med henblik på ITAD og sourcing kontrakter med hostingvirksomheder og strategiske slutbrugere. Han kommer fra en stilling som Nordic Key Account Manager hos Tesa. Han er uddannet hos Lund University og har en MBA i Management. Han har tidligere beskæftiget sig med at styrke salgsaktiviteter og partnerskaber på tværs af nordiske markeder. Nyt job

Per Forberg

Renewtech ApS