March 2009: Now with motivation.
Ever want to say something BIG to everyone in the room? That is Projbot's purpose. It is a small web app hooked up to a projector. Think of it like a useful chat bot for real life.
What can it do? Three Four things, really. It can throw out really big pictures, really big text, and really big graphs, and really big motivational posters.
Image mode takes either a URL or random text. URLs are downloaded and displayed. Random text is forwarded to Google Image Search, and the top hit is downloaded for display. All your favorite google tricks still work, like limiting the searches to specific domains. Specify Image mode with a lower case
GI mode is a more convenient version of IMG. In a nutshell, Google-Image-I'm-Feeling-Lucky. You can use all your favorite google tricks, like
site:icanhascheezburger.com to guarantee lol-tastic pictures.
Finally, PLOT mode. It lets Plot mode allows you to draw simple Indexed style charts. Since these graphs are meant to be thrown up on a wall, they use a very chunky style. Sadly, I could not make any of my usual plotting packages draw big chunky diagrams. Thus it uses a very crude hand rolled plotting system. Tricking Gnuplot into drawing a similar style would be preferable. You can draw more complicated shapes with plot, though it only understands forward/backward slashes (rising/falling), underscores (low), and dash (high)
Motivational posters can be generated through
mot. This has several modes of use. The simplest is shown in the example. Just
mot followed by an
i search term, followed by a subheading. The search term is also used for the heading. Alternatively, you can use
mot search | heading | subheading or specify an image URL instead of search terms.
There three components to the system. First in the pipeline is the user interface. As it stands, this is a simple HTML page, where we can type commands which are sent as CGI calls to the second component, the server. The server parses user input and generates an image. Finally, the image is set to the client, a computer running a full-screen browser and connected to a projector. Security on the system is a bit lax. Any browser download the client and connect to the server. Any person can load the interface and send commands. We are running the whole thing behind a NAT, which is good enough.
As it stands now, all three components are done, for very crude values of done. The code is a mess, most of it was written in one day. More updates and features to come.
Start it up by launching
server.py. You may need to customize parts of
projbot.py, for example the resolution of your projector and the path to a font.