Немножко подфиксил бота для Твит-PR

Вызывается с параметром тег [сколько записей смотреть на предмет твиттерчан, по умолчанию 100]

Типа

perl script.pl followfriday 80

 — пролистает 80 последних записей ленты и вычленит из них все встречающиеся ники, которые потом поделит на посты до 140 символов.

Запись в кроне, соответственно —

# пятница
10 16 * * 5 perl script.pl followfriday
# понедельник
10 16 * * 1 perl script.pl sexymonday
# среда
10 16 * * 3 perl script.pl tinyfriday

#!/usr/bin/perl -w
use strict;
use WWW::Curl::Easy;
use URI::Escape;

my $login = q[skazkin];
my $password = q[derпароль];
my $num_timeline = $ARGV[1] ? $ARGV[1] : 100;
my $href = «http://twitter.com/statuses/friends_timeline.xml?count=$num_timeline»;

exit if !$ARGV[0];
my $message_dummy = «#».$ARGV[0]." ";

my (@posts, %tmp, @people);

my $lenta = callTwitter ({href=>$href});

while ($lenta->{content} =~ /(@[a-z0-9_]+)/ig){
push (@people, $1) if $1 ne q[@].$login;
}
@people = grep (!$tmp{$_}++, @people);

while ($#people != -1){
my $msg = $message_dummy;
while (length $msg < 140){
last if $#people == -1;
my $name = shift @people;

if((length $name) + (length $msg) > 140){
push (@people, $name);
last;
}
$msg .= $name.q[ ];
}
push (@posts,$msg);
}

$href = «http://twitter.com/statuses/update.xml»;

foreach (@posts){
my $status = callTwitter ({
href => $href,
post => q[status=].uri_escape ($_)
});
print qq[http://twitter.com/skazkin/status/$1\n] if $status->{content} =~ /(\d+)/;

sleep (1);
}

sub callTwitter {
my $params = shift;
my ($result, $retcode, $curl) = ('false',undef,undef);
$curl = new WWW::Curl::Easy;
$curl->setopt (CURLOPT_URL, $params->{href});
$curl->setopt (CURLOPT_USERPWD, $login.q[:].$password);
$curl->setopt (CURLOPT_POST, 1) if $params->{post};
$curl->setopt (CURLOPT_POSTFIELDS, $params->{post}) if $params->{post};
open (my $tmp_for_curl, ">", \$result);
$curl->setopt (CURLOPT_FILE,$tmp_for_curl);
$retcode = $curl->perform;
return {retcode => $retcode, content => $result};
}

Комментировать

Войдите чтобы оставить комментарий.