# Path: tweetget/settings.py
# TWITTER_API_KEY = os.environ['TWITTER_API_KEY']
# TWITTER_API_SECRET = os.environ['TWITTER_API_SECRET']
# RATE_LIMIT = 1  # requests every 15 minutes, max is 450 for app twitter api
# RATE_LIMIT_WINDOW = 900  # 15 minutes * 60
# DATA_PATH = './data'
# QUERIES = ['python -monty', '#sarcasm', '#happy', '#sad']
# 
# Path: tweetget/core.py
# def process_argv(argv):
#     queries = QUERIES
#     if len(argv) > 1:
#         if '--verbose' in argv[1:]:
#             argv = [a for a in argv if a != '--verbose']
#             verbosity = 1
#         queries = argv[1:]
#     return queries, verbosity


from builtins import str
from twython import Twython
from .settings import DATA_PATH, TWITTER_API_KEY, TWITTER_API_SECRET, TWEETS_PER_REQUEST
from .core import process_argv
import json
import os
import datetime
import gzip
import sys

def get_twitter():
    twitter = Twython(TWITTER_API_KEY, TWITTER_API_SECRET, oauth_version=2)
    return Twython(TWITTER_API_KEY, access_token=twitter.obtain_access_token())


def get_tweets(query, count=TWEETS_PER_REQUEST, lang='en', result_type='recent', twitter=None, **kwargs):
    query = query
    twitter = twitter or get_twitter()

    params = {
        'q': query,
        'lang': lang,
        'count': str(int(count)),
        'result_type': result_type,
    }
    params.update(kwargs)

    # twython.exceptions.TwythonError: ('Connection aborted.', error(104, 'Connection reset by peer'))
    resp = twitter.search(**params)

    return resp['statuses']


def save_tweets(tweets, query='', verbosity=1):
    now = datetime.datetime.utcnow()
    filename = os.path.join(DATA_PATH, '{}-{}.json.gz'.format(query, now.isoformat()).replace(':', '_'))
    with gzip.open(filename, 'a') as f:
        f.write(json.dumps(tweets, indent=2))
    if verbosity > 0:

# Path: tweetget/settings.py
# TWITTER_API_KEY = os.environ['TWITTER_API_KEY']
# TWITTER_API_SECRET = os.environ['TWITTER_API_SECRET']
# RATE_LIMIT = 1  # requests every 15 minutes, max is 450 for app twitter api
# RATE_LIMIT_WINDOW = 900  # 15 minutes * 60
# DATA_PATH = './data'
# QUERIES = ['python -monty', '#sarcasm', '#happy', '#sad']
# 
# Path: tweetget/core.py
# def process_argv(argv):
#     queries = QUERIES
#     if len(argv) > 1:
#         if '--verbose' in argv[1:]:
#             argv = [a for a in argv if a != '--verbose']
#             verbosity = 1
#         queries = argv[1:]
#     return queries, verbosity


# Path: tweetget/single.py
from builtins import str
from twython import Twython
from .settings import DATA_PATH, TWITTER_API_KEY, TWITTER_API_SECRET, TWEETS_PER_REQUEST
from .core import process_argv
import json
import os
import datetime
import gzip
import sys


def get_twitter():
    twitter = Twython(TWITTER_API_KEY, TWITTER_API_SECRET, oauth_version=2)
    return Twython(TWITTER_API_KEY, access_token=twitter.obtain_access_token())


def get_tweets(query, count=TWEETS_PER_REQUEST, lang='en', result_type='recent', twitter=None, **kwargs):
    query = query
    twitter = twitter or get_twitter()

    params = {
        'q': query,
        'lang': lang,
        'count': str(int(count)),
        'result_type': result_type,
    }
    params.update(kwargs)

    # twython.exceptions.TwythonError: ('Connection aborted.', error(104, 'Connection reset by peer'))
    resp = twitter.search(**params)

    return resp['statuses']


def save_tweets(tweets, query='', verbosity=1):
    now = datetime.datetime.utcnow()
    filename = os.path.join(DATA_PATH, '{}-{}.json.gz'.format(query, now.isoformat()).replace(':', '_'))
    with gzip.open(filename, 'a') as f:
        f.write(json.dumps(tweets, indent=2))
    if verbosity > 0:

        print('{} tweets written to {}'.format(len(tweets), filename))