Skip to content

kal247/App-bookmarks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bookmarks - Export browser bookmarks as plain text.

SYNOPSIS

$ bookmarks [-hVda] [-f format] [file ...]

-h, --help      help
-V, --version   version
-d              debug
-a              all files : process arguments and default locations
-f format       any combination of letters t,u,d as title/url/description (default : tud)
-s              find schemeless URLs in text files (default : no)

DESCRIPTION

bookmarks is a tool to export bookmarks from files supplied as arguments, or from browsers default locations (when called without arguments). If file is a dash "-", STDIN is read and processed as plain text source. The following sources are supported :

  • Safari (*.plist)
  • Firefox (*.sqlite)
  • Chrome and Edge (*Bookmarks)
  • Internet Explorer (*Favorites)
  • Netscape (*.html)
  • Markdown (*.md)
  • Gemini (*.gmi)
  • Surfraw (same as plain text)
  • Plain text (any other extension)

Default export format : <title> <url> <description>

  • <title> is your bookmark's name, alias, or webpage title.
  • <url> is your bookmark's address, URL or URI.
  • <description> is empty for Chrome, Edge, Internet Explorer, Netscape or Gemini. It contains Safari 'Description', Firefox 'Tags' and what the Markdown spec calls the 'Title' (just the tooltip, actually).

Markdown, Gemini and plain text files are processed line by line (as UTF-8) :

  [markdown example](http://example.md/ "with description")
  => gemini://example.gmi gemini example
  plain text example http://example.txt with description

SEARCH BOOKMARKS INTERACTIVELY FROM CLI

This tool can be used to search, select and open bookmarks interactively from your terminal. The following instructions are for macOS.

Install the wonderful fzf (available in Homebrew), URI::Find (CPAN), App::uricolor (CPAN), and add these aliases to your shell :

Open link(s) with default application :

alias lk="bookmarks | uricolor | fzf --ansi --exact --multi | urifind | xargs open"
  • uricolor colorizes URIs to distinguish them from title and description.
  • fzf is a fuzzy finder : use TAB for multiple selection, press ENTER to confirm, or ESC to cancel.
  • urifind extracts all URIs. Try uricolor -s and urifind --schemeless to find schemeless URLs.
  • Selected URIs will open with your default browser or application.
  • Since open uses macOS Launch Services to determine which program to run, most common schemes such as ftp:// or ssh:// are automatically recognized.

N.B. On Windows, I use busybox-w32 and a file lk.bat containing :

@echo off

bookmarks | uricolor | fzf --ansi --exact --multi | urifind | busybox xargs -n1 cmd /c start ""

Copy link(s) to clipboard :

alias lkc="bookmarks | uricolor | fzf --ansi --exact --multi | urifind | pbcopy"

CHECK LINKS STATUS

These examples use the tool http_status provided by HTTP::SimpleLinkChecker (CPAN).

Check links and show status :

bookmarks -f u | xargs http_status

Show only broken links (parallel) :

bookmarks -f u | xargs -n10 -P16 http_status 2>/dev/null | perl -ne 'print if not /200$/'

INSTALLATION

To install this module automatically from CPAN :

cpan App::bookmarks

To install this module automatically from Git repository :

cpanm https://github.com/kal247/App-bookmarks.git

To install this module manually, run the following commands :

perl Makefile.PL
make     
make test
make install

PREREQUISITES

All are optional.

  • Safari : macOS
  • Firefox : DBI, DBD::SQLite
  • Chrome : File::Slurper, JSON
  • Internet Explorer : Config::Any, Config::Tiny, Win32
  • Netscape : Netscape::Bookmarks
  • Plain text : URI::Find
  • Markdown : none

SUPPORT AND DOCUMENTATION

After installing, you can find documentation for this module with the perldoc command :

perldoc bookmarks

You can also look for information at :

LICENSE AND COPYRIGHT

This software is Copyright (c) 2019-2021 by jul.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)