URL
http://swocker-ssapra.rhcloud.com
Project Description
The goal of this project was to map twitter sentiments to a company to actual Twitter stock prices. To accomplish this, we wrote a Flask-based web application with a SQL database. We used Twitter's API and Yahoo's stock API. Our database has a Company and a Tweet model with a "has_many" relationship (i.e a Company has many Tweets).
Advantages of using a database include really fast indexing of data, and also the potential to store a lot more than a week's worth of historical Twitter data.
Screenshots
Dependencies:
Install command line tools
:
xcode-select –install
Install brew
:
ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
brew doctor
Install Python (2.7)
:
brew install python
Install virtualenv
:
pip install virtualenv
Install mysql (5.5)
Downloading the Code
git clone https://github.com/sameetandpotatoes/Swocker.git
Make sure you have run bin/activate
to activate the virtualenv, and then run the following commands to install all necessary dependencies inside the virtualenv:
pip install -r requirements.txt
###secrets.py
is organized like this inside the swocker folder:###
ALCHEMY_CODES = [
''
]
TWITTER_CODES = [
{
'CONSUMER_KEY': '',
'CONSUMER_SECRET': '',
'ACCESS_TOKEN': '',
'ACCESS_SECRET': ''
},
]
Create a file secrets.py
in the app directory with touch secrets.py
, and copy the default format.
Fill in your API keys, we'll collect everyone's when we deploy / store them as environment variables in production eventually
Creating the Database
Note: You only have to do this if there isn't an app.db file. Basically, ignore the rest of the instructions, this is just things that I had to do to get things working
- Run
python db_create.py
to create the database - Run
python db_migrate.py
to migrate the database - Open up the python shell (On Mac, just type
python
) from swocker import company
company.load_objects_into_database()
- All companies are now created. You can see them all with:
from swocker.models import *
Company.query.all()
- Now, to get some tweets in there:
from swocker import tasks
tasks.store_tweets_in_database()
This won't complete all the way. Wait about a day, then rerun.
RabbitMQ and Celery Set Up:
To get this running on a deployed server, you need RabbitMQ and Celery. If you want to try to simulate this on your computer, you need all three of these commands running at the same time:
rabbitmq-server
celery -A app.tasks.celery worker --loglevel=info
celery -A app.tasks.celery beat
You won't see anything for a day or so (you can change the frequency of the task if you want in tasks.py
)
Ctrl + D
to exit the shell
Running the App
- Then run the app with
python app.py
. You'll see data instantly for the companies that we have tweets for!