Leaving Flickr - How to download all your photos

CC-BY: Dazzie D
Your "Pro" membership might be expiring, you may be nearing the 200 photo limit for free account or recurring rumors of a Yahoo!-Microsoft merger might be prompting you to consider alternative services. Either way - odd are that Flickr has all your precious photos, and you want them back! This is how I did it:

First, I'll warn you that this guide may get a bit technical, as it includes a little command line work, if you're comfortable with that - read on.

The backstory
I've been using Flickr for almost four years, and shortly after joining, I decided to upgrade to a pro status so my account could double as an image backup solution. Since then, I got my first SLR, and by 2009, I was shooting only RAW. Flickr's poor RAW support plus the fact that restoring anything larger than one photo set from Flickr would not be a simple matter - both prompted me to find an alternative backup solution.
Today, I backup my whole photo library to both a local mirror drive, and crashplan+ - a remote online backup service.
Once I no longer needed a Flickr Pro account for backup purposes, 25$ a year became rather pricey for the questionable privilege of  "Access to your original files" and "Unlimited sets and collections" - seriously Flickr, it's my data! let me have it back!

All that remained to be done before I could let my Pro account expire was to download my photostream, and make sure that I indeed had local copies of all my Flickr photos.

Downloading the photostream
CC-BY-SA: rbrwr
There are quite a few programs out there that can help you download full resolution imgaes from your Flickr account, to name a few: FlickrEdit, Downloadr the for-pay Bulkr and the now banned Flickrdown.
If you only have about 1,000 photos to back up - FlickrEdit is your best choice, it has a user friendly graphic interface, and works rather well.

If, on the other hand, you have thousands of photos to download (over 33,000 in my case) - your best bet it FlickrTouchr. This python script will log on to your Flickr account, and download all your images, into folders based on your Flickr sets!
The original script was set to download "Large" size images rather than originals, and seemed a bit slow on my connection, so I modified to to download originals and... (drumroll) ... use concurrent threaded downloads!

You can download my modified version - FlickrTouchrThreaded. To use it, you'll have Python installed. If your using Linux, you probably know how to do this yourself, Mac users should already have python installed by default, and windows users can find installation instructions here.
Once you have Python installed, backing up your entire photostream is a easy as typing:
python flickrtouchrthreaded.py FlickrBackupFolder 3
 Where "FlickrBackupFolder" is the name of the folder you want to back up to, followed by the number of download threads you want to run (in this case - three). This will begin downloading you whole photostream to the your selected backup folder, with sub folders based on your Flickr sets. Images not in sets will be downloaded to a "No Set" folder.

In my case I found that using more than 3 threads didn't improve my overall download speed, you can play around with the number of threads the script uses, but I wouldn't increase it over 10 so Flickr doesn't get too mad at you :)

The first time you run it, it will send you to the Flickr website and request authorization for your Flickr account, subsequent runs will start downloading immediately. You'll also note that if the script was interrupted, you can just re-run it, and it will pick up where it left off, just be sure to point it to the same folder.

A few hours later (or in my case, one week 33,640 photos and about 80GB later) you'll have your entire Flickr photostream backed up.

Finding Corrupt Images
Photo: Boaz Arad
Once you've got your whole photostream backed up, you'll want to be sure that all your images downloaded correctly. FlickrToucher does a rather good job, and will rarely corrupt any images in transit, but even one corrupt photo out of thousands could really ruin your day - especially if it happens to be your best wedding picture, or the only group of your speedskating group (see left).

To scan for corrupt JPG images, i used cPicture.
cPicture is a commercial product ($19.99 per license), but the freely available trial will allow you so scan for corrupt images without limitation. Just pick a folder, and click "Check Pictures". After churning through your photos, it will output a text file with a list of corrupt images.
If you used FlickrTouchr to download your photostream, the filenames of the images should be their Flickr photo-id's - so you can easily find them online by browsing to
http://www.flickr.com/photos/your_flickr_username/photo_id/
If anyone can reccomend a similar utility for Max and Linux users, I'd love to hear from you in the comments.

