okcupyd Package¶
okcupyd
Package¶
-
class
okcupyd.__init__.
User
(session=None)[source]¶ Bases:
object
Encapsulate a logged in okcupid user.
-
copy
(profile_or_user)[source]¶ Create a
Copy
instance with the provided object as the source and thisUser
as the destination.Parameters: profile_or_user – A User
orProfile
object.
-
delete_threads
(thread_ids_or_threads)[source]¶ Call
delete_threads()
.Parameters: thread_ids_or_threads – A list whose members are either MessageThread
instances or okc_ids of message threads.
-
get_profile
(username)[source]¶ Get the
Profile
associated with the supplied username.Parameters: username – The username of the profile to retrieve.
-
get_question_answer_id
(question, fast=False, bust_questions_cache=False)[source]¶ Get the index of the answer that was given to question
See the documentation for
get_user_question()
for important caveats about the use of this function.Parameters: - question (
BaseQuestion
) – The question whose answer_id should be retrieved. - fast (bool) – Don’t try to look through the users existing questions to see if arbitrarily answering the question can be avoided.
- bust_questions_cache (bool) –
param bust_questions_cache: clear the questions
attribute of this usersProfile
before looking for an existing answer. Be aware that even this does not eliminate all race conditions.
- question (
-
get_user_question
(question, fast=False, bust_questions_cache=False)[source]¶ Get a
UserQuestion
corresponding to the givenQuestion
.HUGE CAVEATS: If the logged in user has not answered the relevant question, it will automatically be answered with whatever the first answer to the question is.
For the sake of reducing the number of requests made when this function is called repeatedly this function does not bust the cache of this
User
‘sokcupyd.profile.Profile.questions
attribute. That means that a question that HAS been answered could still be answered by this function if thisUser
‘squestions
was populated previously (This population happens automatically – SeeFetchable
for details about when and how this happens).Parameters: - question (
BaseQuestion
) – The question for which aUserQuestion
should be retrieved. - fast (bool) – Don’t try to look through the users existing questions to see if arbitrarily answering the question can be avoided.
- bust_questions_cache (bool) – clear the
questions
attribute of this usersProfile
before looking for an existing answer. Be aware that even this does not eliminate all race conditions.
- question (
-
message
(username, message_text)[source]¶ Message an okcupid user. If an existing conversation between the logged in user and the target user can be found, reply to that thread instead of starting a new one.
Parameters:
-
search
(**kwargs)[source]¶ Call
SearchFetchable()
to get aFetchable
object that will lazily perform okcupid searches to provideProfile
objects matching the search criteria.Defaults for gender, gentation, location and radius will be provided if none are given.
Parameters: kwargs – See the SearchFetchable()
docstring for details about what parameters are available.
-
-
okcupyd.__init__.
AttractivenessFinder
(*args, **kwargs)¶
-
class
okcupyd.__init__.
Statistics
(user, message_threads=None, filters=(), attractiveness_finder=None)[source]¶ Bases:
object
-
attractiveness_filter
(attractiveness_finder=None, min_attractiveness=0, max_attractiveness=10000)[source]¶
-
average_attractiveness
¶
-
average_conversation_length
¶
-
average_first_message_length
¶
-
count
¶
-
has_attractiveness
¶
-
has_messages
¶
-
has_response
¶
-
initiated
¶
-
no_responses
¶
-
portion_initiated
¶
-
portion_received
¶
-
received
¶
-
response_rate
¶
-
threads
¶
-
-
class
okcupyd.__init__.
PhotoUploader
(session=None, user_id=None, authcode=None)[source]¶ Bases:
object
Upload photos to okcupid.com.
-
delete
(photo_id, album_id=0)[source]¶ Delete a photo from the logged in users account.
Parameters: - photo_id – The okcupid id of the photo to delete.
- album_id – The album from which to delete the photo.
-
upload_and_confirm
(incoming, **kwargs)[source]¶ Upload the file to okcupid and confirm, among other things, its thumbnail position.
Parameters: - incoming – A filepath string,
Info
object or a file like object to upload to okcupid.com. If an info object is provided, its thumbnail positioning will be used by default. - caption – The caption to add to the photo.
- thumb_nail_left – For thumb nail positioning.
- thumb_nail_top – For thumb nail positioning.
- thumb_nail_right – For thumb nail positioning.
- thumb_nail_bottom – For thumb nail positioning.
- incoming – A filepath string,
-
-
class
okcupyd.__init__.
Session
(requests_session, rate_limit=None)[source]¶ Bases:
object
A requests.Session with convenience methods for interacting with okcupid.com
-
default_login_headers
= {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36'}¶
-
get_current_user_profile
()[source]¶ Get the okcupyd.profile.Profile associated with the supplied username.
Parameters: username – The username of the profile to retrieve.
-
get_profile
(username)[source]¶ Get the profile associated with the supplied username :param username: The username of the profile to retrieve.
-
classmethod
login
(username=None, password=None, requests_session=None, rate_limit=None)[source]¶ Get a session that has authenticated with okcupid.com. If no username and password is supplied, the ones stored in
okcupyd.settings
will be used.Parameters:
-
okc_delete
(path, secure=None, **kwargs)¶
-
okc_get
(path, secure=None, **kwargs)¶
-
okc_post
(path, secure=None, **kwargs)¶
-
okc_put
(path, secure=None, **kwargs)¶
-
attractiveness_finder
Module¶
-
class
okcupyd.attractiveness_finder.
AttractivenessFinderDecorator
(attractiveness_finder=None)[source]¶ Bases:
object
-
class
okcupyd.attractiveness_finder.
CheckForExistenceAttractivenessFinder
(attractiveness_finder=None)[source]¶ Bases:
okcupyd.attractiveness_finder.AttractivenessFinderDecorator
-
class
okcupyd.attractiveness_finder.
RoundedAttractivenessFinder
(attractiveness_finder=None)[source]¶ Bases:
okcupyd.attractiveness_finder.AttractivenessFinderDecorator
-
class
okcupyd.attractiveness_finder.
CachedAttractivenessFinder
(attractiveness_finder=None)[source]¶ Bases:
okcupyd.attractiveness_finder.AttractivenessFinderDecorator
details
Module¶
-
class
okcupyd.details.
Detail
(id_name=None, presenter=None, updater=None)[source]¶ Bases:
object
Represent a detail belonging to an okcupid.com profile.
-
NO_DEFAULT
= <object object>¶
-
id_name
¶
-
-
class
okcupyd.details.
Details
(profile)[source]¶ Bases:
object
Represent the details belonging to an okcupid.com profile.
-
id_to_display_name_value
¶
-
as_dict
¶
-
bodytype
¶ The bodytype detail of an okcupid.com user’s profile.
-
orientation
¶ The orientation detail of an okcupid.com user’s profile.
-
smokes
¶ The smoking detail of an okcupid.com user’s profile.
-
drugs
¶ The drugs detail of an okcupid.com user’s profile.
-
drinks
¶ The drinking detail of an okcupid.com user’s profile.
-
job
¶ The job detail of an okcupid.com user’s profile.
-
status
¶ The status detail of an okcupid.com user’s profile.
-
monogamy
¶ The monogamous detail of an okcupid.com user’s profile.
-
children
¶ The children detail of an okcupid.com user’s profile.
-
education
¶ The education detail of an okcupid.com user’s profile.
-
pets
¶ The pets detail of an okcupid.com user’s profile.
-
diet
¶ The diet detail of an okcupid.com user’s profile.
-
religion
¶ The religion detail of an okcupid.com user’s profile.
-
sign
¶ The sign detail of an okcupid.com user’s profile.
-
height
¶ The height detail of an okcupid.com user’s profile.
-
-
okcupyd.details.
declarative_detail
¶ alias of
languages
-
okcupyd.details.
is_declarative_detail
(x)¶
-
okcupyd.details.
detail
¶ The status detail of an okcupid.com user’s profile.
errors
Module¶
essay
Module¶
-
class
okcupyd.essay.
Essays
(profile)[source]¶ Bases:
object
Interface to reading and writing essays.
-
essay_names
= ['self_summary', 'my_life', 'good_at', 'people_first_notice', 'favorites', 'six_things', 'think_about', 'friday_night', 'private_admission', 'message_me_if']¶ A list of the attribute names that are used to store the text of of essays on instances of this class.
-
short_name_to_title
¶
-
favorites
¶
-
friday_night
¶
-
good_at
¶
-
message_me_if
¶
-
my_life
¶
-
people_first_notice
¶
-
private_admission
¶
-
self_summary
¶
-
six_things
¶
-
think_about
¶
-
filter
Module¶
-
class
okcupyd.filter.
Filters
(strict=True)[source]¶ Bases:
object
Registrar for functions that construct filters for submission in requests to okcupid.com
-
filter_meta
¶
-
filter_class
¶
-
build_documentation_lines
()[source]¶ Build a parameter documentation string that can appended to the docstring of a function that uses this
Filters
instance to build filters.
-
static
all_not_none_decider
(function, incoming, accepted_keys)¶
-
register_filter_builder
¶ Register a filter function with this
Filters
instance. This function is curried withcurry
– that is, it can be invoked partially before it is fully evaluated. This allows us to pass kwargs to this function when it is used as a decorator:@register_filter_builder(keys=('real_name',), decider=Filters.any_decider) def my_filter_function(argument): return '4,{0}'.format(argument)
Parameters: - function – The filter function to register.
- keys – Keys that should be used as the argument names for function, if none are provided, the filter functions argument names will be used instead.
- decider – a function of signature
(function, incoming_keys, accepted_keys) that returns
True if the filter function should be called and False
otherwise. Defaults to
all_not_none_decider()
- acceptable_values – A list of acceptable values for the parameter of the filter function (or a list of lists if the filter function takes multiple parameters)
- types – The type of the parameter accepted by the incoming filter function (or a list of types if the function takes multiple parameters)
- descriptions – A description for the incoming filter function’s argument (or a list of descriptions if the filter function takes multiple arguments)
- output_key – The key to use to output the provided value. Will default to the only value in keys if keys has length 1.
-
helpers
Module¶
-
class
okcupyd.helpers.
MessageInfo
(thread_id, message_id)¶ Bases:
tuple
-
message_id
¶ Alias for field number 1
-
thread_id
¶ Alias for field number 0
-
-
okcupyd.helpers.
get_locid
(session, location)[source]¶ Make a request to locquery resource to translate a string location search into an int locid. Returns ———- int
An int that OKCupid maps to a particular geographical location.
-
okcupyd.helpers.
format_last_online
(last_online)[source]¶ Return the upper limit in seconds that a profile may have been online. If last_online is an int, return that int. Otherwise if last_online is a str, convert the string into an int. Returns ———- int
-
okcupyd.helpers.
update_looking_for
(profile_tree, looking_for)[source]¶ Update looking_for attribute of a Profile.
-
okcupyd.helpers.
update_details
(profile_tree, details)[source]¶ Update details attribute of a Profile.
-
okcupyd.helpers.
get_default_gentation
(gender, orientation)[source]¶ Return the default gentation for the given gender and orientation.
looking_for
Module¶
-
class
okcupyd.looking_for.
LookingFor
(profile)[source]¶ Bases:
object
Represent the looking for attributes belonging to an okcupid.com profile.
-
raw_fields
¶
-
gentation
¶ The sex/orientation that the user is looking for.
-
ages
¶ The age range that the user is interested in.
-
single
¶ Whether or not the user is only interested in people that are single.
-
near_me
¶ Whether the user is only interested in people that are close to them.
-
kinds
¶ The kinds of relationship tha the user is looking for.
-
update
(ages=None, single=None, near_me=None, kinds=None, gentation=None)[source]¶ Update the looking for attributes of the logged in user.
Parameters: - ages (tuple) – The ages that the logged in user is interested in.
- single (bool) – Whether or not the user is only interested in people that are single.
- near_me (bool) – Whether or not the user is only interested in people that are near them.
- kinds (list) – What kinds of relationships the user should be updated to be interested in.
- gentation (str) – The sex/orientation of people the user is interested in.
-
magicnumbers
Module¶
-
class
okcupyd.magicnumbers.
maps
[source]¶ Bases:
object
-
bodytype
= <okcupyd.util.REMap object>¶
-
orientation
= <okcupyd.util.REMap object>¶
-
smokes
= <okcupyd.util.REMap object>¶
-
drugs
= <okcupyd.util.REMap object>¶
-
drinks
= <okcupyd.util.REMap object>¶
-
ethnicities
= <okcupyd.util.REMap object>¶
-
job
= <okcupyd.util.REMap object>¶
-
status
= <okcupyd.util.REMap object>¶
-
monogamy
= <okcupyd.util.REMap object>¶
-
strictness
= <okcupyd.util.REMap object>¶
-
has_kids
= <okcupyd.util.REMap object>¶
-
wants_kids
= <okcupyd.util.REMap object>¶
-
education_status
= <okcupyd.util.REMap object>¶
-
education_level
= <okcupyd.util.REMap object>¶
-
religion
= <okcupyd.util.REMap object>¶
-
seriousness
= <okcupyd.util.REMap object>¶
-
sign
= <okcupyd.util.REMap object>¶
-
importance
= <okcupyd.util.REMap object>¶
-
dogs
= <okcupyd.util.REMap object>¶
-
cats
= <okcupyd.util.REMap object>¶
-
language_level
= <okcupyd.util.REMap object>¶
-
diet_strictness
= <okcupyd.util.REMap object>¶
-
diet
= <okcupyd.util.REMap object>¶
-
income
= <okcupyd.util.REMap object>¶
-
-
class
okcupyd.magicnumbers.
SimpleFilterBuilder
(filter_number, mapping, offset=0)[source]¶ Bases:
object
-
class
okcupyd.magicnumbers.
filters
[source]¶ Bases:
object
-
bodytype
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
smokes
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
drinks
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
drugs
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
education_level
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
job
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
income
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
religion
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
monogamy
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
diet
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
sign
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
ethnicities
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
dogs
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
cats
= <okcupyd.magicnumbers.SimpleFilterBuilder object>¶
-
messaging
Module¶
-
class
okcupyd.messaging.
MessageFetcher
(session, message_thread, read_messages=False)[source]¶ Bases:
object
-
params
¶
-
messages_tree
¶
-
message_elements
¶
-
-
class
okcupyd.messaging.
Message
(message_element, message_thread)[source]¶ Bases:
object
Represent a message sent on okcupid.com
-
id
¶ Returns: The id assigned to this message by okcupid.com.
-
content
¶ Returns: The text body of the message.
-
time_sent
¶
-
-
class
okcupyd.messaging.
MessageThread
(session, thread_element)[source]¶ Bases:
object
Represent a message thread between two users.
-
classmethod
delete_threads
(session, thread_ids_or_threads, authcode=None)[source]¶ Parameters: - session – A logged in
Session
. - thread_ids_or_threads – A list whose members are either
MessageThread
instances or okc_ids of message threads. - authcode – Authcode to use for this request. If none is provided A request to the logged in user’s messages page will be made to retrieve one.
- session – A logged in
-
id
¶ Returns: The id assigned to this message by okcupid.com.
-
correspondent_id
¶ Returns: The id assigned to the correspondent of this message.
-
correspondent
¶ Returns: The username of the user with whom the logged in user is conversing in this MessageThread
.
-
read
¶ Returns: Whether or not the user has read all the messages in this MessageThread
.
-
date
¶
-
datetime
¶
-
with_deleted_user
¶
-
initiator
¶ Returns: A Profile
instance belonging to the initiator of thisMessageThread
.
-
respondent
¶ Returns: A Profile
instance belonging to the respondent of thisMessageThread
.
-
correspondent_profile
¶ Returns: The Profile
of the user with whom the logged in user is conversing in thisMessageThread
.
-
message_count
¶
-
has_messages
¶
-
got_response
¶ Returns: Whether or not the MessageThread
. has received a response.
-
classmethod
photo
Module¶
-
class
okcupyd.photo.
PhotoUploader
(session=None, user_id=None, authcode=None)[source]¶ Bases:
object
Upload photos to okcupid.com.
-
upload_and_confirm
(incoming, **kwargs)[source]¶ Upload the file to okcupid and confirm, among other things, its thumbnail position.
Parameters: - incoming – A filepath string,
Info
object or a file like object to upload to okcupid.com. If an info object is provided, its thumbnail positioning will be used by default. - caption – The caption to add to the photo.
- thumb_nail_left – For thumb nail positioning.
- thumb_nail_top – For thumb nail positioning.
- thumb_nail_right – For thumb nail positioning.
- thumb_nail_bottom – For thumb nail positioning.
- incoming – A filepath string,
-
-
class
okcupyd.photo.
Info
(photo_id, tnl, tnt, tnr, tnb)[source]¶ Bases:
object
Represent a photo that appears on a okcupid.com user’s profile.
-
base_uri
= 'https://k0.okccdn.com/php/load_okc_image.php/images/'¶
-
cdn_re
= re.compile('http(?P<was_secure>s?)://.*okccdn.com.*images/[0-9]*x[0-9]*/[0-9]*x[0-9]*/(?P<tnl>[0-9]*?)x(?P<tnt>[0-9]*?)/(?P<tnr>[0-9]*)x(?P<tnb>[0-9]*)/0/(?P<id>[0-9]*).(:?webp|jpeg)\\?v=\\d+')¶
-
thumb_nail_left
= None¶ The horizontal position of the left side of this photo’s thumbnail.
-
thumb_nail_top
= None¶ The vertical position of the top side of this photo’s thumbnail.
-
thumb_nail_right
= None¶ The horizontal position of the right side of this photo’s thumbnail.
-
thumb_nail_bottom
= None¶ The vertical position of the bottom side of this photo’s thumbnail.
-
jpg_uri
¶ Returns: A uri from which this photo can be downloaded in jpg format.
-
profile
Module¶
-
class
okcupyd.profile.
Profile
(session, username, **kwargs)[source]¶ Bases:
object
Represent the profile of an okcupid user.
Many of the attributes on this object are
cached_property
instances which lazily load their values, and cache them once they have been accessed. This makes it so that this object avoids making unnecessary HTTP requests to retrieve the same piece of information twice.Because of this caching behavior, care must be taken to invalidate cached attributes on the object if an up to date view of the profile is needed. It is recommended that you call
refresh()
to accomplish this, but it is also possible to usebust_self()
to bust individual properties if necessary.-
username
= None¶ The username of the user to whom this profile belongs.
-
questions
= None¶ A
Fetchable
ofQuestion
instances, each corresponding to a question that has been answered by the user to whom this profile belongs. The fetchable consists ofUserQuestion
instead when the profile belongs to the logged in user.
-
refresh
(reload=False)[source]¶ Parameters: reload – Make the request to return a new profile tree. This will result in the caching of the profile_tree attribute. The new profile_tree will be returned.
-
is_logged_in_user
¶ Returns: True if this profile and the session it was created with belong to the same user and False otherwise.
-
profile_tree
¶ Returns: a lxml.etree
created from the html of the profile page of the account associated with the username that this profile was insantiated with.
-
authcode
¶
-
looking_for
¶ Returns: A LookingFor
instance associated with this profile.
-
rating
¶ Deprecated. Use
liked()
instead.Returns: the rating that the logged in user has given this user or 0 if no rating has been given.
-
liked
¶ Returns: Whether or not the logged in user liked this profile
-
contacted
¶ Retuns: A boolean indicating whether the logged in user has contacted the owner of this profile.
-
responds
¶ Returns: The frequency with which the user associated with this profile responds to messages.
-
id
¶ Returns: The id that okcupid.com associates with this profile.
-
age
¶ Returns: The age of the user associated with this profile.
-
match_percentage
¶ Returns: The match percentage of the logged in user and the user associated with this object.
-
enemy_percentage
¶ Returns: The enemy percentage of the logged in user and the user associated with this object.
-
location
¶ Returns: The location of the user associated with this profile.
-
gender
¶ The gender of the user associated with this profile.
-
orientation
¶ The sexual orientation of the user associated with this profile.
-
message
¶ Message the user associated with this profile.
Parameters: - message – The message to send to this user.
- thread_id – The id of the thread to respond to, if any.
-
attractiveness
¶ Returns: The average attractiveness rating given to this profile by the okcupid.com community.
-
rate
(rating)[source]¶ Rate this profile as the user that was logged in with the session that this object was instantiated with.
Parameters: rating – The rating to give this user.
-
find_question
(question_id, question_fetchable=None)[source]¶ Parameters: - question_id – The id of the question to search for
- question_fetchable – The question fetchable to iterate through if none is provided self.questions will be used.
-
question_fetchable
(**kwargs)[source]¶ Returns: A Fetchable
instance that contains objects representing the answers that the user associated with this profile has given to okcupid.com match questions.
-
profile_copy
Module¶
-
class
okcupyd.profile_copy.
Copy
(source_profile_or_user, dest_user)[source]¶ Bases:
object
Copy photos, essays and other attributes from one profile to another.
-
copy_methods
= ['photos', 'essays', 'looking_for', 'details', 'questions']¶
-
questions
()[source]¶ Copy questions to the destination user. When this class was initialized with a
Profile
, this will delete any existing questions answers on the destination account.
-
looking_for
()[source]¶ Copy looking for attributes from the source profile to the destination profile.
-
all
()[source]¶ Invoke all of
questions()
,details()
,essays()
,photos()
,looking_for()
-
question
Module¶
-
class
okcupyd.question.
BaseQuestion
(question_element)[source]¶ Bases:
object
The abstract base class of
Question
andUserQuestion
. Contains all the shared functionality of the aforementined classes. The two are quite different in some ways and can not always be used interchangably. See their respective docstrings for more details.-
answered
¶
-
id
¶ Returns: The integer id given to this question by okcupid.com.
-
text
¶
-
-
class
okcupyd.question.
Question
(question_element)[source]¶ Bases:
okcupyd.question.BaseQuestion
Represent a question answered by a user other than the logged in user.
Note: Because of the way that okcupid presents question data it is actually not very easy to get the index of the answer to a question that belongs to a user other than the logged in user. It is possible to retrieve this value (see
okcupyd.user.User.get_question_answer_id()
andget_answer_id_for_question()
), but it can take quite a few requests to do so. For this reason, the answer_id is NOT included as an attribute on this object, despite its inclusion inUserQuestion
.-
their_answer
¶ The answer that the user whose
Profile
this question was retrieved from provided to thisQuestion
.
-
their_answer_matches
¶ Returns: whether or not the answer provided by the user answering the question is acceptable to the logged in user. Return type: rbool
-
my_answer_matches
¶ Returns: bool indicating whether or not the answer provided by the logged in user is acceptable to the user answering the question.
-
their_note
¶ Returns: The note the answering user provided as explanation for their answer to this question.
-
my_note
¶ Returns: The note the logged in user provided as an explanation for their answer to this question.
-
-
class
okcupyd.question.
UserQuestion
(question_element)[source]¶ Bases:
okcupyd.question.BaseQuestion
Represent a question answered by the logged in user.
-
get_answer_id_for_question
(question)[source]¶ Get the answer_id corresponding to the answer given for question by looking at this
UserQuestion
‘s answer_options. The givenQuestion
instance must have the same id as thisUserQuestion
.That this method exists is admittedly somewhat weird. Unfortunately, it seems to be the only way to retrieve this information.
-
answer_id
¶
-
answer_options
¶ Returns: A list of AnswerOption
instances representing the available answers to this question.
-
explanation
¶ Returns: The explanation written by the logged in user for this question (if any).
-
answer_text_to_option
¶
-
answer
¶ Returns: A AnswerOption
instance corresponding to the answer the user gave to this question.
-
-
class
okcupyd.question.
AnswerOption
(option_element)[source]¶ Bases:
object
-
is_users
¶ Returns: Whether or not this was the answer selected by the logged in user.
-
is_match
¶ Returns: Whether or not this was the answer is acceptable to the logged in user.
-
text
¶ Returns: The text of this answer.
-
id
¶ Returns: The integer index associated with this answer.
-
-
class
okcupyd.question.
Questions
(session, importances=('not_important', 'little_important', 'somewhat_important', 'very_important', 'mandatory'), user_id=None)[source]¶ Bases:
object
Interface to accessing and answering questions belonging to the logged in user.
-
headers
= {'origin': 'https://www.okcupid.com', 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'accept-encoding': 'gzip,deflate', 'accept': 'application/json, text/javascript, */*; q=0.01', 'referer': 'https://www.okcupid.com/questions', 'x-requested-with': 'XMLHttpRequest', 'accept-language': 'en-US,en;q=0.8'}¶
-
importance_name_to_number
= {'mandatory': 0, 'not_important': 5, 'very_important': 1, 'little_important': 4, 'somewhat_important': 3}¶ Human readable importance name to integer used to represent them on okcupid.com
-
path
= 'questions/ask'¶
-
respond_from_user_question
(user_question, importance)[source]¶ Respond to a question in exactly the way that is described by the given user_question.
Parameters: - user_question (
UserQuestion
) – The user question to respond with. - importance (int see
importance_name_to_number
) – The importance that should be used in responding to the question.
- user_question (
-
respond_from_question
(question, user_question, importance)[source]¶ Copy the answer given in question to the logged in user’s profile.
Parameters: - question – A
Question
instance to copy. - user_question – An instance of
UserQuestion
that corresponds to the same question as question. This is needed to retrieve the answer id from the question text answer on question. - importance – The importance to assign to the response to the answered question.
- question – A
-
respond
(question_id, user_response_ids, match_response_ids, importance, note='', is_public=1, is_new=1)[source]¶ Respond to an okcupid.com question.
Parameters: - question_id – The okcupid id used to identify this question.
- user_response_ids – The answer id(s) to provide to this question.
- match_response_ids – The answer id(s) that the user considers acceptable.
- importance – The importance to attribute to this question. See
importance_name_to_number
for details. - note – The explanation note to add to this question.
- is_public – Whether or not the question answer should be made public.
-
search
Module¶
-
okcupyd.json_search.
SearchFetchable
(session=None, **kwargs)[source]¶ Search okcupid.com with the given parameters. Parameters are registered to this function through
register_filter_builder()
ofsearch_filters
.Returns: Parameters: - session (
Session
) – A logged in session. - gentation (list) – A list of the allowable gentations of returned search results. expected values: ‘women who like men’, ‘’, ‘men who like women’, ‘gay men only’, ‘bi men and women’, ‘straight girls only’, ‘gay guys only’, ‘girls who like guys’, ‘gay girls only’, ‘women’, ‘both who like bi girls’, ‘guys who like girls’, ‘both who like bi women’, ‘straight women only’, ‘bi guys only’, ‘women who like women’, ‘everybody’, ‘bi girls only’, ‘guys and girls who like bi girls’, ‘bi men only’, ‘men and women who like bi women’, ‘gay women only’, ‘bi women only’, ‘both who like bi men’, ‘men who like men’, ‘bi guys and girls’, ‘men and women who like bi men’, ‘guys who like guys’, ‘straight men only’, ‘guys and girls who like bi guys’, ‘girls who like girls’, ‘both who like bi guys’, ‘straight guys only’
- location – A query that will be used to look up a locid for the search, location_cache must also be passed in in order for this parameter to work.
User
automatically passes the location_cache in. - location_cache – A
LocationQueryCache
instance. - locid (int) –
- maximum_age (int) – Filter profiles with ages below the provided value.
- minimum_age (int) – Filter profiles with ages above the provided value.
- order_by –
- radius ((<class 'int'>, <class 'NoneType'>)) – The maximum distance (in miles) from the specified location of returned search results.
- session (
-
class
okcupyd.json_search.
SearchJSONFetcher
(session=None, **options)[source]¶ Bases:
object
-
search_uri
= '1/apitun/match/search'¶
-
default_headers
= {'Content-Type': 'application/json'}¶
-
-
class
okcupyd.json_search.
GentationFilter
[source]¶ Bases:
object
-
descriptions
= 'A list of the allowable gentations of returned search results.'¶
-
acceptable_values
= dict_keys(['women who like men', '', 'men who like women', 'gay men only', 'bi men and women', 'straight girls only', 'gay guys only', 'girls who like guys', 'gay girls only', 'women', 'both who like bi girls', 'guys who like girls', 'both who like bi women', 'straight women only', 'bi guys only', 'women who like women', 'everybody', 'bi girls only', 'guys and girls who like bi girls', 'bi men only', 'men and women who like bi women', 'gay women only', 'bi women only', 'both who like bi men', 'men who like men', 'bi guys and girls', 'men and women who like bi men', 'guys who like guys', 'straight men only', 'guys and girls who like bi guys', 'girls who like girls', 'both who like bi guys', 'straight guys only'])¶
-
keys
= ['gentation']¶
-
output_key
= 'gentation'¶
-
-
class
okcupyd.json_search.
MinimumAgeFilter
[source]¶ Bases:
object
-
keys
= ['minimum_age']¶
-
descriptions
= 'Filter profiles with ages above the provided value.'¶
-
output_key
= 'minimum_age'¶
-
static
transform
(x)¶
-
-
class
okcupyd.json_search.
MaximumAgeFilter
[source]¶ Bases:
object
-
keys
= ['maximum_age']¶
-
descriptions
= 'Filter profiles with ages below the provided value.'¶
-
output_key
= 'maximum_age'¶
-
static
transform
(x)¶
-
-
class
okcupyd.json_search.
RadiusFilter
[source]¶ Bases:
object
-
output_key
= 'radius'¶
-
descriptions
= 'The maximum distance (in miles) from the specified location of returned search results.'¶
-
types
= 'int or None'¶
-
keys
= ['radius']¶
-
-
class
okcupyd.json_search.
LocationActivationFilter
[source]¶ Bases:
object
-
output_key
= 'located_anywhere'¶
-
types
= (<class 'int'>, <class 'NoneType'>)¶
-
keys
= ['radius']¶
-
-
class
okcupyd.json_search.
LocIdFilter
[source]¶ Bases:
object
-
keys
= ['locid']¶
-
output_key
= 'locid'¶
-
-
class
okcupyd.json_search.
LocationFilter
[source]¶ Bases:
object
-
output_key
= 'locid'¶
-
descriptions
= ('A query that will be used to look up a locid for the search, location_cache must also be passed in in order for this parameter to work. :class:`~okcupyd.user.User` automatically passes the location_cache in.', 'A :class:`~okcupyd.location.LocationQueryCache` instance.')¶
-
keys
= ['location', 'location_cache']¶
-
session
Module¶
-
class
okcupyd.session.
Session
(requests_session, rate_limit=None)[source]¶ Bases:
object
A requests.Session with convenience methods for interacting with okcupid.com
-
default_login_headers
= {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36'}¶
-
classmethod
login
(username=None, password=None, requests_session=None, rate_limit=None)[source]¶ Get a session that has authenticated with okcupid.com. If no username and password is supplied, the ones stored in
okcupyd.settings
will be used.Parameters:
-
get_profile
(username)[source]¶ Get the profile associated with the supplied username :param username: The username of the profile to retrieve.
-
get_current_user_profile
()[source]¶ Get the okcupyd.profile.Profile associated with the supplied username.
Parameters: username – The username of the profile to retrieve.
-
okc_delete
(path, secure=None, **kwargs)¶
-
okc_get
(path, secure=None, **kwargs)¶
-
okc_post
(path, secure=None, **kwargs)¶
-
okc_put
(path, secure=None, **kwargs)¶
-
settings
Module¶
Module where the default username and password for logging in to okcupid are housed.
-
okcupyd.settings.
USERNAME
= None¶ The username that will be used to log in to okcupid
-
okcupyd.settings.
PASSWORD
= None¶ The password that will be used to log in to okcupid
statistics
Module¶
-
class
okcupyd.statistics.
Statistics
(user, message_threads=None, filters=(), attractiveness_finder=None)[source]¶ Bases:
object
-
threads
¶
-
has_messages
¶
-
has_response
¶
-
no_responses
¶
-
initiated
¶
-
received
¶
-
has_attractiveness
¶
-
attractiveness_filter
(attractiveness_finder=None, min_attractiveness=0, max_attractiveness=10000)[source]¶
-
count
¶
-
response_rate
¶
-
average_first_message_length
¶
-
average_conversation_length
¶
-
average_attractiveness
¶
-
portion_initiated
¶
-
portion_received
¶
-
user
Module¶
-
class
okcupyd.user.
User
(session=None)[source]¶ Bases:
object
Encapsulate a logged in okcupid user.
-
inbox
= None¶ A
Fetchable
ofMessageThread
objects corresponding to messages that are currently in the user’s inbox.
-
outbox
= None¶ A
Fetchable
ofMessageThread
objects corresponding to messages that are currently in the user’s outbox.
-
drafts
= None¶ A
Fetchable
ofMessageThread
objects corresponding to messages that are currently in the user’s drafts folder.
-
visitors
= None¶ A
Fetchable
ofProfile
objects of okcupid.com users that have visited the user’s profile.
-
attractiveness_finder
= None¶ An
_AttractivenessFinder
object that is instantiated with the owningUser
instance’s session.
-
photo
= None¶ A
PhotoUploader
that is instantiated with the owningUser
instance’s session.
-
location_cache
= None¶ A
LocationQueryCache
instance
-
get_profile
(username)[source]¶ Get the
Profile
associated with the supplied username.Parameters: username – The username of the profile to retrieve.
-
message
(username, message_text)[source]¶ Message an okcupid user. If an existing conversation between the logged in user and the target user can be found, reply to that thread instead of starting a new one.
Parameters:
-
search
(**kwargs)[source]¶ Call
SearchFetchable()
to get aFetchable
object that will lazily perform okcupid searches to provideProfile
objects matching the search criteria.Defaults for gender, gentation, location and radius will be provided if none are given.
Parameters: kwargs – See the SearchFetchable()
docstring for details about what parameters are available.
-
delete_threads
(thread_ids_or_threads)[source]¶ Call
delete_threads()
.Parameters: thread_ids_or_threads – A list whose members are either MessageThread
instances or okc_ids of message threads.
-
get_user_question
(question, fast=False, bust_questions_cache=False)[source]¶ Get a
UserQuestion
corresponding to the givenQuestion
.HUGE CAVEATS: If the logged in user has not answered the relevant question, it will automatically be answered with whatever the first answer to the question is.
For the sake of reducing the number of requests made when this function is called repeatedly this function does not bust the cache of this
User
‘sokcupyd.profile.Profile.questions
attribute. That means that a question that HAS been answered could still be answered by this function if thisUser
‘squestions
was populated previously (This population happens automatically – SeeFetchable
for details about when and how this happens).Parameters: - question (
BaseQuestion
) – The question for which aUserQuestion
should be retrieved. - fast (bool) – Don’t try to look through the users existing questions to see if arbitrarily answering the question can be avoided.
- bust_questions_cache (bool) – clear the
questions
attribute of this usersProfile
before looking for an existing answer. Be aware that even this does not eliminate all race conditions.
- question (
-
get_question_answer_id
(question, fast=False, bust_questions_cache=False)[source]¶ Get the index of the answer that was given to question
See the documentation for
get_user_question()
for important caveats about the use of this function.Parameters: - question (
BaseQuestion
) – The question whose answer_id should be retrieved. - fast (bool) – Don’t try to look through the users existing questions to see if arbitrarily answering the question can be avoided.
- bust_questions_cache (bool) –
param bust_questions_cache: clear the questions
attribute of this usersProfile
before looking for an existing answer. Be aware that even this does not eliminate all race conditions.
- question (
-
xpath
Module¶
-
class
okcupyd.xpath.
XPathBuilder
(nodes=(), relative=True, direct_child=False)[source]¶ Bases:
object
-
xpath
¶
-
or_
¶
-
text_
¶
-
with_class
(*classes)¶
-
-
class
okcupyd.xpath.
XPathNode
(element='*', attributes=None, predicates=None, direct_child=False, use_or=False, selected_attribute=None)[source]¶ Bases:
object
-
text
= <object object>¶
-
make_or
¶
-
separator
¶
-
xpath
¶
-
predicate_joiner
¶
-
predicate_string
¶
-
selected_attribute_string
¶
-
-
okcupyd.xpath.
xpb
¶