packaged
This commit is contained in:
		
							
								
								
									
										22
									
								
								bin/markovbot
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										22
									
								
								bin/markovbot
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					import markovbot
 | 
				
			||||||
 | 
					import twitter
 | 
				
			||||||
 | 
					import itertools
 | 
				
			||||||
 | 
					import random
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Command line parser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					args = markovbot.parser()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Set the coke binge parameter
 | 
				
			||||||
 | 
					if args.coke_binge:
 | 
				
			||||||
 | 
					    coke_binge_num = random.randint(1, 6)
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
					    coke_binge_num = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					text_model=markovbot.build_model(args.text)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Make the api keys
 | 
				
			||||||
 | 
					api = markovbot.make_api_keys(args.filepath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					markovbot.make_tweets(api, args.test, text_model, coke_binge_num)
 | 
				
			||||||
							
								
								
									
										29
									
								
								build/lib/markovbot/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								build/lib/markovbot/__init__.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					import argparse
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def parser() =
 | 
				
			||||||
 | 
					    parser = argparse.ArgumentParser(description='Process some integers.')
 | 
				
			||||||
 | 
					    parser.add_argument('--config', dest='filepath', metavar='CREDENTIALS', type=str, help='Path to config file')
 | 
				
			||||||
 | 
					    parser.add_argument('text', metavar='CORPUS', type=str, help='path to the text you wish to mimic') # filepath should be a flag; corpus an argument!
 | 
				
			||||||
 | 
					    parser.add_argument('--coke-binge', dest='coke_binge', action="store_true", default=False, help='Tweet excessively/emulate our POTUS') # instead of tweeting once, tweet a random number of times.
 | 
				
			||||||
 | 
					    parser.add_argument('-t', dest='test', action="store_true", default=False, help='Test text generation without tweeting.') # distance on markov chains?? distance on syntax trees? # default to test or default to tweet??
 | 
				
			||||||
 | 
					    return parser.parse_args()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Function to help process credentials file
 | 
				
			||||||
 | 
					def drop_tag(str):
 | 
				
			||||||
 | 
					    parsed = itertools.dropwhile(lambda x: x!= ':', str)
 | 
				
			||||||
 | 
					    str2 = "".join(parsed)
 | 
				
			||||||
 | 
					    parsed2 = itertools.dropwhile(lambda x: x == ' ' or x == ':', str2)
 | 
				
			||||||
 | 
					    return "".join(parsed2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Process api keys etc.
 | 
				
			||||||
 | 
					def make_api_keys(filepath):
 | 
				
			||||||
 | 
					    # Open file with credentials
 | 
				
			||||||
 | 
					    with open(filepath) as f:
 | 
				
			||||||
 | 
					        content = f.readlines()
 | 
				
			||||||
 | 
					    # Strip irrelevant text
 | 
				
			||||||
 | 
					    let content = [drop_tag(x.strip()) for x in content]
 | 
				
			||||||
 | 
					    # create twitter api object
 | 
				
			||||||
 | 
					    return twitter.Api(consumer_key=content[0],
 | 
				
			||||||
 | 
					                          consumer_secret=content[1],
 | 
				
			||||||
 | 
					                          access_token_key=content[2],
 | 
				
			||||||
 | 
					                          access_token_secret=content[3])
 | 
				
			||||||
							
								
								
									
										41
									
								
								build/scripts-3.5/markovbot
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										41
									
								
								build/scripts-3.5/markovbot
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					#!python
 | 
				
			||||||
 | 
					import markovify
 | 
				
			||||||
 | 
					import markovbot
 | 
				
			||||||
 | 
					import twitter
 | 
				
			||||||
 | 
					import itertools
 | 
				
			||||||
 | 
					import random
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Command line parser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					args = parser()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Set the coke binge parameter
 | 
				
			||||||
 | 
					if args.coke_binge:
 | 
				
			||||||
 | 
					    coke_binge_num = random.randint(1, 6)
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
					    coke_binge_num = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get raw text of markov chain as string.
 | 
				
			||||||
 | 
					with open(args.text) as f:
 | 
				
			||||||
 | 
					    text = f.read()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Build the model.
 | 
				
			||||||
 | 
					text_model = markovify.Text(text)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					api = make_api_keys(args.filepath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Generate three randomly-generated sentences of no more than 140 characters and tweet them.
 | 
				
			||||||
 | 
					selected = False
 | 
				
			||||||
 | 
					for i in range(0, coke_binge_num):
 | 
				
			||||||
 | 
					    while selected is False:
 | 
				
			||||||
 | 
					        str_potentially = text_model.make_short_sentence(140)
 | 
				
			||||||
 | 
					        if not("http" in str_potentially):
 | 
				
			||||||
 | 
					            if not(args.test):
 | 
				
			||||||
 | 
					                # tweet the generated text
 | 
				
			||||||
 | 
					                status = api.PostUpdate(str_potentially)
 | 
				
			||||||
 | 
					                print(status.text)  # verify it worked
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                # test mode; just display it
 | 
				
			||||||
 | 
					                print(str_potentially)
 | 
				
			||||||
 | 
					            selected = True
 | 
				
			||||||
 | 
					    selected = False
 | 
				
			||||||
							
								
								
									
										64
									
								
								markov.py
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								markov.py
									
									
									
									
									
								
							@@ -1,64 +0,0 @@
 | 
				
			|||||||
import markovify
 | 
					 | 
				
			||||||
import twitter
 | 
					 | 
				
			||||||
import itertools
 | 
					 | 
				
			||||||
import argparse
 | 
					 | 
				
			||||||
import random
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Command line parser
 | 
					 | 
				
			||||||
parser = argparse.ArgumentParser(description='Process some integers.')
 | 
					 | 
				
			||||||
parser.add_argument('filepath', metavar='CREDENTIALS', type=str, help='an integer for the accumulator')
 | 
					 | 
				
			||||||
parser.add_argument('--text', dest='corpus', metavar='CORPUS', type=str, help='path to the text you wish to mimic') # filepath should be a flag; corpus an argument!
 | 
					 | 
				
			||||||
parser.add_argument('--coke-binge', dest='coke_binge', action="store_true", default=False, help='path to the text you wish to mimic') # instead of tweeting once, tweet a random number of times.
 | 
					 | 
				
			||||||
parser.add_argument('-t', dest='test', action="store_true", default=False, help='Test text generation without tweeting.') # distance on markov chains?? distance on syntax trees? # default to test or default to tweet??
 | 
					 | 
				
			||||||
args = parser.parse_args()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Function to help process credentials file
 | 
					 | 
				
			||||||
def drop_tag(str):
 | 
					 | 
				
			||||||
    parsed = itertools.dropwhile(lambda x: x!= ':', str)
 | 
					 | 
				
			||||||
    str2 = "".join(parsed)
 | 
					 | 
				
			||||||
    parsed2 = itertools.dropwhile(lambda x: x == ' ' or x == ':', str2)
 | 
					 | 
				
			||||||
    return "".join(parsed2)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Set the
 | 
					 | 
				
			||||||
if args.coke_binge:
 | 
					 | 
				
			||||||
    coke_binge_num = random.randint(1, 6)
 | 
					 | 
				
			||||||
else:
 | 
					 | 
				
			||||||
    coke_binge_num = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Open file with credentials
 | 
					 | 
				
			||||||
with open(args.filepath) as f:
 | 
					 | 
				
			||||||
    content = f.readlines()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Process api keys etc.
 | 
					 | 
				
			||||||
content = [drop_tag(x.strip()) for x in content]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Get raw text of markov chain as string.
 | 
					 | 
				
			||||||
with open(args.corpus) as f:
 | 
					 | 
				
			||||||
    text = f.read()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Build the model.
 | 
					 | 
				
			||||||
text_model = markovify.Text(text)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# create twitter api object
 | 
					 | 
				
			||||||
api = twitter.Api(consumer_key=content[0],
 | 
					 | 
				
			||||||
                      consumer_secret=content[1],
 | 
					 | 
				
			||||||
                      access_token_key=content[2],
 | 
					 | 
				
			||||||
                      access_token_secret=content[3])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Generate three randomly-generated sentences of no more than 140 characters and tweet them.
 | 
					 | 
				
			||||||
selected = False
 | 
					 | 
				
			||||||
for i in range(0, coke_binge_num):
 | 
					 | 
				
			||||||
    while selected is False:
 | 
					 | 
				
			||||||
        str_potentially = text_model.make_short_sentence(140)
 | 
					 | 
				
			||||||
        if not("http" in str_potentially):
 | 
					 | 
				
			||||||
            if not(args.test):
 | 
					 | 
				
			||||||
                # tweet the generated text
 | 
					 | 
				
			||||||
                status = api.PostUpdate(str_potentially)
 | 
					 | 
				
			||||||
                print(status.text)  # verify it worked
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                # test mode; just display it
 | 
					 | 
				
			||||||
                print(str_potentially)
 | 
					 | 
				
			||||||
            selected = True
 | 
					 | 
				
			||||||
    selected = False
 | 
					 | 
				
			||||||
							
								
								
									
										57
									
								
								markovbot/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								markovbot/__init__.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
				
			|||||||
 | 
					import markovify
 | 
				
			||||||
 | 
					import argparse
 | 
				
			||||||
 | 
					import itertools
 | 
				
			||||||
 | 
					import twitter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def parser():
 | 
				
			||||||
 | 
					    parser = argparse.ArgumentParser(description='Process some integers.')
 | 
				
			||||||
 | 
					    parser.add_argument('--config', dest='filepath', metavar='CREDENTIALS', type=str, help='Path to config file')
 | 
				
			||||||
 | 
					    parser.add_argument('text', metavar='CORPUS', type=str, help='path to the text you wish to mimic') # filepath should be a flag; corpus an argument!
 | 
				
			||||||
 | 
					    parser.add_argument('--coke-binge', dest='coke_binge', action="store_true", default=False, help='Tweet excessively/emulate our POTUS') # instead of tweeting once, tweet a random number of times.
 | 
				
			||||||
 | 
					    parser.add_argument('-t', dest='test', action="store_true", default=False, help='Test text generation without tweeting.') # distance on markov chains?? distance on syntax trees? 
 | 
				
			||||||
 | 
					    return parser.parse_args()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def build_model(text):
 | 
				
			||||||
 | 
					    # Get raw text of markov chain as string.
 | 
				
			||||||
 | 
					    with open(text) as f:
 | 
				
			||||||
 | 
					        text = f.read()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Build the model.
 | 
				
			||||||
 | 
					    return markovify.Text(text)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def make_tweets(api, test, model, coke_binge_num):
 | 
				
			||||||
 | 
					    # Generate three randomly-generated sentences of no more than 140 characters and tweet them.
 | 
				
			||||||
 | 
					    selected = False
 | 
				
			||||||
 | 
					    for i in range(0, coke_binge_num):
 | 
				
			||||||
 | 
					        while selected is False:
 | 
				
			||||||
 | 
					            str_potentially = model.make_short_sentence(140)
 | 
				
			||||||
 | 
					            if not("http" in str_potentially):
 | 
				
			||||||
 | 
					                if not(test):
 | 
				
			||||||
 | 
					                    # tweet the generated text
 | 
				
			||||||
 | 
					                    status = api.PostUpdate(str_potentially)
 | 
				
			||||||
 | 
					                    print(status.text)  # verify it worked
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    # test mode; just display it
 | 
				
			||||||
 | 
					                    print(str_potentially)
 | 
				
			||||||
 | 
					                selected = True
 | 
				
			||||||
 | 
					        selected = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Function to help process credentials file
 | 
				
			||||||
 | 
					def drop_tag(str):
 | 
				
			||||||
 | 
					    parsed = itertools.dropwhile(lambda x: x!= ':', str)
 | 
				
			||||||
 | 
					    str2 = "".join(parsed)
 | 
				
			||||||
 | 
					    parsed2 = itertools.dropwhile(lambda x: x == ' ' or x == ':', str2)
 | 
				
			||||||
 | 
					    return "".join(parsed2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Process api keys etc.
 | 
				
			||||||
 | 
					def make_api_keys(filepath):
 | 
				
			||||||
 | 
					    # Open file with credentials
 | 
				
			||||||
 | 
					    with open(filepath) as f:
 | 
				
			||||||
 | 
					        content = f.readlines()
 | 
				
			||||||
 | 
					    # Strip irrelevant text
 | 
				
			||||||
 | 
					    content = [drop_tag(x.strip()) for x in content]
 | 
				
			||||||
 | 
					    # create twitter api object
 | 
				
			||||||
 | 
					    return twitter.Api(consumer_key=content[0],
 | 
				
			||||||
 | 
					                          consumer_secret=content[1],
 | 
				
			||||||
 | 
					                          access_token_key=content[2],
 | 
				
			||||||
 | 
					                          access_token_secret=content[3])
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								markovbot/__pycache__/__init__.cpython-35.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								markovbot/__pycache__/__init__.cpython-35.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										17
									
								
								setup.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										17
									
								
								setup.py
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					from setuptools import setup
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					setup(name='markovbot',
 | 
				
			||||||
 | 
					      version='0.1',
 | 
				
			||||||
 | 
					      description='Make a markov chain based twitter bot',
 | 
				
			||||||
 | 
					      url='http://github.com/vmchale/markov-bot',
 | 
				
			||||||
 | 
					      author='Vanessa McHale',
 | 
				
			||||||
 | 
					      author_email='tmchale@wisc.edu',
 | 
				
			||||||
 | 
					      license='BSD3',
 | 
				
			||||||
 | 
					      packages=['markovbot'],
 | 
				
			||||||
 | 
					      scripts=['bin/markovbot'],
 | 
				
			||||||
 | 
					      install_requires=[
 | 
				
			||||||
 | 
					          'gitpython',
 | 
				
			||||||
 | 
					          'markovify',
 | 
				
			||||||
 | 
					          'python-twitter',
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      zip_safe=False)
 | 
				
			||||||
							
								
								
									
										3461
									
								
								trumptweets.txt
									
									
									
									
									
								
							
							
						
						
									
										3461
									
								
								trumptweets.txt
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user