OTFG Step 4: Running the Import Script
At long last here's the import script I used: import-flickr-photos.php.
If you want to try it out, be sure to add all of your personalized information I've mentioned in the previous steps (1,2,3) to the top of the script.
Here's what the script does:
To run the script, open it in your browser. The URL should be something like:
http://example.com/import-flickr-photos.php
The script will redirect you to Flickr where you'll need to log in and/or authorize the script. From there, the magic starts. The script will try to give you some info about what's happening, but if you don't see anything but a blank page, don't worry, it's probably working. If you can, log into your server and check out the photos directory you set up. You should see folders and files appearing. Another way to check progress is by firing up MySQL and running some counts on your table. Something like this:
If the script is working the count will be higher than zero.
It's important to note that the import script is grabbing every photo you uploaded to Flickr, even those marked as friends and family only. This is exactly what I wanted to happen, but if you want something different, check out the documentation for the flickr.photos.search method and tweak line 65 of the script. You can set a
So, once this script finished, I had a bunch of local directories filled with photos that I'd uploaded to Flickr over the past three years. I also had 513 records in the photos table and 1,646 records in the tags table describing those photos. That means I (and some others) added about 3.2 tags per photo. huh. So I can't really look at my photos through the Web yet, but at least they're ready for the next phase. Not too shabby for a few hours on a Saturday afternoon.
Disclaimer: As I mentioned before, OTFG is an off-the-top-of-my-head project. So if you try any of this stuff out, please don't hold me responsible for your toaster catching on fire. I'm sharing this project publicly to show how I'm going off the Flickr grid, and to hopefully get some feedback in the process.
Next Up: Set Theory
If you want to try it out, be sure to add all of your personalized information I've mentioned in the previous steps (1,2,3) to the top of the script.
Here's what the script does:
- Authenticates the person running the script at Flickr via the browser. (You'll have to give your script permission to read all of your photos.)
- Requests the total number of photos for the authenticated account from the Flickr API (to help with looping).
- Requests all of the account's photos, asking for standard info (title, FlickrID, whether or not it's public) and some extra details (relevant dates, and the longitude and latitude).
- Loops through every photo, adding the photo information to the database if it isn't already there.
- Downloads the original photo file from Flickr and saves it locally if it isn't already there.
- Requests the description (caption) and tags for the particular photo from the Flickr API. (Requires a separate API call, unfortunately.)
- Adds the file location, description, and tags to the db.
- Finally, the script sleeps for one second before doing anything else. (Seemed like the polite thing to do so the script doesn't hammer the API.)
To run the script, open it in your browser. The URL should be something like:
http://example.com/import-flickr-photos.php
The script will redirect you to Flickr where you'll need to log in and/or authorize the script. From there, the magic starts. The script will try to give you some info about what's happening, but if you don't see anything but a blank page, don't worry, it's probably working. If you can, log into your server and check out the photos directory you set up. You should see folders and files appearing. Another way to check progress is by firing up MySQL and running some counts on your table. Something like this:
SELECT Count(PhotoID) FROM photos
If the script is working the count will be higher than zero.
It's important to note that the import script is grabbing every photo you uploaded to Flickr, even those marked as friends and family only. This is exactly what I wanted to happen, but if you want something different, check out the documentation for the flickr.photos.search method and tweak line 65 of the script. You can set a
privacy_filter
argument in the call to get a list of only photos that are public, for example.
So, once this script finished, I had a bunch of local directories filled with photos that I'd uploaded to Flickr over the past three years. I also had 513 records in the photos table and 1,646 records in the tags table describing those photos. That means I (and some others) added about 3.2 tags per photo. huh. So I can't really look at my photos through the Web yet, but at least they're ready for the next phase. Not too shabby for a few hours on a Saturday afternoon.
Disclaimer: As I mentioned before, OTFG is an off-the-top-of-my-head project. So if you try any of this stuff out, please don't hold me responsible for your toaster catching on fire. I'm sharing this project publicly to show how I'm going off the Flickr grid, and to hopefully get some feedback in the process.
Next Up: Set Theory
Loving what you're doing here. I'm following along as well, and wanted to note that the script you've got (as you no doubt already know) fails completely under PHP4 for the following:
1) The recursive argument to mkdir() wasn't added until PHP5.
2) There is no file_put_contents() function in PHP4.
Also, I had a problem with case sensitivity (your MySQL script from the first day created tables called 'photos' and 'tags,' but PHP croaked on me because it was looking for tables called 'Photos and Tags').
And, well, a note would be handy to point out that the path name for photos on disk REQUIRES a slash at the end of it.
Thought I'd toss this up for any other PHP4 users and/or people having the case sensitivity issue: http://pics.ariffic.com/import.phps
Again, this is really fascinating stuff, and something I've wanted to do for a while now. Something's always nagged at me about using Flickr for my photos, but I could never quite put my finger on it. :) Looking forward to the next article!