[WordPress Tips] Automating Flickr Photo Insertion to WordPress Blogs

[WordPress Tips] Automating Flickr Photo Insertion to WordPress Blogs

Manual Flickr Photo Insertion Problem

Many photo-heavy posts contain lots of photos (150+) stored on image servers like Flickr. It is time consuming to copy-and-paste the photo’s sharing urls to the post.

Example-Flickr-Many-Photos

I often have lots of photos needed to insert into wordpress!

Furthermore, Flickr albums do not by default order photos by date-taken. Thus I also wasted some time manually sorting out the photos, sometimes causing few photos not being included in the post.

Automatic Flickr Photo Insertion Solution Introduction

Here we introduce an automatic way to speed up Flickr photo insertion process. Although here we aim at Flickr, the same principle can be applied to other major online image storage services, as long as they provide similar APIs.

The solution summary is as follows:

  1. Apply for an API key on Flickr.
  2. Find user id and the album id from your Flickr account.
  3. Use 1. and 2. to construct Flickr API that grab information of photos from a particular album, in xml format.
  4. Use python to process raw data into wordpress photo embed codes, photos ordered by date taken.
  5. Copy these codes into wordpress’ post editor.

Doing so automates the Flickr photo insertion process, so we can focus on adding words/headings to explain these photos.

Steps 2.-4. are done by a python script which you can find it here on gist.

API Key Setup

Just like many other services ( MailChimp, Facebook ) that provide APIs, to use Flickr API we must first setup a Flickr app with an api key. Search “Flickr App Garden” to go to the app creation page:

Flickr-create-app

Flickr app creation page.

Go through the instructions and agreements you should get your api key right away. If you forgot your api key, again search “Flickr App Garden” and at “Your Apps” on right, click “Apps By You”. The key should be visible right under your app:

Flickr-find-your-api-key

This is where to find your api key.

Get user_id and album_id

These two ids can be found in the urls of your Flickr account. Click on You -> Photostream, and the url has the form:

https://www.flickr.com/photos/your_user_id/

Similarly, click on any of your albums, the url has the form:

https://www.flickr.com/photos/your_user_id/albums/your_album_id/

You now have all the information for running the above python script!

Using the Python Script

You first must edit the file to plugin your three ids on line 17,18,19. Then you can run the script (on Linux it is simply the command:  python get-flickr-album-photos.py ).

The script outputs a file called flickr_url.txt with text like this:

python-script-output

Generated file content.

Copy these into the post editor and you’ll get all the photo images rendered immediately! No longer need to copy and paste all the time!

Code Explanation

Here is a brief explanation of the code in case you are curious about how it works.

Line 14-22: basic library import, id setup and file name setup.

Line 24-30: Flickr REST api construction

The main method use is flickr.photosets.getPhotos (line 21,26). It returns photo information from a photo set, which is what an album is. The code extras=date_taken asks Flickr to return also the date taken of these photos so we can order them by date.

Line 34-37: Executing API and read the return value

Here we execute the api and get returned raw XML data.

Line 40-42: XML parsing

Here we use the library minidom to parse the XML file and get a list of photo data.

Line 50-54: Building dictionary for sorting

We use python’s dictionary (line 50. A set of key-value pairs) to build date-takenphoto_id pairs. Here the values are extracted by minidom’s method (line 52,53).

Building this dictionary makes it easy to sort the photo data by date taken. We have to do the sort ourselves as Flickr api cannot sort the data in advance.

Line 57-64: Sort dictionary by date taken and output embed codes

We first build the base url for each photo (line 57) and open the output file (file 58). Then we sort the dictionary by key (line 60 sorted(myDict) ) and access each key-value pair (line 60).

At each pair we use the photo_id and base url to build a wordpress embed code set, and write it to the output file. After we have gone through every pair we close the file (line 64).

Also Recommended:

[WordPress Tips] Migrating from HTTP to HTTPS

[WordPress Tools] Two Awesome WordPress Development Plugins

Like My Post? Subscribe Below and Get Latest Post Email Updates!