Skip to content

Instantly share code, notes, and snippets.

@williamrowell
Last active June 17, 2018 02:44
Show Gist options
  • Save williamrowell/faef12d7cc5073b14f6804ac2bc4c3f0 to your computer and use it in GitHub Desktop.
Save williamrowell/faef12d7cc5073b14f6804ac2bc4c3f0 to your computer and use it in GitHub Desktop.
Download corpus of #tweets for user and generate new tweets.
#!/usr/bin/env python
"""Download corpus of tweets for user SCREEN_NAME and generate new tweets.
"""
import os
import sys
import json
import argparse
import twitter
import markovify
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--screen_name', help='twitter username', type=str)
parser.add_argument('--corpus', help='saved corpus json file', type=str)
args = parser.parse_args()
if not (args.screen_name or args.corpus):
sys.exit(1)
if args.corpus:
all_statuses = json.load(open(args.corpus, 'r'))
elif args.screen_name:
api = twitter.Api(consumer_key=os.environ['CONSUMERKEY'],
consumer_secret=os.environ['CONSUMERSECRET'],
access_token_key=os.environ['ACCESSTOKENKEY'],
access_token_secret=os.environ['ACCESSTOKENSECRET'],
sleep_on_rate_limit=True)
all_statuses = []
older_than = None
while True:
statuses = api.GetUserTimeline(screen_name=args.screen_name,
count=200,
exclude_replies=True,
include_rts=False,
max_id=older_than)
if not statuses: break
older_than = statuses[-1].id - 1
all_statuses.extend([x.text for x in statuses])
json.dump(all_statuses, open(args.screen_name + '_corpus.json', 'w'))
# Build the model.
text_model = markovify.Text(all_statuses)
# Emit some sentences.
for _ in range(20):
print text_model.make_short_sentence(140, tries=100)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment