Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# TodaysPeople by Fabian Topfstedt
# Based on NodeBoxes 'TextFromList' example (See http://nodebox.net)

import datetime
import urllib


def get_tagthenet_url_for_todays_wikipedia_page():
    now = datetime.datetime.now()
    day = now.day
    months = ['January', 'February', 'March', 'April', 'May', 'June', 'July',
        'August', 'September', 'October', 'November', 'December']
    month = months[now.month - 1]
    url = 'http://tagthe.net/api/?url=http://en.wikipedia.org/wiki/%s_%s&view=json' % (month, day)
    return url

def get_people():
    """Returns the names of people found on a web page"""
    url = get_tagthenet_url_for_todays_wikipedia_page()
    w = urllib.urlopen(url)
    ttn = w.read()
    w.close()
    # oh that's so hacked ... but it is code for artworks, not for rockets ;) 
    start_string = '"person":['
    start_index = ttn.find(start_string) + len(start_string)    
    stop_index = ttn[start_index:].find(']') + start_index
    people_str = ttn[start_index: stop_index]
    people_str = people_str.replace('"', '')
    people = people_str.split(',')
    return people

# Canvas size
w = 1920
h = 1200
size(w, h)

# People of the day's names
people = get_people()

# Typo
font('Arial Black')

# Define some colors.
white = color(1,1,1)
black = color(0,0,0)
red = color(1,0,0)

# Translation
translate((w//4),(h//4))

for i in range(50):
    # The next line isn't inside of the push-pops and therefore
    # the translate is appended every time. This might mean that
    # the composition goes off-screen. This also means that
    # it creates more interesting compositions.
    translate(random(-100, 100), random(-100, 100))
    # Save therefore current transformation. It's a good idea
    # to do this in the beginning of a loop. End the 
    # loop with a pop.
    push()
    # Rotate in increments of 45 degrees.
    rotate(random(5)*45)
    fontsize(random(200))
    fill(choice((white,black,red)))
    someText = choice(people)
    # One in two times, change the text to lowercase.
    if random(2) == 1:
        someText = someText.lower()
    try:
        text(someText, 0, 0)
    except:
        pass
    pop()