Finding duplicate photos
Photo: Boaz Arad
Some of the downloaded photos from your photostream will no doubt be duplicates of photos you already have on your hard-drive. In order to prevent wasted space - you should scan the downloaded photos for duplicates. I recommend MindGem's Fast Duplicate File Finder (FDFF) - again, a commercial product, but the trial version likely contains all the features you'll need.

Conclusion
Once you've weeded out corrupt and duplicate images, it's time to merge the backup back into your local photo library. Both Google's (free) Picasa and Adobe's (pricy!) Lightroom do a great job of keeping you pictures in order, and I recommend using one or both regularly.
It's also a good practice to always keep local copies of all your images, and never relay on online services (Flickr, Facebook etc.) as your only photo storage solution - as these can be notoriously unreliable.

FlickrTouchrThreaded - Download all your Flickr Photos FAST!

CC-BY: Agustín Ruiz
FlickrTouchr is a nifty little python script that lets you automatically download your whole Flickr photostream. Unfortunately, I found that it worked rather slowly - and traffic would plummet to zero between images.

Enter FlickrToucherThreaded! This modified new version of FlickrTouchr allows simultaneous downloading of multiple images, using concurrent download threads. The number of threads is user configurable - in order to allow optimization for each individuals connection and CPU.

FlickrToucherThreaded Version 0.1 is available for download here.

FlickrToucherThreaded is based on FlickrToucher - originally by Colm MacCarthaigh, and improved by Dan Benjamin. Both scripts are distributed under the Apache 2.0 License.

I intend to continue developing this script in the near future, coming soon:
Cleaner Thread Shutdown.
Configurable default image size.
Incorporation of improvements by tonyduckles.

So stay tuned!

Blogger: Filter posts by label on your main page

I spent quit a while phishing around google trying to figure out how to prevent posts with a certain label from appearing on my main page over at blogger/blogspot. Eventually, I used an adaptation of this method (also detailed here).

To applay this method, edit your blogger sites XML template (be sure to back it up first!), and click "Expand Widget Templates". Now look for the line:

<b:loop values='data:posts' var='post'>

And find the matching </b:loop> tag.

Replace them and everything between them with the following code:

<b:loop values='data:posts' var='post'>
<b:if cond='data:blog.url == data:blog.homepageUrl'>
<b:if cond='data:post.labels'>
<b:loop values='data:post.labels' var='label'>
<b:if cond='data:label.isLast == &quot;true&quot;'>
<b:if cond='data:label.name != "Label_To_Filter">
<b:include data='post' name='printPosts'/>
</b:if>
</b:if>
</b:loop>
</b:if>
<b:else/>
<b:include data='post' name='printPosts'/>
</b:if>
</b:loop>

Now look for the last </b:includable> tag you can find, and paste this code directly after it:

<b:includable id='printPosts' var='post'>
<b:if cond='data:post.dateHeader'>
<h2 class='date-header'>
<data:post.dateHeader/>
</h2>
</b:if>
<b:include data='post' name='post'/>
<b:if cond='data:blog.pageType == "item"'>
<b:include data='post' name='comments'/>
</b:if>
</b:includable>

Note that this code has a few bugs:

  1. Posts with no label will not be displayed on the main page.

  2. The filtered label must be the last label of a filtered post.

  3. If all your recent stories belong to the filtered category, your blog may appear empty.


I consider these "Features" as they suit my need over at www.luxphile.com - preventing any of my Texture labeled posts from showing up on the main page, and also hiding unlabeled "Blog this" posts from Flickr.

Sharing the Xerox 6125 N With Linux clients

In this post I will describe how to share a Xerox 6125 or 6125N printer with a Linux machine through a windows host.

