,d88b.d88b,
88888888888
`Y8888888Y'
`Y888Y'
`Y'
require 'lonely_coder'
okc = OKCupid.new('thetrek','thisisntmypasswordweirdo')
sweet_guys = []
['Ann Arbor, MI', 'New York, New York',
'Chicago, Illinois', 'San Francisco, CA'].each do |maybe_here|
sweet_guys += okc.search({
:min_age => 25,
:max_age => 35, # just someone around my age, yo
:gentation => 'Guys who like guys', # don't hate
:order_by => 'Match %', # I want us to get along, let's make it last
:last_login => 'last month',
:location => maybe_here
:radius => 25, # acceptable values are 25, 50, 100, 250, 500, nil
:require_photo => true, # I like a goofy smile
:relationship_status => 'single' # the heart aches, but not for friends
}).results
end
sweet_guys.count # oof, 812. Let the coffee dates begin!
A ruby gem for interacting with OKCupid. OKCupid doesn't actually have an API, so we use mechanize to interact with the site. Screen scraping isn't terribly fast, but it's pretty zippy compared to the other option – doing nothing.
You'll need an OKCupid account (it's free) because most of the site is behind authentication. You can create a new connection to the site.
Install as a gem
gem install lonely_coder
Use your account
require 'lonely_coder'
okc = OKCupid.new('yourusername', 'yourpassword')
Once you have a connection you can check out a person's profile
trek = okc.profile_for('thetrek')
trek.match # => 99. Damn, he's pretty sweet
trek.location # => 'Ann Arbor, Michigan'
`open #{trek.profile_thumb_urls.first}` # HOT. DAMN.
Go ahead and ask for username
, match
, friend
, enemy
, location
, age
, sex
, orientation
, single
, last_online
, ethnicity
, height
, body_type
, diet
, smokes
, drinks
, drugs
, religion
, sign
, education
, job
, income
, offspring
, pets
, speaks
, and profile_thumb_urls
If you don't have particular username in mind, you can search. Check lib/magic_constants.rb
for the crazy [Magic Numbers](http://en.wikipedia.org/wiki/Magic_number_(programming\)).
search = okc.search({
:min_age => 18,
:max_age => 99,
:gentation => 'guys who like guys',
:ethnicity => ['human']
}) # search object
# fires the loading of the first 10, but only limited profiles. If you'd like full
# deets, use okc.profile_for with a results username.
search.results
search.load_next_page # loads the next 10 results
okc.love(1000) # ♥