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!