Skip to content

Instantly share code, notes, and snippets.

@inky
Created September 21, 2014 00:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save inky/828e66ab3d735af258ca to your computer and use it in GitHub Desktop.
Save inky/828e66ab3d735af258ca to your computer and use it in GitHub Desktop.
source code for @coolbot420
import os
import twitter # pip install twitter
def post_tweet(text):
assert len(text) <= 140, 'tweet is too long'
auth = twitter.OAuth(os.environ['TWITTER_USER_TOKEN'],
os.environ['TWITTER_USER_SECRET'],
os.environ['TWITTER_API_KEY'],
os.environ['TWITTER_API_SECRET'])
t = twitter.Twitter(auth=auth)
return t.statuses.update(status=text, trim_user=True)
import codecs
import sys
from glob import glob
from random import choice, randint, random
from tweet import post_tweet
PATTERN = "%(hour)s:%(minute)s %(verb)s %(noun)s %(every_day)s"
WHENEVER = (
'every day',
'every week',
'every fortnight',
'whenever',
'right now',
)
class Weed():
def __init__(self):
verbs = set()
with codecs.open('verbs.txt', encoding='utf-8') as fp:
for line in fp:
verbs.add(line.strip())
nouns = set()
for fn in glob('nouns/*.txt'):
with codecs.open(fn, encoding='utf-8') as fp:
for line in fp:
nouns.add(line.strip())
self.verbs = tuple(verbs)
self.nouns = tuple(nouns)
def generate(self):
strings = {
'hour': randint(1, 12),
'minute': '%02d' % randint(0, 59),
'verb': choice(self.verbs),
'noun': choice(self.nouns),
'every_day': 'every day' if random() < 0.95 else choice(WHENEVER)
}
return (PATTERN % strings).upper()
def main():
weed = Weed()
if 'tweet' in sys.argv:
post_tweet(weed.generate())
else:
for _ in range(10):
print weed.generate()
if __name__ == '__main__':
sys.exit(main())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment