Perl script to fetch bookmarks from Linkding REST API
 =====================================================

 Last edited: $Date: 2020/12/26 17:38:35 $

 Linkding (https://github.com/sissbruecker/linkding)
 is a awesome self-hosted bookmark manager.

 I comes with a REST API, so you  can  add  some  fun
 stuff.

 Here  follows  a small Perl script that uses the API
 to get the bookmarks that have been  tagged  with  a
 certain tag.

     Perl REST Client module and Perl JSON module
     --------------------------------------------

 The script uses two Perl modules:

 - REST::Client: To talk to the Linkding
 - JSON: to decode the JSON encoded data from the Linkding REST API

                  Small Perl script
                  -----------------

 I  put  the  part,  which  queries the API, in a sub
 routine, so that it is easy to paste it in some Perl
 script.

 I  created  the Perl script on a FreeBSD machine, if
 you use another operating system, you probably  have
 to adopt the she-bang line.

   #!/usr/local/bin/perl

   use strict;
   use warnings;
   use REST::Client;
   use JSON;

   # copy the token from the Settings page here:
   my $token = 'abcdefghijklmnopqrstuvwxyz82cd98ede63036';

   # tag for which to retreive the bookmarks
   my $select_tag="my_special_tag";

   # your Linkding host
   my $linkding_host='http://192.168.0.105:9090';

   my $client = REST::Client->new();
   $client->setHost($linkding_host);
   $client->addHeader ('Authorization' , "Token $token" );
   &get_bookmarks( $select_tag );

   sub get_bookmarks()
   {
       my $select_tag=$_[0];

       # search for the tag, and override default
       # limit of 100 bookmark
       # %23 = '#'
       $client->GET("/api/bookmarks/?q=%23$select_tag&limit=999" );
       my $response = $client->responseContent();

       # sort the bookmarks from newest to oldest
       my @bookmarks=sort {$b->{date_modified} cmp $a->{date_modified}}
           @{decode_json($response)->{results}};

       foreach my $bookmark (@bookmarks)
       {
           # remove newlines from title field
           $bookmark->{title} =~ s/[\r\n]+//g;

           # if a title is missing, use the URL for that
           if ( $bookmark->{title} eq "" )
           {
               $bookmark->{title} = $bookmark->{url};
           }

           # do something with the retreived bookmarks
           print $bookmark->{url} . "\t" . $bookmark->{title} . "\n";
       }
   }

 Adopt to your needs and have fun!