Acme-Free-API-Stonks
view release on metacpan or search on metacpan
lib/Acme/Free/API/Stonks.pm view on Meta::CPAN
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
DKS Bearish -0.444 4
BABA Bearish -0.112 4
AU Bullish 0.063 4
ULTA Bullish 0.179 3
PTON Bullish 0.048 3
IBM Bullish 0.393 3
HPE Bullish 0.101 3
CRWD Bullish 0.503 3
BBBY Bearish -0.060 3
AMZN Bearish -0.045 3
AFRM Bearish -0.144 3
WOW Bullish 0.586 2
VS Bearish 0.000 2
UI Bearish -0.001 2
SAVE Bullish 0.809 2
PDD Bullish 0.230 2
ON Bearish -0.379 2
NOW Bearish -0.155 2
MRVL Bullish 0.335 2
GOOG Bearish -0.463 2
EV Bullish 0.077 2
UBS Bearish 0.000 1
TA Bearish 0.000 1
SR Bearish -0.359 1
SIRI Bearish 0.000 1
PANW Bullish 0.660 1
MDB Bullish 0.340 1
FTC Bearish -0.758 1
FAT Bearish 0.000 1
ESTC Bearish 0.000 1
COOL Bullish 0.515 1
CONE Bearish 0.000 1
ATEC Bearish -0.665 1
ABC Bearish -0.563 1
=head1 DESCRIPTION
Contributed as part of the B<FreePublicPerlAPIs> Project described at,
L<https://github.com/oodler577/FreePublicPerlAPIs>.
This fun module is to demonstrate how to use L<Util::H2O::More> and
L<Dispatch::Fu> to make creating easily make API SaaS modules and
clients in a clean and idiomatic way. These kind of APIs tracked at
L<https://www.freepublicapis.com/> are really nice for fun and practice
because they don't require dealing with API keys in the vast majority of cases.
=head1 METHODS
( run in 1.108 second using v1.01-cache-2.11-cpan-7fcb06a456a )