From 17f589c7100034580b35e7888e6d011e4d805714 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=2E=20Fernando=20S=C3=A1nchez?= Date: Wed, 14 Sep 2016 19:53:56 +0200 Subject: [PATCH] Added webserver --- README.md | 50 ++++++++ bitter/cli.py | 27 ++-- bitter/config.py | 13 ++ bitter/crawlers.py | 18 +-- bitter/static/css/style.css | 50 ++++++++ bitter/static/images/me.jpg | Bin 0 -> 106038 bytes bitter/static/index.html | 241 +++++++++++++++++++++++++++++++++++ bitter/templates/base.html | 36 ++++++ bitter/templates/home.html | 10 ++ bitter/templates/limits.html | 11 ++ bitter/templates/sad.html | 8 ++ bitter/templates/thanks.html | 10 ++ bitter/utils.py | 67 ++++++++-- bitter/webserver.py | 96 ++++++++++++++ requirements.txt | 1 + setup.py | 2 +- tests/test_models.py | 2 +- 17 files changed, 612 insertions(+), 30 deletions(-) create mode 100644 README.md create mode 100644 bitter/config.py create mode 100644 bitter/static/css/style.css create mode 100644 bitter/static/images/me.jpg create mode 100644 bitter/static/index.html create mode 100644 bitter/templates/base.html create mode 100644 bitter/templates/home.html create mode 100644 bitter/templates/limits.html create mode 100644 bitter/templates/sad.html create mode 100644 bitter/templates/thanks.html create mode 100644 bitter/webserver.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..50a0903 --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +#Description +There are two parts to bitter. +First of all, it is a wrapper over Python twitter that adds support for several Twitter API credentials (e.g. authorizing the same app with different user accounts). +Secondly, it is a command line tool to automate several actions (e.g. downloading user networks) using the wrapper. + +# Instructions + +In the command line: + + python -m bitter --help + +or + + bitter --help + + +Programmatically: + +```python +from bitter.crawlers import TwitterQueue +wq = TwitterQueue.from_credentials() +print(wq.users.show(user_name='balkian')) +``` + +# Credentials format + +``` +{"user": "balkian", "consumer_secret": "xxx", "consumer_key": "xxx", "token_key": "xxx", "token_secret": "xxx"} +``` + +By default, bitter uses '~/.bitter-credentials.json', but you may choose a different file: + +``` +python -m bitter -c ... +``` + +# Server +To add more users to the credentials file, you may run the builtin server, with the consumer key and secret of your app: + +``` +python -m bitter server +``` + +# Notice +Please, use according to Twitter's Terms of Service + +# TODO + +* Tests +* Docs diff --git a/bitter/cli.py b/bitter/cli.py index 07468fc..6d7c130 100644 --- a/bitter/cli.py +++ b/bitter/cli.py @@ -20,21 +20,15 @@ logger = logging.getLogger(__name__) @click.option("--verbose", is_flag=True) @click.option("--logging_level", required=False, default='WARN') @click.option("--config", required=False) -@click.option('-c', '--credentials',show_default=True, default='credentials.json') +@click.option('-c', '--credentials', show_default=True, default='~/.bitter-credentials.json') @click.pass_context def main(ctx, verbose, logging_level, config, credentials): logging.basicConfig(level=getattr(logging, logging_level)) ctx.obj = {} ctx.obj['VERBOSE'] = verbose ctx.obj['CONFIG'] = config - if os.path.isfile(credentials): - ctx.obj['CREDENTIALS'] = credentials - else: - global_file = os.path.expanduser('~/.bitter-credentials.json') - if os.path.isfile(global_file): - ctx.obj['CREDENTIALS'] = global_file - else: - raise Exception('You need to provide a valid credentials file') + ctx.obj['CREDENTIALS'] = credentials + utils.create_credentials(credentials) @main.group() @click.pass_context @@ -46,8 +40,7 @@ def tweet(ctx): @click.pass_context def get_tweet(ctx, tweetid): wq = crawlers.TwitterQueue.from_credentials(ctx.obj['CREDENTIALS']) - c = wq.next() - t = crawlers.get_tweet(c.client, tweetid) + t = utils.get_tweet(wq, tweetid) print(json.dumps(t, indent=2)) @@ -320,5 +313,17 @@ def get_limits(ctx, url): else: print(json.dumps(resp, indent=2)) +@main.command('server') +@click.argument('CONSUMER_KEY', required=True) +@click.argument('CONSUMER_SECRET', required=True) +@click.pass_context +def run_server(ctx, consumer_key, consumer_secret): + from . import config + config.CONSUMER_KEY = consumer_key + config.CONSUMER_SECRET = consumer_secret + from .webserver import app + app.run() + + if __name__ == '__main__': main() diff --git a/bitter/config.py b/bitter/config.py new file mode 100644 index 0000000..c35066e --- /dev/null +++ b/bitter/config.py @@ -0,0 +1,13 @@ +''' +Common configuration for other modules. +It is not elegant, but it works with flask and the oauth decorators. + +Using this module allows you to change the config before loading any other module. +E.g.: + + import bitter.config as c + c.CREDENTIALS="/tmp/credentials" + from bitter.webserver import app + app.run() +''' +CREDENTIALS = '~/.bitter-credentials.json' diff --git a/bitter/crawlers.py b/bitter/crawlers.py index ed0570a..fc2122b 100644 --- a/bitter/crawlers.py +++ b/bitter/crawlers.py @@ -8,6 +8,8 @@ logger = logging.getLogger(__name__) from twitter import * from collections import OrderedDict +from . import utils +from . import config class AttrToFunc(object): @@ -102,17 +104,15 @@ class TwitterQueue(AttrToFunc): return self.next().client @classmethod - def from_credentials(self, cred_file): + def from_credentials(self, cred_file=None): wq = TwitterQueue() - with open(cred_file) as f: - for line in f: - cred = json.loads(line) - c = Twitter(auth=OAuth(cred['token_key'], - cred['token_secret'], - cred['consumer_key'], - cred['consumer_secret'])) - wq.ready(TwitterWorker(cred["user"], c)) + for cred in utils.get_credentials(cred_file): + c = Twitter(auth=OAuth(cred['token_key'], + cred['token_secret'], + cred['consumer_key'], + cred['consumer_secret'])) + wq.ready(TwitterWorker(cred["user"], c)) return wq def _next(self): diff --git a/bitter/static/css/style.css b/bitter/static/css/style.css new file mode 100644 index 0000000..8586c33 --- /dev/null +++ b/bitter/static/css/style.css @@ -0,0 +1,50 @@ +@charset 'UTF-8'; + +html { + display: block; + margin: auto; + width: 100%; + background-color: black; + color: white; + font-size: 1.5em; +} +.wrapper { + margin: 0 auto; + width: 80%; + text-align: center; +} + +.me { + width: 15em; + border-radius: 150px; + -webkit-border-radius: 150px; + -moz-border-radius: 150px; + +} + +.button { + background-color: black; + color: white; + padding: 0.5em; + font-size: 1.5em; + border: 3px solid white; + margin-top: 1em; + display: inline-block; + border-radius: 1em; + text-decoration: none; + font-weight: bold; +} + +.button:hover { + color: black; + background-color: white; +} + +.limits { + text-align: left; +} + +.jsonlimits { + overflow: auto; + max-height: 5em; +} \ No newline at end of file diff --git a/bitter/static/images/me.jpg b/bitter/static/images/me.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f1bd758b0e3cf14538a9c6b2e4cf6ad00e48723 GIT binary patch literal 106038 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 b>rRU~E&iX$oa>`ZI`A>jGu5quyT<(=u~4CN literal 0 HcmV?d00001 diff --git a/bitter/static/index.html b/bitter/static/index.html new file mode 100644 index 0000000..92c729e --- /dev/null +++ b/bitter/static/index.html @@ -0,0 +1,241 @@ + + + + + Miniport by HTML5 UP + + + + + + + + + + + + + + + +

