#!/usr/bin/perl -w use Net::Twitter; use Date::Calc qw(:all); my $twit = Net::Twitter->new(username=>"routed", password=>"if it was only this easy..."); ## configuration my $wait = 1; # 1000ms my $last_file = "./last.run"; my $update_wait = "180"; # wait in seconds between each run time my $max_len = 30; # in characters my $serial_dev = "/dev/cuad0"; ## get the latest time if (!-e $last_file) { print "no last file! setting last run date to 0!\n"; open(FD, "+>", $last_file); print FD "0"; close(FD); } open(FD, "<", $last_file); my $last = ; close(FD); print "Twitter->Thermal Printer V0.001\n"; print "Starting main loop @" . $update_wait . "sec intervals...press CTRL-C to end.\n"; while (1) { ### START MAIN LOOP ### my $results = $twit->friends_timeline(); for (reverse @{$results}) { # printf "%s : %s\n", $_->{user}{name}, $_->{text}; # printf "%s\n", $_->{created_at}; my $date = $_->{created_at}; my $user = $_->{user}{name}; my $text = $_->{text}; if ($text =~ /^\@routed /) { ## get date for timestamp $date =~ /... (\w\w\w) (\d+) (\d+):(\d+):(\d+) .+ (\d+)$/; my $tstamp = $6 . (Decode_Month($1)+10) . ($2+10) . $3 . $4 . $5; ## CHANGE THIS SO IT IS @COMPUTERS_USERNAME $text =~ s/^\@routed //g; $date =~ s/:.. \+0000 ....//g; #strip out stuff we don't need # date is in GMT!! if ($tstamp > $last) { # we have a new status! $last = $tstamp; open(FD,">>",$serial_dev); print FD "$user @ $date\r\n\r\n"; print "$user @ $date\r\n"; print $text . "\r\n\r\n"; select(undef,undef,undef,$wait); while (length($text) > $max_len) { if (index($text," ") > $max_len) { print FD substr($text,0,$max_len) . "\r\n"; select(undef,undef,undef,$wait); $text = substr($text,$max_len,length($text)-$max_len); } else { my $pos = 0; for (my $i = 0; $i < $max_len; $i++) { if (substr($text,$i,$max_len-$i) =~ / /) { $pos = $i; } } print FD substr($text,0,$pos+1) . "\r\n"; select(undef,undef,undef,$wait); $text = substr($text,$pos+1,length($text)-$pos-1); } } print FD $text . "\r\n\r\n\r\n\r\n"; select(undef,undef,undef,$wait); close(FD); } } } open(FD, "+>", $last_file); print FD "$last"; close(FD); ### END MAIN LOOP ### sleep($update_wait); }