There must be a way…
How do I do this?
Think, think, think, think…
How do I organize all my pictures. There are soooo many! How?
Wait just a second. I think what I need…
… is Amazon.com’s “Mechanical Turk”!
Let me explain…
Amazon provides this service that lets you distribute labor, consisting of repetitive menial tasks, to workers all over the world who are willing and able to work for peanuts.
A cat is lucky to even have peanuts. On average, they get less $1.50 per HOUR. I do what I have to do.
I can have them describe my 618 cat pictures that don’t have descriptions.
Don’t give me that look. I’m not going to pay them that little.
I mean, I expect very high quality descriptions of my pictures!
First, I’ll use Dropbox to put small versions of them online.
Then I’ll write up a little python script, to let Mechanical Turk know where they are:
(You don’t have to understand the python code)
import urllib from os import listdir from os.path import isfile, join o = open('mech_turk_input.csv', 'w') o.write("image_url1,image_url2,image_url3\r\n") a =  def listfiles(target_path): files = [ f for f in listdir(target_path) if isfile(join(target_path,f)) ] for str in files: enc = urllib.quote(str) a.append("https://dl.dropboxusercontent.com/u/28419853/lunapix/%s" % enc) if len(a) == 3: o.write("%s,%s,%s\r\n" % (a,a,a)) a[:] =  listfiles("new_luna_imgs") listfiles("old_luna_imgs")
That generates the comma-separated URLs…
Then, on Amazon, I will upload that list and create a form like this:
See how it loads my little pictures in? That’s how they’ll be describing my pictures.
Three at a time, which should help improve efficiency.
Hopefully they’ll do a decent job.
I want good descriptions. Mechanical Turk lets you reject bad results, but that’d be a shame if I had to.
I’m getting tired from all that effort. YAWN!
It was a small Python script, but cats normally don’t program at all.
Look at them work! See, that hourly rate isn’t too bad.
Now let’s check out what sort of descriptions they’re coming up with.
Not bad, not bad. Wait… what’s this?
I think that third one is missing. That’s too bad.
So tired! YYYYYYAAAAAAAAAAAAAA…..
Meow. What else we got?
Meow? I’ll check the pictures:
This is me doing pushups?
This is me staring at something that isn’t there…
Whatever that is. So descriptive!
And invisible string?
Maybe there really IS invisible string in that one.
A few of them look good, but it’s going to take a while. What’s this “Workers” page?
Yeah, I see a couple of workers who are not that great, but look at that dude who got my approval ten out of 10 times!
Purr!… $0.10 coming to you!
Time for sleep. Purrpurr…
Let’s see where we are. Approve, approve, approve…
All 618 pictures are done!
Now I’ll just write another little script to change the output into a “photo renaming script”…
import csv import urllib o = open('rename.sh', 'w') with open('cat_descs.csv', 'rb') as f: next(f) for row in csv.reader(f, delimiter=','): for i in range(0, 3): if row == "Approved": old_fn_with_path = row[27+i] new_fn = row[30+i] fn_path_list = old_fn_with_path.rsplit('/', 1) old_fn_encoded = fn_path_list old_fn = urllib.unquote(old_fn_encoded) new_fn = new_fn.rstrip('.') o.write('mv "%s" "%s.jpg"\n' % (old_fn,new_fn))
And I’ll run it…
Purr! Looking good!
And wait… a spelling error?
Meow! There are so many typos that I have to fix!
To be honest, I probably could have written the descriptions in less time than it took me to deal with all the problems I’ve encountered.
Running the picture renaming script on the full size pictures. Finally!
Now you know a little bit about how I operate.
It’s important, you know. I need to find my pictures!
And… time to sleep again…