Acme-Free-API-Stonks

 view release on metacpan or  search on metacpan

lib/Acme/Free/API/Stonks.pm  view on Meta::CPAN

package Acme::Free::API::Stonks;

use strict;
use warnings;

our $VERSION = '1.0.2';

use HTTP::Tiny;
use JSON            qw/decode_json/;
use Util::H2O::More qw/baptise d2o/;

use constant {
    BASEURL => "https://tradestie.com/api/v1/apps/reddit",
};

sub new {
    my $pkg  = shift;
    my $self = baptise { ua => HTTP::Tiny->new }, $pkg;
    return $self;
}

sub get {
    my $self = shift;
    my $resp = d2o $self->ua->get(BASEURL);
    return d2o -autoundef, decode_json $resp->content;
}

sub stonks {
    my $self = shift;
    return $self->get;
}

1;

__END__

=head1 NAME

Acme::Free::API::Stonks - Perl API client for the, I<top 50 stocks discussed on le'Reddit
subeddit - r/Wallstreetbets>, L<https://tradestie.com/apps/reddit/api/>.

This module provides the client, "stonks", that is available via C<PATH> after install.

=head1 SYNOPSIS

  #!/usr/bin/env perl
  
  use strict;
  use warnings;
  
  use Acme::Free::API::Stonks qw//;
  
  my $stonk = Acme::Free::API::Stonks->new;
  
  printf STDERR "%-5s %-8s %-4s %4s\n", "tick", "sentiment", "score", "comments"; 
  foreach my $s (sort {$a->ticker cmp $b->ticker} $stonk->stonks->all) {
    printf "%-5s %-8s % 4.3f % 4d\n", $s->ticker // "na", $s->sentiment // "na", $s->sentiment_score // "nan", $s->no_of_comments // "nan";
  }

=head2 C<stonks> Commandline Client

After installing this module, simply run the command C<stonks> without any arguments, and it
will print a 4-column list of the top 50 stocks discussed on Reddit subeddit, C<r/Wallstreetbets>.

The example below is printing out the full list (at the time of this writing), sorting by the
4th column using C<sort> (this is the proper way to do it on the cli).

  shell> stonks | sort -nr -k 4
  tick  sentiment score comments
  NVDA  Bearish  -0.033  138
  INTC  Bullish   0.206   34
  AI    Bullish   0.245   26
  DG    Bearish  -0.049   19
  SMCI  Bullish   0.129   18
  QQQ   Bullish   0.294    9
  DLTR  Bullish   0.015    9
  AMD   Bullish   0.226    8
  TSLA  Bullish   0.168    7
  DELL  Bullish   0.120    6
  MU    Bullish   0.074    5
  LULU  Bearish  -0.050    5
  EOD   Bearish  -0.013    5
  AVGO  Bullish   0.116    5
  AAPL  Bullish   0.385    5
  OPEN  Bearish  -0.062    4



( run in 2.075 seconds using v1.01-cache-2.11-cpan-d80b1682f3f )