+ + +
+ +
+ + +
+
+
+

I design and build amazing things.

+ Odio turpis amet sed consequat eget posuere consequat. +
+
+
+
+
+ +

Consequat lorem

+

Ornare nulla proin odio consequat sapien vestibulum ipsum primis sed amet consequat lorem dolore.

+
+
+
+
+ +

Lorem dolor tempus

+

Ornare nulla proin odio consequat sapien vestibulum ipsum primis sed amet consequat lorem dolore.

+
+
+
+
+ +

Feugiat posuere

+

Ornare nulla proin odio consequat sapien vestibulum ipsum primis sed amet consequat lorem dolore.

+
+
+
+
+ +
+
+ + +
+
+
+

Awesome work makes happy clients.

+ Proin odio consequat sapien vestibulum ipsum primis sed amet consequat lorem dolore feugiat lorem ipsum dolore. +
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+ +

Lorem ipsum

+

Ornare nulla proin odio consequat.

+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+ + +
+ +
+ + + + \ No newline at end of file diff --git a/bitter/templates/base.html b/bitter/templates/base.html new file mode 100644 index 0000000..3c1bb98 --- /dev/null +++ b/bitter/templates/base.html @@ -0,0 +1,36 @@ + + + + + Bitter's Login + + + + + + + + + + + + +
+ +
+ {% block header %} + {% endblock %} +
+
+ {% block content %} + {% endblock %} +
+
+ + + + diff --git a/bitter/templates/home.html b/bitter/templates/home.html new file mode 100644 index 0000000..73d71ca --- /dev/null +++ b/bitter/templates/home.html @@ -0,0 +1,10 @@ +{% extends "base.html" %} +{% block header %} +

