NAME
BusyBird - a multi-level Web-based timeline viewer
DESCRIPTION
BusyBird is a personal Web-based timeline viewer application. You can think of it as a Twitter client, but BusyBird is more generic and focused on viewing.
BusyBird accepts data called Statuses from its RESTful Web API. The received statuses are stored to one or more Timelines. You can view those statuses in a timeline by a Web browser.
[ Statuses ]
| +----------------+
| | BusyBird |
HTTP | |
POST --> | [ Timeline 1 ]----+
| [ Timeline 2 ] | |
| ... | HTTP
+----------------+ |
v
[ Web Browser ]
|
YOU
Features
BusyBird is extremely programmable. You are free to customize BusyBird to view any statuses, e.g., Twitter tweets, RSS feeds, IRC chat logs, system log files etc. In fact BusyBird is not much of use without programming.
BusyBird has well-documented Web API. You can easily write scripts that GET/POST statuses from/to a BusyBird instance. Some endpoints support real-time notification via HTTP long-polling.
BusyBird maintains read/unread states of individual statuses. You can mark statuses as "read" via Web API.
BusyBird renders statuses based on their Status Levels. Statuses whose level is below the threshold are dynamically hidden, so you can focus on more relevant statuses. Status levels are set by you, not by BusyBird.
SCREENSHOTS
https://github.com/debug-ito/busybird/wiki/Screenshots
QUICK START
Example in Ubuntu Linux.
Install prerequisites
$ sudo apt-get install build-essential cpanminus
Install
$ cpanm -n BusyBird $ export PERL5LIB="$HOME/perl5/lib/perl5:$PERL5LIB" $ export PATH="$HOME/perl5/bin:$PATH"
Run
$ busybird Twiggy: Accepting connections at http://127.0.0.1:5000/
Open timelines
$ firefox http://localhost:5000/
Post a status
$ wget -q -O- --post-data '{"text":"hello, world!"}' http://localhost:5000/timelines/home/statuses.json
See BusyBird::Manual::Tutorial for detail.
DOCUMENTATION
- BusyBird::Manual::Tutorial
-
If you are new to BusyBird, you should read this first.
- BusyBird::Manual::WebAPI
-
Reference manual of BusyBird Web API.
- BusyBird::Manual::Status
-
Object structure of BusyBird statuses.
- BusyBird::Manual::Config
-
How to configure BusyBird.
- BusyBird::Manual::Config::Advanced
-
Advanced topics about configuring BusyBird.
- ...and others.
-
Documentation for various BusyBird modules may be helpful when you customize your BusyBird instance.
AS A MODULE
Below is detailed documentation of BusyBird module. Casual users need not to read it.
As a module, BusyBird maintains a singleton BusyBird::Main object, and exports some functions to manipulate the singleton. That way, BusyBird makes it easy for users to write their config.psgi
file.
SYNOPSIS
In your ~/.busybird/config.psgi
file...
use BusyBird;
busybird->set_config(
time_zone => "+0900",
);
timeline("twitter_work")->set_config(
time_zone => "America/Chicago"
);
timeline("twitter_private");
end;
EXPORTED FUNCTIONS
The following functions are exported by default.
$main = busybird()
Returns the singleton BusyBird::Main object.
$timeline = timeline($timeline_name)
Returns the BusyBird::Timeline object named $timeline_name
from the singleton. If there is no such timeline, it automatically creates the timeline.
This is equivalent to busybird()->timeline($timeline_name)
.
$psgi_app = end()
Returns a PSGI application object from the singleton BusyBird::Main object. This is supposed to be called at the end of config.psgi
file.
This is equivalent to BusyBird::Main::PSGI::create_psgi_app(busybird())
.
TECHNOLOGIES USED
REPOSITORY
https://github.com/debug-ito/busybird
BUGS AND FEATURE REQUESTS
Please report bugs and feature requests to my Github issues https://github.com/debug-ito/busybird/issues.
Although I prefer Github, non-Github users can use CPAN RT https://rt.cpan.org/Public/Dist/Display.html?Name=BusyBird. Please send email to bug-BusyBird at rt.cpan.org
to report bugs if you do not have CPAN RT account.
AUTHOR
Toshio Ito, <toshioito at cpan.org>
CONTRIBUTORS
Keisuke Minami
LICENSE AND COPYRIGHT
Copyright 2014 Toshio Ito.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.