Files
twitter-project/demos/wordcloud.py
2022-11-02 15:32:44 +01:00

54 lines
1.4 KiB
Python

from eca import *
from eca.generators import start_offline_tweets
import datetime
import textwrap
import pprint
import re
# This function will be called to set up the HTTP server
def add_request_handlers(httpd):
# use the library content from the template_static dir instead of our own
# this is a bit finicky, since execution now depends on a proper working directory.
httpd.add_content('/lib/', 'template_static/lib')
httpd.add_content('/style/', 'template_static/style')
@event('init')
def setup(ctx, e):
# start the offline tweet stream
start_offline_tweets('sports1.txt', 'chirp', time_factor=100000)
ctx.words = {}
# simple word splitter
pattern = re.compile('\W+')
# sample stopword list, needs to be much more sophisticated
stopwords = ['het', 'een', 'aan', 'zijn', 'http', 'www', 'com', 'ben', 'jij']
def words(message):
result = pattern.split(message)
result = map(lambda w: w.lower(), result)
result = filter(lambda w: w not in stopwords, result)
result = filter(lambda w: len(w) > 2, result)
return result
@event('chirp')
def tweet(ctx, e):
# we receive a tweet
tweet = e.data
for w in words(tweet['text']):
emit('word', {
'action': 'add',
'value': (w, 1)
})
emit('taart', {
'action': 'add',
'value': (str(w[0]), 1)
})
emit('balk', {
'action': 'add',
'value': (str(w[0]), 1)
})