Hi. I'm a researcher.

+{% endblock %} +{% block content %} +

Getting data from Twitter is hard, due to the limits imposed by the Twitter API

+

By logging in with my app you help me get more data for my research.

+

I will not use your personal information in any way.

+Log in! +{% endblock %} diff --git a/bitter/templates/limits.html b/bitter/templates/limits.html new file mode 100644 index 0000000..d6397a3 --- /dev/null +++ b/bitter/templates/limits.html @@ -0,0 +1,11 @@ +{% extends "base.html" %} +{% block content %} +{% if limits | length %} +
    + {% for limit in limits %} +
  • {{ limit }}
    {{ limits[limit] }}
  • + {% endfor %} +
+{% endif %} + +{% endblock %} diff --git a/bitter/templates/sad.html b/bitter/templates/sad.html new file mode 100644 index 0000000..6027e1a --- /dev/null +++ b/bitter/templates/sad.html @@ -0,0 +1,8 @@ +{% extends "base.html" %} +{% block header %} +

You don't wanna authorize me? :(

+{% endblock %} +{% block content %} +

It's ok, but come back if you change your mind...

+ +{% endblock %} diff --git a/bitter/templates/thanks.html b/bitter/templates/thanks.html new file mode 100644 index 0000000..b09ae1c --- /dev/null +++ b/bitter/templates/thanks.html @@ -0,0 +1,10 @@ +{% extends "base.html" %} + +{% block header %} +Thanks! +{% endblock %} +{% block content %} +

I'll use it wisely

