From 05a2c0b5df45d380b2bfc3ab4640d9c6a3bf594b Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 22 Apr 2017 13:01:17 +0100 Subject: store tweets in postgres --- lib/Dakkar/TweetArchive.pm | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lib/Dakkar/TweetArchive.pm (limited to 'lib/Dakkar/TweetArchive.pm') diff --git a/lib/Dakkar/TweetArchive.pm b/lib/Dakkar/TweetArchive.pm new file mode 100644 index 0000000..9d914fd --- /dev/null +++ b/lib/Dakkar/TweetArchive.pm @@ -0,0 +1,52 @@ +package Dakkar::TweetArchive; +use 5.024; +use Moo; +use experimental 'signatures'; +use Net::Twitter; +use Types::Standard qw(Str InstanceOf); +use namespace::clean; + +has [qw(consumer_key consumer_secret access_token access_token_secret)] => ( + is => 'ro', + required => 1, + isa => Str, +); + +has client => ( + is => 'lazy', + isa => InstanceOf['Net::Twitter'], +); + +sub _build_client($self) { + my $nt = Net::Twitter->new( + traits => [ + qw/API::RESTv1_1 OAuth RetryOnError/, + AutoCursor => { + max_calls => 16, + force_cursor => 1, + array_accessor => 'users', + methods => [qw/friends followers/], + }, + ], + consumer_key => $self->consumer_key, + consumer_secret => $self->consumer_secret, + ); + + $nt->access_token($self->access_token); + $nt->access_token_secret($self->access_token_secret); + + return $nt; +} + +sub home_timeline($self,$since_id) { + return $self->client->home_timeline({ + include_entities => 1, + trim_user => 0, + exclude_replies => 0, + ( $since_id ? ( since_id => $since_id ) : () ), + count => 200, + }); +} + +1; + -- cgit v1.2.3