Valkertown Home

2008-12-02-setting my desktop backgrounds from flickr

Well I'm now trying to publish here some of the tools I use and write everyday to customize my desktop, most of them are simple hacks, this time it's a way to set your desktop background from a Flickr feed that is requested to be filtered using some tags.

Heres the code:

#!/usr/bin/python

import feedparser
import urllib
import random
FLCKR_API = "http://api.flickr.com/services/feeds/photos_public.gne"
TAGS = "fantasy,nature,night,dog,art,beach"

query = urllib.urlencode((('tags',TAGS),('tagmode','any')))
entries = feedparser.parse("%s?%s" % (FLCKR_API,query))
links = []
for entry in entries['entries']:
    for href in  entry['links']:
        if "image" in href['type']:
            links.append(href['href'])

print random.choice(links)

You should set TAGS="" to the tags you want to filter the backgrounds.

Now to use it I have the following script that I tried to make smart enough to notice when I have a dual head setup and grabs two images and makes a composition so I will have a different background on each monitor, it works nice but it has its problems.

#!/bin/sh

TOT=`wc -l ~/New.list | cut -f1 -d" "`
if [ -f /tmp/flickr ]; then
    wget `flickrget` -O /tmp/bg1.jpg > /dev/null 2>&1
    BG1="/tmp/bg1.jpg"
else
    BG1=`sed -n $[RANDOM % TOT]p ~/New.list`
fi
DIMENSIONS=`xdpyinfo | grep dimensions | sed s/".* \([0-9]*x[0-9]*\) pixels.*"/"\1"/`

if [ "$DIMENSIONS" == "1440x900" ]; then
    Esetroot -f $BG1
else
    if [ -f /tmp/flickr ]; then
        wget `flickrget` -O /tmp/bg2.jpg > /dev/null 2>&1
        BG2="/tmp/bg2.jpg"
    else
        BG2=`sed -n $[RANDOM % TOT]p ~/New.list`
    fi
    nice -20 montage -background black  -geometry 1440x900 $BG1 $BG2 /tmp/cur_bg.bmp

    Esetroot -c /tmp/cur_bg.bmp
fi

There are several things on the previous scripts that should be tweaked, first ~/New.list it's a list of my local list of backgrounds, 1440x900 it's my laptop internal video size, /tmp/flickr it's a file I use to control the source of my desktop backgrounds and finally flickrget its the name I choose for the previous python script and set it on my path.

I have setup the shell script on my awesome client to be run every 30 minutes so I get a new background after that time but also a button on my status bar to force a change when I don't like the background it choose for me.

EOP

comments powered by Disqus

© 2008-2012 Carlos A. Perilla deepspawn at valkertown dot org | Based on original design by Andreas Viklund