packaged
This commit is contained in:
		
							
								
								
									
										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.
										
									
								
							
		Reference in New Issue
	
	Block a user