libFetLife
is a PHP class implementing a simple API that can be used to interface with the social networking website FetLife.com.
To run libFetLife
, you need PHP version 5.3.6 or greater.
To use libFetLife
, include it in your project and instantiate a new FetLifeUser
object:
// Load FetLife API.
require_once('libFetLife/FetLife.php');
// Log in as a user.
$FL = new FetLifeUser('username', 'password');
$FL->connection->setProxy('example.proxy.com:9050', CURLPROXY_SOCKS5); // Optional.
$FL->connection->setProxy('auto'); // or, set a new randomized proxy automatically.
$FL->logIn();
// Print some basic information about the account you're using.
print $FL->id; // your user's numeric ID.
// Query FetLife for information about other users.
print $FL->getUserIdByNickname('JohnBaku'); // prints "1"
print $FL->getUserNicknameById(1254); // prints "maymay"
// Object-oriented access to user info is available as FetLifeProfile objects.
$profile = $FL->getUserProfile(1); // Profile with ID 1
$profile->nickname; // "JohnBaku"
$profile->avatar_url;
$profile->age;
$profile->gender;
$profile->role;
$profile->isPayingAccount(); // true
// etc.
// Get a user's friends list as an array of FetLifeProfile objects.
$friends = $FL->getFriendsOf('maymay');
// A numeric FetLife user ID also works.
$friends = $FL->getFriendsOf(1254);
// If there are many pages, you can set a limit.
$friends_partial = $FL->getFriendsOf('maymay', 3); // Only first 3 pages.
// You can also fetch arrays of a user's FetLife data as objects this way.
$writings = $FL->getWritingsOf('JohnBaku'); // All of JohnBaku's Writings.
$pictures = $FL->getPicturesOf(1); // All of JohnBaku's Pictures.
// If you want to fetch comments, you need to populate() the objects.
$writings_and_pictures = array_merge($writings, $pictures);
foreach ($writings_and_pictures as $item) {
$item->comments; // currently, returns an NULL
$item->populate();
$item->comments; // now, returns an array of FetLifeComment objects.
}
// Numerous other functions also return arrays, with optional page limit.
$members = $FL->getMembersOfGroup(11708); // "Kink On Tap"
$kinksters = $FL->getKinkstersWithFetish(193); // "Corsets"
$attendees = $FL->getKinkstersGoingToEvent(149379);
$maybes = $FL->getKinkstersMaybeGoingToEvent(149379, 2); // Only 2 pages.
// You can also fetch arrays of events.
$events = $FL->getUpcomingEventsInLocation('cities/5898'); // Get all events in Balitmore, MD.
// Or get just the first couple pages.
$events_partial = $FL->getUpcomingEventsInLocation('cities/5898', 2); // Only 2 pages.
//Works the same way as the two previous methods do but for people in a city
$local_kinksters = $FL->getKinkstersInLocation('cities/5898'); // Get all kinksters in Balitmore, MD.
// FetLifeEvent objects are instantiated from minimal data.
// To fill them out, call their populate() method.
$events[0]->populate(); // Flesh out data from first event fetched.
// RSVP lists take a while to fetch, but you can get them, too.
$events[1]->populate(2); // Fetch first 2 pages of RSVP responses.
$events[2]->populate(true); // Or fetch all pages of RSVP responses.
// Now we have access to some basic event data.
print $events[2]->getPermalink();
print $events[2]->venue_name;
print $events[2]->dress_code;
// etc...
// Attendee lists are arrays of FetLifeProfile objects, same as friends lists.
foreach ($events[2]->going as $profile) {
print $profile->nickname; // FetLife names of people who RSVP'd "Going."
}
$i = 0;
$y = 0;
foreach ($events[2]->maybegoing as $profile) {
if ('Switch' === $profile->role) { $i++; }
if ('M' === $profile->gender) { $y++; }
}
print "There are $i Switches and $y male-identified people maybe going to {$events[2]->title}.";
// If you already know the event ID, you can just fetch that event.
$event = $FL->getEventById(151424);
// "Populate" behavior works the same way.
$event = $FL->getEventById(151424, true); // Get all availble event data.
Are you using libFetLife
? Let me know.