GMU:Bots 'n' Plots/Azucena Sanchez

From Medien Wiki

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.

Twit img01.jpg

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

Twit img02.jpg

Twit img03.jpg

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.

Twit img04.jpg

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) 


Robots have feelings too

At the end of the project I felt upset and frustrated with my results, but also happy. I like frustration. Interpol says: "you look so cute when you're frustrated" (and this is how it looks). So yeah I look cute and frustrated. Blend one.jpg

Anyways, though I didn't get the expected results, I did learned more about coding. I wanted to do more but at the time I tried to make my bot interact with people (on mention tweets), I didn't get to do it. This is what caused me frustration. I thought it was going to be easier but it wasn't. I am still trying to accomplish this, though I am afraid it will be too late by the time I'm done.

This bot was frustrating, yes. But I do feel happy with the result. It is a very personal fan project for I do love Interpol very much and to see music + maths + colors in one place is fascinating for me. To me, that's one of the main principles of digital art, the combination of colors and math. I am very glad that now I can see how the music that I love looks in white, red and black, Interpol's favorite colors.

I had fun along the way and I actually love to see and make a screenshot every time I was testing and running the bot and one of my favorite lines would appear in my screen. Also I retweeted myself many times, so yes. I am a narcisist.

Screen one.jpg Screen two.jpg

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.

Clear.png

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()


Screen1.png

Screen2.png

Screen3.png


My robot azu.png