Random wallpapers genereren en tweeten met Python en Unsplash

Ik probeer met enige regelmaat de achtergrondafbeelding van mijn telefoon aan te passen, maar het is soms best lastig om een mooie wallpaper te vinden die ook qua formaat geschikt is voor mijn iPhone 6. Daarom bouwde ik een botje dat automatisch wallpapers genereert. Hij gebruikt daarvoor Unsplash, een toffe site waar fotografen hun foto’s met een CC0-licentie beschikbaar kunnen stellen. Dat houdt in dat iedereen de foto’s mag gebruiken, voor ieder doeleinde.

Unsplash heeft een behoorlijk goede API met een perfecte functie voor deze bot: de mogelijkheid om een willekeurige foto te tonen. Je kunt zelfs een exacte hoogte en breedte invoeren en dan knipt Unsplash een foto voor je bij. De Twitterbot draait op @everywallpaper (het was de beste naam die nog vrij was).

De wallpapers zijn vrij willekeurig, maar er zitten veel goede tussen. Het helpt dat Unsplash vrij veel hipsterige interieurfoto’s en landschappen heeft.

Hoe werkt het?

Het botje is geschreven in Python en draait op Heroku, een site waar je een soort mini-server kunt laten draaien om een script constant in de lucht te houden. Hoe dat precies werkt gaat iets te diep voor deze post, maar wie weet een andere keer.

Het python-script haalt op de Unsplash-API een willekeurige foto op met de verhouding 1334*750, oftewel de schermverhouding van een iPhone 6. De foto wordt tijdelijk opgeslagen in een mapje. Uit de API-response wordt ook de naam van de fotograaf en de link naar diens profiel opgehaald om een credit in de tweet te kunnen zetten. Vervolgens wordt de tweet met de foto en credit verstuurd.

De code

Eerst moeten er een aantal dingen ingesteld worden: de benodigde Python-libraries en de API-keys voor Twitter. Op de site van Twitter kun je een app registreren om aan die API-keys te komen. Voer die in op de plek van de ##.

Vervolgens kun je foto’s van Unsplash binnenhalen. Voor die API moet je ook een account aanmaken, zodat je een Application ID krijgt. Voer die in deze code in op de plek van de hekjes.

In de API-response van Unsplash staat een heleboel informatie: een url van de foto in het opgevraagde formaat, maar ook foto-urls in andere formaten en bijvoorbeeld de naam van de fotograaf. Sla nu de foto op in het wallpaperformaat.

Nu is de foto lokaal opgeslagen. Het is wel zo netjes om de naam van de fotograaf te vermelden. Bovendien kun je, als je dat doet, een hogere rate-limit bij Unsplash aanvragen. Standaard mag je vijftig requests per uur versturen, op zich meer dan genoeg voor dit botje.

Dan staat alles klaar om de tweet te versturen! Dat kan in Tweepy met één regel code. Tot slot verwijderen we de lokaal opgeslagen foto, om te voorkomen dat de hele server vol loopt met opgeslagen afbeeldingen.

Dat was het! Zo’n dertig regels code, alles bij elkaar. Net zo makkelijk zou je wallpapers met een ander formaat kunnen genereren. Of je zou de afbeeldingen van een andere bron kunnen halen. Artsy.net heeft bijvoorbeeld een API met kunstwerken. Er is ook een API voor foto’s van NASA. Wie weet kun je het ook nog aan Flickr of Imgur hangen, of aan een map met je eigen vakantiefoto’s…

Laat het me weten als je iets doet met dit script. Laat hieronder een reactie achter of stuur me een Tweet. En vergeet niet @everywallpaper te volgen voor mooie wallpapers voor je telefoon!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *