* dir for Sakura Editor setting files
[lab.git] / twitter / twitterbot.pl
index 7da7ec8..406ee12 100755 (executable)
@@ -14,8 +14,9 @@ use FindBin qw($Bin);
 use YAML::Tiny;
 use Date::Parse qw(str2time);
 
-sub VERBOSE () { $ARGV[0] eq 'verbose' };
-sub DEBUG   () { VERBOSE or $ARGV[0] eq 'debug' };
+my $_execmode = $ARGV[0] || 0;
+sub VERBOSE () { $_execmode eq 'verbose' };
+sub DEBUG   () { VERBOSE or $_execmode eq 'debug' };
 use Data::Dumper;
 
 DEBUG and warn "$0: debug mode";
@@ -35,17 +36,14 @@ if (! $bot->authorized) {
 }
 
 my $tweets = {};
-my $tweet;
-
-$tweet = or_search($bot, $conf->{hashtag}, $stat->{search});
-if ($tweet) {
-    %$tweets = (%$tweets, %$tweet);
-}
-
-$tweet = mentions_ids($bot, $stat->{mention});
-if ($tweet) {
-    %$tweets = (%$tweets, %$tweet);
-}
+%$tweets = (
+    %$tweets,
+    %{ or_search($bot, $conf->{hashtag}, $stat->{search}) }
+);
+%$tweets = (
+    %$tweets,
+    %{ mentions_ids($bot, $stat->{mention}) }
+);
 
 foreach my $id (sort keys %$tweets) {
     # $tweets->{$id}{type} eq 'search'  => found by search API
@@ -154,9 +152,11 @@ sub or_search {
                     screen_name => $res->{user}{screen_name},
                     status_id   => $res->{id},
                     text        => $res->{text},
+                    user_id     => $res->{user}{id},
                 };
                 if ($res->{retweeted_status}) {
-                    $id->{type} = 'retweet';
+                    $id->{retweet_of}   = $res->{retweeted_status}{id};
+                    $id->{type}         = 'retweet';
                 }
                 else {
                     $id->{type} = 'search';
@@ -205,6 +205,7 @@ sub mentions_ids {
                     status_id   => $_->{id},
                     text        => $_->{text},
                     type        => 'mention',
+                    user_id     => $_->{user}{id},
                 }
             } @{$res}
         };