+ Authorize another account! +{% endblock %} + diff --git a/bitter/utils.py b/bitter/utils.py index 78721ee..805764b 100644 --- a/bitter/utils.py +++ b/bitter/utils.py @@ -5,12 +5,17 @@ import json import signal import sys import sqlalchemy +import os from itertools import islice +from contextlib import contextmanager + from twitter import TwitterHTTPError from bitter.models import Following, User, ExtractorEntry, make_session +from bitter import config + logger = logging.getLogger(__name__) @@ -19,12 +24,58 @@ def signal_handler(signal, frame): sys.exit(0) +def get_credentials_path(credfile=None): + if not credfile: + if config.CREDENTIALS: + credfile = config.CREDENTIALS + else: + raise Exception('No valid credentials file') + return os.path.expanduser(credfile) + +@contextmanager +def credentials_file(credfile, *args, **kwargs): + p = get_credentials_path(credfile) + with open(p, *args, **kwargs) as f: + yield f + +def iter_credentials(credfile=None): + with credentials_file(credfile) as f: + for l in f: + yield json.loads(l.strip()) + +def get_credentials(credfile=None, inverse=False, **kwargs): + creds = [] + for i in iter_credentials(credfile): + if all(map(lambda x: i[x[0]] == x[1], kwargs.items())): + creds.append(i) + return creds + +def create_credentials(credfile=None): + credfile = get_credentials_path(credfile) + with credentials_file(credfile, 'a'): + pass + +def delete_credentials(credfile=None, **creds): + tokeep = get_credentials(credfile, inverse=True, **creds) + with credentials_file(credfile, 'w') as f: + for i in tokeep: + f.write(json.dumps(i)) + f.write('\n') + +def add_credentials(credfile=None, **creds): + exist = get_credentials(credfile, **creds) + if not exist: + with credentials_file(credfile, 'a') as f: + f.write(json.dumps(creds)) + f.write('\n') + + def get_users(wq, ulist, by_name=False, queue=None, max_users=100): t = 'name' if by_name else 'uid' logger.debug('Getting users by {}: {}'.format(t, ulist)) ilist = iter(ulist) while True: - userslice = ",".join(islice(ilist, max_users)) + userslice = ",".join(str(i) for i in islice(ilist, max_users)) if not userslice: break try: @@ -48,7 +99,7 @@ def get_users(wq, ulist, by_name=False, queue=None, max_users=100): def trim_user(user): if 'status' in user: - del user['status'] + del user['status'] if 'follow_request_sent' in user: del user['follow_request_sent'] if 'created_at' in user: @@ -64,7 +115,7 @@ def add_user(session, user, enqueue=False): olduser = session.query(User).filter(User.id==user['id']) if olduser: olduser.delete() - user = User(**user) + user = User(**user) session.add(user) if extract: logging.debug('Adding entry') @@ -76,12 +127,12 @@ def add_user(session, user, enqueue=False): entry.pending = True entry.cursor = -1 session.commit() - + # TODO: adapt to the crawler def extract(wq, recursive=False, user=None, initfile=None, dburi=None, extractor_name=None): signal.signal(signal.SIGINT, signal_handler) - + w = wq.next() if not dburi: dburi = 'sqlite:///%s.db' % extractor_name @@ -99,7 +150,7 @@ def extract(wq, recursive=False, user=None, initfile=None, dburi=None, extractor except ValueError: logger.info("Added screen_name") screen_names.append(user.split('@')[-1]) - + if user: classify_user(user) @@ -123,7 +174,7 @@ def extract(wq, recursive=False, user=None, initfile=None, dburi=None, extractor total_users = session.query(sqlalchemy.func.count(User.id)).scalar() logging.info('Total users: {}'.format(total_users)) def pending_entries(): - pending = session.query(ExtractorEntry).filter(ExtractorEntry.pending == True).count() + pending = session.query(ExtractorEntry).filter(ExtractorEntry.pending == True).count() logging.info('Pending: {}'.format(pending)) return pending @@ -192,7 +243,7 @@ def extract(wq, recursive=False, user=None, initfile=None, dburi=None, extractor session.add(candidate) session.commit() - + sys.stdout.flush() diff --git a/bitter/webserver.py b/bitter/webserver.py new file mode 100644 index 0000000..ec59016 --- /dev/null +++ b/bitter/webserver.py @@ -0,0 +1,96 @@ +import json +import os.path +from flask import Flask, redirect, session, url_for, request, flash, render_template +from twitter import Twitter +from twitter import OAuth as TOAuth + +from flask_oauthlib.client import OAuth + +from . import utils +from . import config + +oauth = OAuth() +twitter = oauth.remote_app('twitter', + base_url='https://api.twitter.com/1/', + request_token_url='https://api.twitter.com/oauth/request_token', + access_token_url='https://api.twitter.com/oauth/access_token', + authorize_url='https://api.twitter.com/oauth/authenticate', + consumer_key=config.CONSUMER_KEY, + consumer_secret=config.CONSUMER_SECRET + ) + +app = Flask(__name__) + +@twitter.tokengetter +def get_twitter_token(token=None): + return session.get('twitter_token') + + +@app.route('/login') +def login(): + if 'twitter_token' in session: + del session['twitter_token'] + return twitter.authorize(callback='/oauth-authorized') +# next=request.args.get('next') or request.referrer or None)) + +@app.route('/oauth-authorized') +def oauth_authorized(): + resp = twitter.authorized_response() + if resp is None: + flash(u'You denied the request to sign in.') + return redirect('/sad') + token = ( + resp['oauth_token'], + resp['oauth_token_secret'] + ) + user = resp['screen_name'] + session['twitter_token'] = token + session['twitter_user'] = user + new_creds = {"token_key": token[0], + "token_secret": token[1]} + + utils.delete_credentials(user=user) + utils.add_credentials(user=user, + token_key=token[0], + token_secret=token[1], + consumer_key=config.CONSUMER_KEY, + consumer_secret=config.CONSUMER_SECRET) + flash('You were signed in as %s' % resp['screen_name']) + return redirect('/thanks') + +@app.route('/thanks') +def thanks(): + return render_template("thanks.html") + +@app.route('/sad') +def sad(): + return render_template("sad.html") + +@app.route('/') +def index(): +# return 'Please LOG IN to help with my research :)' + return render_template('home.html') + +@app.route('/hall') +def hall(): + names = [c['user'] for c in utils.get_credentials()] + return render_template('thanks.html', names=names) + +@app.route('/limits') +def limits(): + creds = utils.get_credentials() + limits = {} + for c in creds: + auth = TOAuth(c['token_key'], + c['token_secret'], + c['consumer_key'], + c['consumer_secret']) + t = Twitter(auth=auth) + limits[c["user"]] = json.dumps(t.application.rate_limit_status(), indent=2) + + return render_template('limits.html', limits=limits) + +app.secret_key = os.environ.get('SESSION_KEY', 'bitter is cool!') + +if __name__ == '__main__': + app.run() diff --git a/requirements.txt b/requirements.txt index 63537f8..fa6c088 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ sqlalchemy twitter click +six diff --git a/setup.py b/setup.py index a410995..2e9bf94 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,7 @@ setup( author='J. Fernando Sanchez', author_email='balkian@gmail.com', url="http://balkian.com", - version="0.3", + version="0.4", install_requires=install_reqs, tests_require=test_reqs, include_package_data=True, diff --git a/tests/test_models.py b/tests/test_models.py index 3020a54..c87a1de 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -1,4 +1,4 @@ -from unittests import TestCase +from unittest import TestCase class TestModels(TestCase):