Why only 21 images at a time?

Aaron asked a good question they other day.

Why does ObSrv only ever return 21 images at one time?

I thought it was a bug in my code, but it’s not. ObSrv pulls images from Google Image Search, and Google only ever returns 21 images in one go.

But this is not a problem. The images are embedded into a MediaRSS feed. That feed is cached for a maximum of one hour. After this time if you request the same feed, ObSrv will search again, but it will add in up to 21 extra images that weren’t shown last time.  So on subsequent calls you’ll get more than 21 images in the feed.  In the unlikely event that it runs out of images, it starts searching from the beginning again.

So although there’s nothing I can do about the 21 images at a time issue, it’s not a major problem because you will get more images after the feed refreshes – but remember, to save server resources (and to stop Google from banning me) it waits an hour between doing searches on the same terms.

On Yer Bike!

I took Steve and Harrison on a bike ride this morning, along the North Pine River, up to Lake Samsonvale, and then back along the North Pine Rover.

It was a hoot! A little bit slower than normal, because Harrison is only 9 and his bike is a bit worse for wear. But it was fun all the same.

And I got to try out a new program for my Nokia N95 mobile phone. Nokia Sports Tracker Uses the inbuilt GPS on the phone to record speed and height info. While you’re cycling, your N95 acts like a speedo, and odometer, showing you all the vital stats. But when you get home, you click the button, and upload the data to sports tracker.

The really cool thing is that if you take any photos with the phone on your journey, it will upload and geotag them.

So the map on the left here is where we went. You can drag and zoom it if you want more detail.

But the fun part is that the data is also uploaded to the Sportstracker community. Here’s a link to the data for our ride today. If you tick the “altitude” box, you can see every hill, and how fast we were going.

The thing I like most about this technology is that it adds to the fun of getting out and exercising. At times I’ve found it hard to overcome my inertia to regularly exercise. In regards to exercise, if it makes me think “Oh yeah! I want to do that again!” then I think it’s a great thing.

Oh – and you can use Sports Tracker for running, walking, skiing, rowing – whatever floats your boat.

P.S. I’ve ordered a mounting bracket to attach my phone to my handlebars. Till that arrives, I’m using some of Lilly’s hair ties 🙂

Flickr RSS Feeds. Too big, too small

Loading…
Loading…

In this article about using slideshows in wordpress I showed you how to embed slideshows in WordPress blog posts and sidebars using the Google Ajax Feed API.

I prefer to use this facility to pull in Image feeds from Flickr.

The problem with the images in these feeds is that they’re either too large or too small.

The MediaRSS specification has a <media:thumbnail> tag which lets you have a thumbnail image in your feed. That’s great, but the image size of the thumbnail is 75×75 pixels, which is useless for a nice looking slideshow. It ends up looking terribly blurry with no detail.

The Google Ajax Feeds API tries to get around this by letting you specify a “thumbnailTag” in the slideshow options object. Basically, you set this to “content” to tell the API to look for the image in the “content” section of the feed, rather than the <media:thumnail> section. This is also great, but the problem is that Flickr uses the LARGE (or even worse, ORIGINAL) image size in this section. So you get nice large detailed images in the feed, but they’re so large that they take ages to load, and your slideshow sits there for ages saying “Loading….” while it grabs the huge images and chews up your audiences bandwidth.

So I wrote a simple PHP screen scraping utility which grabs the Flickr feed, and changes the ImageUrl…_L.jpg to ImageUrl….M.jpg – in other words, it modifies the feed to include the medium size image rather than the large size.

Medium sized images are fine for slideshows, and they load quite quickly.

Here’s the PHP code:

<?php
date_default_timezone_set('UTC');
$uri="";
$first_var = "1";
foreach($_GET as $variable => $value)
{
if ($variable == 'uri')
{
$uri = $uri . $value;
}
else
{
$uri = $uri . "&" . $variable . "=" . $value;
}
}
header("Content-Type: application/xml; charset=ISO-8859-1");
$ch = curl_init() or die(curl_error());
curl_setopt($ch, CURLOPT_URL,$uri);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data1=curl_exec($ch) or die(curl_error());
$data1=str_replace("_s.jpg","_m.jpg",$data1);
$data1=str_replace('height="75"', "",$data1);
$data1=str_replace('width="75"', "",$data1);
echo $data1;
echo curl_error($ch);
curl_close($ch);
?>

Just save this in a file named FlickrRSS.php in the top folder of your wordpress directory. Then instead of using your flickr RSS feed, pass the feed as a query parameter to the PHP utility.

You’ll need to change the &lt; and &gt; tags in the file to < and >.

So if your feed URL was this:
http://api.flickr.com/services/feeds/photos_public.gne?id=YourFlickrUserNumberlang=en-us&format=rss_200

Use this instead
http://YourBlogUrl/FlickrRSS.php?uri=http://api.flickr.com/services/feeds/photos_public.gne?id=YourFlickrUserNumberlang=en-us&format=rss_200

This will change the <media:thumbnail> tag to point to the lager sized image, so your slideshows will load quickly, and look nicer 🙂