projects
/
lab.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* fix typo
[lab.git]
/
twitter
/
twitterbot.pl
diff --git
a/twitter/twitterbot.pl
b/twitter/twitterbot.pl
index
e4d1b62
..
d93e023
100755
(executable)
--- a/
twitter/twitterbot.pl
+++ b/
twitter/twitterbot.pl
@@
-13,16
+13,19
@@
use Net::Twitter::Lite;
use FindBin qw($Bin);
use YAML::Tiny;
use FindBin qw($Bin);
use YAML::Tiny;
+sub VERBOSE () { $ARGV[0] eq 'verbose' };
+sub DEBUG () { VERBOSE or $ARGV[0] eq 'debug' };
+use Data::Dumper;
+
+DEBUG and warn "$0: debug mode";
+
my $conf = loadconf("$Bin/config.yml");
if (! defined $conf) {
die "$0: cannot parse config file.\n";
}
my $stat = loadconf("$Bin/status.yml");
if (! defined $stat) {
my $conf = loadconf("$Bin/config.yml");
if (! defined $conf) {
die "$0: cannot parse config file.\n";
}
my $stat = loadconf("$Bin/status.yml");
if (! defined $stat) {
- $stat = {
- # do not set to 0
- since_id => 1,
- };
+ $stat = {};
}
my $bot = login($conf);
}
my $bot = login($conf);
@@
-33,12
+36,12
@@
if (! $bot->authorized) {
my %tweets;
my $tweet;
my %tweets;
my $tweet;
-$tweet = or_search($bot, $conf->{hashtag}, $stat->{since_id});
+$tweet = or_search($bot, $conf->{hashtag}, $stat->{search});
if ($tweet) {
%tweets = (%tweets, %$tweet);
}
if ($tweet) {
%tweets = (%tweets, %$tweet);
}
-$tweet = mentions_ids($bot, $stat->{since_id});
+$tweet = mentions_ids($bot, $stat->{mention});
if ($tweet) {
%tweets = (%tweets, %$tweet);
}
if ($tweet) {
%tweets = (%tweets, %$tweet);
}
@@
-47,13
+50,14
@@
foreach my $id (sort keys %tweets) {
if ($tweets{$id} eq 'retweet') {
next;
}
if ($tweets{$id} eq 'retweet') {
next;
}
- sleep($conf->{sleep});
+ DEBUG or sleep($conf->{sleep});
# retweet found tweet
# $tweets->{$id} eq 'search' => found by search API
# eq 'mention' => found by mention API
my $res;
eval {
# retweet found tweet
# $tweets->{$id} eq 'search' => found by search API
# eq 'mention' => found by mention API
my $res;
eval {
- $res = $bot->retweet($id);
+ DEBUG or $res = $bot->retweet($id);
+ DEBUG and warn "retweet($id) => ", Dumper($tweets{$id});
};
if ($@) {
evalrescue($@);
};
if ($@) {
evalrescue($@);
@@
-61,12
+65,13
@@
foreach my $id (sort keys %tweets) {
next;
}
next;
}
- $stat->{since_id} = $id;
+ $stat->{$tweets{$id}} = $id;
}
if (%tweets) {
# save last status to yaml file
}
if (%tweets) {
# save last status to yaml file
- YAML::Tiny::DumpFile("$Bin/status.yml", $stat);
+ DEBUG or YAML::Tiny::DumpFile("$Bin/status.yml", $stat);
+ DEBUG and warn "status.yml => ", Dumper($stat);
}
}
@@
-112,7
+117,7
@@
sub or_search {
my $bot = shift @_;
my $keywords = shift @_;
my $bot = shift @_;
my $keywords = shift @_;
- my $since_id = shift @_;
+ my $since_id = shift @_ || 1;
my $key = "";
foreach my $word (@$keywords) {
my $key = "";
foreach my $word (@$keywords) {
@@
-123,6
+128,7
@@
sub or_search {
$key = $word;
}
}
$key = $word;
}
}
+ DEBUG and warn "searching '$key'";
my $res;
my $ids = {};
my $res;
my $ids = {};
@@
-136,6
+142,7
@@
sub or_search {
);
}
if ($res->{results}) {
);
}
if ($res->{results}) {
+ VERBOSE and warn Dumper($res);
foreach my $tweet (@{$res->{results}}) {
my $res = $bot->show_status($tweet->{id});
if ($res->{retweeted_status}) {
foreach my $tweet (@{$res->{results}}) {
my $res = $bot->show_status($tweet->{id});
if ($res->{retweeted_status}) {
@@
-144,6
+151,7
@@
sub or_search {
else {
$ids->{$tweet->{id}} = 'search';
}
else {
$ids->{$tweet->{id}} = 'search';
}
+ VERBOSE and warn Dumper($res);
}
}
};
}
}
};
@@
-151,6
+159,7
@@
sub or_search {
evalrescue($@);
}
evalrescue($@);
}
+ DEBUG and warn "search result => ", Dumper($ids);
return $ids;
}
return $ids;
}
@@
-161,7
+170,7
@@
sub mentions_ids {
# or undef (none is found)
my $bot = shift @_;
# or undef (none is found)
my $bot = shift @_;
- my $since_id = shift @_;
+ my $since_id = shift @_ || 1;
my $res;
eval {
my $res;
eval {
@@
-170,18
+179,20
@@
sub mentions_ids {
since_id => $since_id,
}
);
since_id => $since_id,
}
);
+ VERBOSE and warn Dumper($res);
};
if ($@) {
evalrescue($@);
}
};
if ($@) {
evalrescue($@);
}
- my $ids;
+ my $ids = {};
if ($res && @{$res}) {
$ids = {
map { $_->{id} => 'mention' } @{$res}
};
}
if ($res && @{$res}) {
$ids = {
map { $_->{id} => 'mention' } @{$res}
};
}
+ DEBUG and warn "mentions result => ", Dumper($ids);
return $ids;
}
return $ids;
}