#!/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; }