The Xerox 6125 (or 6125N) is an amazing deal - a 300$ network-enabled color laser printer.
Unfortunately, this great price tag comes with one major downside - absolutely no linux compatibility WHATSOEVER.
The Xerox 6125 uses a Host Based PDL and as opposed to most Xerox machines - does not support Postscript or PCL printing languages. Xerox has not released any proprietary drivers for it, and for this reason the Open printing database has categorized it as a paperweight.

There is, however, a way around this - if you have at least one windows machine on your network. By creating a virtual postscript printer, and routing its output to the Xerox 6125 through the windows driver - you can share the printer with any machine capable of printing postscript - namely any major Linux distribution (and mac-os X of course!).

Henrik Schmiediche has written a great guide to setting up a virtual gostscript printer on your windows machine - wich can be found here or mirrored in PDF format here.
Once you have set up your virtual postscript printer, and shared it over the network - set up your linux clients to print to it - either using the same driver as the virtual printer, or the generic "Raw Queue" driver (The HP Color Laserjet 4550 PS suggested in the article works great - make sure you use the postscript version of the driver!).

Configuring Lenovo 3000 N100 sound card on Linux

I just got a new Lenovo Laptop, the Lenovo 3000 N100 0768-FSG to be exact. I installed SUSE 10.2, and also played around with a Ubuntu 7.04 live cd - neither of which recognized the sound-card. Actually, the sound card was recognized, and configured with the snd-hda-intel driver - but the speakers simply didn't work, neither did headphones.

I solved this in SUSE 10.2 by manually updating the ALSA drivers from the bundled 1.0.14 version to the 1.0.15rc3 development version - this required manual compilation, and installing my distributions kernel source package. The latest ALSA drivers can be found at www.alsa-project.org.

Instructions for installing the latest ALSA drivers from source can be found here, you will only need the alsa-driver package to get the sound working on your laptop, the rest of the packages should have been bundled with your linux distribution and do not require updating.

There are several sites that report getting the sound to work by adding one of the following lines to /etc/modprobe.d/alsa-base:
options snd-hda-intel model=auto
options snd-hda-intel model=lenovo
options snd-hda-intel model=laptop-eapd
options snd-hda-intel model=3stack
And then restarting the sound module. Different lines seem to work for different ALSA versions, and different Lenovo 3000 or other intel powered laptop models. so you might want to try some of these before installing the development drivers.

In SUSE this can also be accomplished by running YaST -> Hardware -> Sound, selcting your sound card and clicking "Edit" you will be able to set the mode option to any of the above there.

UPDATE: On open SuSE 10.3, the sound card works out of the box!

Getting Gmail java app on Motorola i760

gmail on i760My i760 came without a proper web-browser - so I could not download the Gmail java app through the phone, or access m.gmail.com to check my mail.

The solution to this problem is downloading the Gmail java application files from the google servers here:
gm-Generic-Advanced_MIDP2.jad
gmail-g.jar
Then upload them to your phone using a data cable, and a J2ME media loader application like myJal. Depending on the software you use, you may have to rename the above files so that they have identical filenames (i.e. rename "gm-Generic-Advanced_MIDP2.jad" to "gmail-g.jad" - do not change the extensions!)

Once you load the files up to your phone "gmail" should appear in you Java applications folder. Clicking "gmail" will preform a short installation process, after which you will be prompted for your Gmail user-name and password. Once you enter your information, you'll be logged on to your Gmail account and able to read and write mail!

Image previews not showing up in konqueror and kFlickr

I just got a new digital camera, and was annoyed that for some odd reason, konqueror and kFlickr were no longer showing image previews for pictures taken with the new camera.

The solution for this problem was simple - apparently, konqueror has a configureable limit to the size of file it displays previews of. This setting can easily be changed in konqueror through:
Settings -> Configure Konqueror -> Previews & Meta Data -> Maximum file size.

Turns out, that all the pictures from my 2 Mega Pixel cellphone camera were under 1MB in size, while the pictures from my new digital camera (set at 3 Mega Pixels) were just over 1MB. The default setting for previewable file size in my distribution was 1MB - hence the problem.

Changing the settings in konqueror also immediately solved the problem in kFlickr.