|
|
- #!/usr/bin/env perl
-
- use strict;
- use warnings;
-
- use 5.10.0;
-
- use File::HomeDir;
- use JSON;
- use Data::Dumper;
- use Time::Piece;
- use Carp;
-
-
- if ($ARGV[0] eq 'tags') {
- print tags();
- } else {
- my $ISO_8601_FMT = '%Y-%m-%d';
- print recent(Time::Piece->strptime('2020-03-02', $ISO_8601_FMT));
- }
-
- sub tags {
- # See the bit about auth here:
- # https://pinboard.in/api/
- my $home = File::HomeDir->my_home;
- my $token = file_get_contents("${home}/.pinboardrc");
- chomp($token);
-
- my $url = 'https://api.pinboard.in/v1/tags/get?format=json&auth_token=' . $token;
-
- my $pinboard_json = `curl -s '${url}'`;
- my $JSON = JSON->new->utf8->pretty;
- my $pinboard_hashref = $JSON->decode($pinboard_json);
- my %tags = %{ $pinboard_hashref };
- my $output = '';
- foreach my $tag (keys %tags) {
- $output .= "$tag\n";
- }
- return $output;
- #
- # my @output;
- # foreach my $tag (@tags)
- # {
- # push @output, Dumper($tag);
- # }
- #
- # if (@output > 0) {
- # return join "\n", @output;
- # }
- # return;
- }
-
- sub recent {
- my ($day) = @_;
-
- # See the bit about auth here:
- # https://pinboard.in/api/
- my $home = File::HomeDir->my_home;
- my $token = file_get_contents("${home}/.pinboardrc");
- chomp($token);
-
- my $url = $day->strftime(
- 'https://api.pinboard.in/v1/posts/get?dt=%Y-%m-%d&meta=yes&format=json&auth_token='
- . $token
- );
-
- my $pinboard_json = `curl -s '${url}'`;
- my $JSON = JSON->new->utf8->pretty;
- my $pinboard_hashref = $JSON->decode($pinboard_json);
- my @posts = @{ $pinboard_hashref->{posts} };
-
- my @output;
- foreach my $post (@posts)
- {
- push @output, Dumper($post);
- }
-
- if (@output > 0) {
- return join "\n", @output;
- }
- return;
- }
-
- # PHP-style file-content grabbing:
- sub file_get_contents {
- my ($file) = @_;
-
- open my $fh, '<', $file
- or croak "Couldn't open $file: $!\n";
-
- my $contents;
- {
- # line separator:
- local $/ = undef;
- $contents = <$fh>;
- }
-
- close $fh or croak "Couldn't close $file: $!";
-
- return $contents;
- }
|