Hello World!
Final Bot
Idea Tweet an image that represented Interpol lyrics based on the aesthetics of the band.
What does it do? A .txt file contains many of the lyrics of interpol. The bot grabs a line randomly and splits the letters of the line selected. Each letter has been given a color value which is display on top of an Interpol image randomly selected also.
Process First, the bot was mixing interpol lyrics and tweeting them but the lines were not clean. It was still displaying them as a list. I cleaned them. Then I decided to use the lyrics in the order the words appear this would help me create a proper image of the words.
Afterwards I only had an image that were basically rectangles that represented the words, Martin suggested I experimented a little bit more with this. I wanted to keep the images clean in order to sort of keep or respect Interpol Band's aesthetics. Either way I decided just to select a bunch of images of the band and blend them with the one I was creating, I was very happy with the result
At the end I played a little bit with the filters to kind of make the image more interesting. I wanted it to have a sort of digital and with a little bit of a glitch. This was the result.
This is the final code
from PIL import Image, ImageDraw, ImageFont, ImageFilter, ImageColor from textwrap import wrap from PIL import Image as im import random import numpy as np import colorsys import random import tweepy import sys import time from time import sleep from language import learning #TWITTER KEYS consumer_key = "JgAFe2vulLO4KvSvHPdNI30xA" consumer_secret = "Zbu0zBP8g4sdS5LX4XrI9y3ddNdGfj0woSxxFgxiX5wrMNpC9X" access_token = "3329105651-NI0NPXV2HUCRTXPueHdEhzRCoKPNwwf3vxOd5yj" access_token_secret = "obFHhsKlQ7KlXAXOqz7c5zMf3qvYDSsfvtnw84cFBqV4N" auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.secure = True auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) #PARAMETERS FOR SQUARE ABOVE OTHER IMAGES #EACH ONE OF THE LETTERS IS REPRESENTED BY A COLOR SPECIALLY SELECTED ACCORDING WITH THE #AESTHETIC OF THE BAND. iNTERPOL USES BLACK, RED AND WHITE TILESIZE = 40 MAPWIDTH = 3 MAPHEIGHT = 5 color = { "a" : (255,0,0), "b" : (243,0,0), "c" : (231,0,0), "d" : (219,0,0), "e" : (0,0,0), "f" : (195,0,0), "g" : (183,0,0), "h" : (171,0,0), "i" : (0,0,0), "j" : (159,0,0), "k" : (135,0,0), "l" : (0,0,0), "m" : (123,0,0), "n" : (0,0,0), "o" : (0,0,0), "p" : (0,0,0), "q" : (111,0,0), "r" : (0,0,0), "s" : (99,0,0), "t" : (0,0,0), "u" : (75,0,0), "v" : (63,0,0), "w" : (51,0,0), "x" : (39,0,0), "y" : (15,0,0), "z" : (3,0,0), " " : (255,255,255), "'" : (15,0,0), "," : (207,0,0) } #make image #SET PARAMETERS bg_color = (0,0,0) width = 660 height = 330 tilesize = 10 screen_size = width, height #DRAW BACKGROUND im = Image.new('RGBA', screen_size, bg_color) background = ImageDraw.Draw(im) #GET TEXT l = "leifErikson.txt" leif = open (l) print("Leif Erikson is in da house") lines = leif.readlines() random.shuffle(lines) for line in lines: li = list(line) #DRAW LINES x1 = 0 tilesize = width / len(li) for letter in li: x2 = x1 + tilesize smallLetter = letter.lower() print "This is letter %s" % letter try: background.rectangle([x1, 0, x2, height], fill= color[smallLetter]) #if letter == "i": #background.rectangle([x1, 0, x2 + 50, height], fill= (0,255,0)) except: pass x1 += tilesize imfil = im.filter(ImageFilter.EDGE_ENHANCE_MORE) imsha = imfil.filter(ImageFilter.EDGE_ENHANCE_MORE) imsha.save("rec.jpg") #BLEND IMAGES TOGETHER IN ONE alpha = 0.8 #IMAGES OF THE BAND TO BE USED inter01 = Image.open("inter_01.jpg") inter02 = Image.open("inter_02.jpg") inter03 = Image.open("inter_03.jpg") inter04 = Image.open("inter_04.jpg") inter05 = Image.open("inter_05.jpg") inter06 = Image.open("inter_06.jpg") inter07 = Image.open("inter_07.jpg") inter08 = Image.open("inter_08.jpg") inter09 = Image.open("inter_09.jpg") inter010 = Image.open("inter_010.jpg") #SELECT RANDOM IMAGE AND BLEND IT interim = [inter01, inter02, inter03, inter04, inter05, inter06, inter07, inter08, inter09, inter010] im2 = Image.open("rec.jpg") im2rotate = im2.rotate(25) select_interim = (random.choice(interim)) filter_interim = select_interim.filter(ImageFilter.BLUR) blend = Image.blend (select_interim,im2, alpha) #blend2 = Image.blend (blend, im2rotate, alpha) #print(li) blendfil = blend.filter(ImageFilter.SHARPEN) #PRINT & SHOW IMAGE blend.show() blend.save("blends.jpg") print(line) #self.post_tweet(text, media="output.png", file=output, reply_to=reply_to) api.update_with_media("blends.jpg" ,line)
Progress
I manage to clean the code and now I am tweeting sentences without comas or other type characters that cause the sentence to look dirty and not clear. The words are still random and i don't know if I will keep it that way. I am going to create another bot that will take the sentences twitted by @RolandAndLeif and will produce an image out of them. It will only be pixels or better yet squares.
Midterm Bot
This is a bot that takes a song from the band Interpol called Leif Erikson. It tries to take line by line from the lyrics and re-arrange them. My experiment was to see if some nice combinations could be created from lyrics that are very thoughtful and metaphoric.
So far the bot is running in twitter and is working, but I still need to clean it and take it a step further, I wan to take the lyrics from the song Roland (also from interpol) and mix them in one tweet, to make ir more interesting.
This is the code
import tweepy import sys import time import random from time import sleep #TWITTER KEYS consumer_key = "JgAFe2vulLO4KvSvHPdNI30xA" consumer_secret = "Zbu0zBP8g4sdS5LX4XrI9y3ddNdGfj0woSxxFgxiX5wrMNpC9X" access_token = "3329105651-NI0NPXV2HUCRTXPueHdEhzRCoKPNwwf3vxOd5yj" access_token_secret = "obFHhsKlQ7KlXAXOqz7c5zMf3qvYDSsfvtnw84cFBqV4N" auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.secure = True auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) #INITIALIZATION l = "leifErikson.txt" leif = open (l) print("Leif Erikson is in da house") lines = leif.readlines() for line in lines: li = line.split(' ') random.shuffle(li) clean=' '.join(li) api.update_status(status = clean) print(clean) time.sleep(90) leif.close()