The application uses IBM Watson Personality Insights and Twitter to find the celebrities that are similar to your personality. Twitter is being use to get the tweets for a given handler, the text from those tweets is send to Personality Insights, who analyze the text and reply with a personality profile. That profile is compared to celebrity profiles to find the most similar.
Live demo: http://your-celebrity-match.mybluemix.net/
Give it a try! Click the button below to fork into IBM DevOps Services and deploy your own copy of this application on Bluemix.
Note: Once you deploy the application in Bluemix you will need to do some extra steps described below to setup the database and Twitter API credentials.
The application uses The Personality Insights API
This instructions will help you install the celebrities app in your local environment.
-
Clone the repository with:
$ git clone [email protected]:watson-developer-cloud/yourcelebritymatch.git
-
Install node (use v0.10.31)
-
Install mongodb
-
Install the npm modules:
$ npm install
Note: Make sure you are in the project directory, the
package.json
file should be visible. -
Start mongodb
$ mongod
(Run this in a separate terminal window)
-
You need some credentials to use Twitter API, Personality Insights and MongoDC:
- Get credentials to use Personality Insights, instructions here.
- Create a FREE Mongodb database using MongoLab.
- Create a Twitter app and get the API credentials here.
-
Update the Twitter, MongoDB and Personality Insights credentials in
config/config.js
mongodb: process.env.MONGODB || 'mongodb://localhost/celebs', { personality_insights: { url: '<url>', username: '<username>', password: '<password>' }, twitter: [{ consumer_key: '<consumer_key>', consumer_secret: '<consumer_secret>', access_token_key: '<access_token_key>', access_token_secret:'<access_token_secret>' }] }
-
Start the app
$ npm start
-
Update the database with the celebrities by making a POST request to:
http://localhost:3000/celebrities/syncdb
The celebrities are not added by default. Hence the above step is recommended. Refer #Celebrities section below for more information. When running in bluemix make sure the environment variable
DEMO
is set to0
. -
You can add additional celebrities to the database as long as they are verified, have at least 10,000 followers, and have over 1,000 tweets. To add another celebrity, make a POST request to:
http://localhost:3000/celebrities/add/@username
where
username
is the Twitter handle of the celebrity you would like to add.
The credentials for the services are stored in the VCAP_SERVICES environment variable. In order to get them you need to first create and bind the service to your application.
There are two ways to get the credentials, you can use Bluemix to access your app and view the VCAP_SERVICES
there or you can run:
$ cf env <application-name>
Example output:
System-Provided:
{
"VCAP_SERVICES": {
"personality_insights": [{
"credentials": {
"password": "<password>",
"url": "<url>",
"username": "<username>"
},
"label": "personality_insights",
"name": "personality-insights-service",
"plan": "IBM Watson Personality Insights Monthly Plan"
}]
}
}
You need to copy username
, password
.
The application comes with two 'celebrity' profiles: @germanatt and @nfriedly. If you want to add more profiles, you have two options:
-
Choose a person on Twitter to include as a 'celebrity'. Ensure this person is verified, has at least 10,000 followers, and has over 1,000 tweets.
-
Make a POST request to:
http://localhost:3000/celebrities/add/@username
where
username
is the Twitter handle of the celebrity you would like to add.
- Choose a person to include as a 'celebrity'. You need at least 100 different words written by that person. Blog posts, tweets, text messages, emails will work.
- Get the profile by using the Personality Insights service with the text you have and save the json profile in the
profiles
folder. Make sure the file has the.json
extension as in the examples provided. - Start the app and make a POST request to:
http://localhost:3000/celebrities/syncdb
. It will repopulate the application database and add the new profile. Be aware that this command will erase all celebrities previously added to the database.
Note: In order to add celebrities, you must not be running the app in demo mode. Either run the app locally or set the DEMO
environment variable to 0
when running the app on Bluemix.
This sample code is licensed under Apache 2.0. Full license text is available in LICENSE.
See CONTRIBUTING.
Find more open source projects on the IBM Github Page