GMU:Bots 'n' Plots/Constantin Oestreich: Difference between revisions

From Medien Wiki
(Midtermbot)
No edit summary
Line 1: Line 1:
==== Page of Constantin Oestreich ====
==== Page of Constantin Oestreich ====


Twitter: [https://twitter.com/ConstOest @ConstOest]
Twitterbot: [https://twitter.com/picturius @Picturus Bottian]
 
 
==== Twitterbot Picturius Bottian ====
 
=== Source Code: ===
 
<pre style="font-size:smaller" >
 
"""
 
mainbot.py
 
"""
 
 
#Import Classes + Modules
 
from twitterbot import TwitterBot
import keys
import random
from io import BytesIO
from PIL import Image
from image import get_image_file
 
#Import aus Dateien
from textposts import make_text
from textposts import no_image
from imagefuncs import filter
 
 
############################
### Twitterbot functions ###
############################
 
class MyTwitterBot(TwitterBot):
   
    # Keys
    def bot_init(self):
        """ Initialize and configure the bot """
 
        ############################
        # REQUIRED: LOGIN DETAILS! #
        ############################
        self.config['api_key'] = keys.consumer_key
        self.config['api_secret'] = keys.consumer_secret
        self.config['access_key'] = keys.access_token
        self.config['access_secret'] = keys.access_token_secret
 
 
        ######################################
        # SEMI-OPTIONAL: OTHER CONFIG STUFF! #
        ######################################
 
        # how often to tweet, in seconds
        self.config['tweet_interval'] = 1 * 5    # default: 1 minutes
 
        # use this to define a (min, max) random range of how often to tweet
        # e.g., self.config['tweet_interval_range'] = (5*60, 10*60) # tweets every 5-10 minutes
        self.config['tweet_interval_range'] = None
 
        # only reply to tweets that specifically mention the bot
        self.config['reply_direct_mention_only'] = True
 
        # only include bot followers (and original tweeter) in @-replies
        self.config['reply_followers_only'] = False
 
        # fav any tweets that mention this bot?
        self.config['autofav_mentions'] = False
 
        # fav any tweets containing these keywords?
        self.config['autofav_keywords'] = []
 
        # follow back all followers?
        self.config['autofollow'] = False
 
 
    def on_scheduled_tweet(self):
        """ Make a public tweet to the bot's own timeline. """
        # We might take senteces from somewhere and tweet them on a regular basis ...
        pass # don't do anything here ...
 
    def on_mention(self, tweet, prefix):
        if tweet:
            # get image from tweet
            try:
                image_file = get_image_file(tweet)
 
                if image_file is None:
                    text = ("{},"+no_image()).format(prefix)
                else:
                    # create a tweet and make sure to cut it off at 140 chars
                    text = ("{},"+make_text()).format(prefix)
 
            except Exception as e:
                    print(e)
 
            # do the tweeting based on wether we have an image
            tweetsize = 140 - len(prefix) - 1
            text = text[:140]
 
 
            if image_file is None:
 
                    print("No Image")
                    self.post_tweet(text, reply_to=tweet)
                    return
 
            else:
                filename, file = image_file
                img = Image.open(file)
                img = filter(img)
                format = filename.split(".", 1)[1].upper()
                print("Image format: {}".format(format))
                output = BytesIO()
                img.save(output, format="PNG")
               
            try:
                # Post
               
                self.post_tweet(text, reply_to=tweet, media=filename, file=output)
 
                output.close()
 
            except Exception as e:
                # did anything go wrong when we tried to create and post the tweet?
                print(e)
   
    def on_timeline(self, tweet, prefix):
        """ Actions to take on a timeline tweet. """
        pass # Don't do anything here ...
 
if __name__ == '__main__':
    bot = MyTwitterBot()
    bot.run()
 
</pre>
 
 
 
 
 
 
<pre style="font-size:smaller" >
 
"""
 
imagefuncs.py
 
"""
 
from PIL import Image, ImageDraw, ImageFont, ImageFilter, ImageColor, ImageEnhance
import random
 
 
#verschiedene Bildbearbeitungfunktionen
 
def blur (image):
    return image.filter(ImageFilter.BLUR)
 
def emboss (image):
    return image.filter(ImageFilter.EMBOSS)
 
def edges (image):
    return image.filter(ImageFilter.FIND_EDGES)
 
def transpose(image):
    return image.transpose(Image.FLIP_LEFT_RIGHT)
 
def invert(image):
    return image.point(lambda x: 255-x)
 
def pixelit (image):
    xsize, ysize = image.size
    width = xsize
    height = ysize
    minwidth = int(xsize * 0.05)
    minheight = int(ysize * 0.05)
    image = image.resize((minwidth, minheight) , Image.NEAREST)
    image = image.resize((width , height), Image.NEAREST)
    return image
 
#Random Filter List
 
 
 
def filter (image):
 
    functions_list = [blur, emboss, edges, invert, transpose, pixelit]
    filename = "final.png"
   
    x = 1
    y = 2
    z = 3
    list = [x, y, z]
    anzahl = random.choice(list)
    print (anzahl)
   
    if anzahl == 1:
        #Random eine Funktion
        imagefunc = random.choice(functions_list)
        image = imagefunc(image)
       
    if anzahl == 2:
        #Random eine Funktion
        imagefunc = random.choice(functions_list)
        image = imagefunc(image)
        #2.Runde Random Filter anwenden
        imagefunc = random.choice(functions_list)
        image = imagefunc(image)
       
    if anzahl == 3:
        #Random eine Funktion
        imagefunc = random.choice(functions_list)
        image = imagefunc(image)
        #2.Runde Random Filter anwenden
        imagefunc = random.choice(functions_list)
        image = imagefunc(image)
        #3.Runde Random Filter anwenden
        imagefunc = random.choice(functions_list)
        image = imagefunc(image)
   
    return image
 
</pre>
 
 
 
 
 
<pre style="font-size:smaller" >
 
"""
 
textposts.py
 
"""
 
#Import Modules for Project
import random
 
 
def make_text():
    a="Yeah, a new Image is Ready"
    b="What do you think about?"
    c="Uh, which Effekt"
    d="Nice"
    e="Thats what I do"
    f="Mhmmm, what you mean?"
    g="My next I post!"
    h="I should do more of this."
    i="Twitter is my life."
    j="This is my job!"
    k="Funky"
 
    text_list = [a, b, c, d, e, f, g, h, i, j, k]
   
    text = random.choice(text_list)
   
    return text
 
def no_image():
    a = "No Image there"
    b = "What you do? Where is my Image?"
    c = "I can't read! Send me a picture"
    d = "I like Images!"
    e = "Boring!"
    f = "Okay, I don't know what you want!"
    g = "Pictures! Thats what I want!"
    noimagelist = [a, b, c, d, e, f, g]
   
    text = random.choice(noimagelist)
   
    return text
 
 
</pre>
 
 


[[File:Robot_const.jpg]]
[[File:Robot_const.jpg]]