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.

Annonce

Annonceindlæg fra Computerworld

Hvad sker der, når bryllupsrejsen med AI er forbi?

Lige nu er det svært ikke at være begejstret for AI.

Navnenyt fra it-Danmark

Norriq Danmark A/S har pr. 1. juni 2026 ansat Nikolaj Henrik Pieter Jansen som Junior Consultant. Han skal især beskæftige sig med at understøtte vores konsulenter med praktiske og analytiske opgaver på diverse kundeprojekter. Han kommer fra en stilling som Digital Advisor & Account Manager hos Twentyfour. Han er uddannet hos IT-Universitetet i København. Han har tidligere beskæftiget sig med salg og projektstyring. Nyt job

Nikolaj Henrik Pieter Jansen

Norriq Danmark A/S

Softwarevirksomheden Idura, som udvikler løsninger til digital identifikation og autentifikation, har pr. 1. september 2026 ansat Alfredo Paladino, 32 år,  som Account Manager for det danske marked. Han skal især beskæftige sig med salg af Iduras MitID- og signaturløsninger i Danmark. Han kommer fra en stilling som Head of Business Development hos Goodwings. Han er uddannet kandidat i e-business. Han har tidligere beskæftiget sig med at opbygge Goodwings' kommercielle funktion og lede et internationalt BDR-team på 12 personer. Nyt job

Alfredo Paladino

Softwarevirksomheden Idura, som udvikler løsninger til digital identifikation og autentifikation,

Dansk AM Hub har pr. 1. november 2026 ansat Rasmus Pedersen som Chief Digital Officer. Rasmus skal især beskæftige sig med fokusudviddelse fra additive manufacturing til produktinnovation gennem AI, automatisering og andre nye teknologier. Rasmus er uddannet maskiningeniør med speciale i produktudvikling og med ph.d. i udvikling af modulære produktplatforme. Rasmus har tidligere beskæftiget sig med transformation og digitalisering i værdikæden fra produktudvikling til produktion. Nyt job

Rasmus Pedersen

Dansk AM Hub

Softwarevirksomheden Idura, som udvikler løsninger til digital identifikation og autentifikation, har pr. 1. september 2026 ansat Maria Juliane Friedrichsen, 47 år,  som Office Manager. Hun skal især beskæftige sig med at holde overblik og sikre, at alt på kontoret kører, som det skal. Hun kommer fra en stilling som Office Manager hos Kontorhotellet H2M. Hun er uddannet professionsbachelor i ernæring og sundhed og har en korrekturlæseruddannelse. Hun har tidligere beskæftiget sig med korrekturlæsning og den daglige drift af kontorer. Nyt job

Maria Juliane Friedrichsen

Softwarevirksomheden Idura, som udvikler løsninger til digital identifikation og autentifikation,