mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-10-31 18:47:02 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			162 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| The calibre:// URL scheme
 | |
| =========================================
 | |
| 
 | |
| calibre registers itself as the handler program for calibre:// URLs. So you can
 | |
| use these to perform actions like opening books, searching for books, etc from
 | |
| other programs/documents or via the command line. For example, running the
 | |
| following at the command line::
 | |
| 
 | |
|     calibre calibre://switch-library/Some_Library
 | |
| 
 | |
| Will open calibre with the library named ``Some Library``. Library names are
 | |
| the folder name of the library folder with spaces replaced by underscores. The
 | |
| special value ``_`` means the current library.
 | |
| The various types of URLs are documented below.
 | |
| 
 | |
| You can even place these links inside HTML files or Word documents or similar
 | |
| and the operating system will automatically run calibre to perform the
 | |
| specified action.
 | |
| 
 | |
| 
 | |
| .. contents::
 | |
|     :depth: 1
 | |
|     :local:
 | |
| 
 | |
| Switch to a specific library
 | |
| -------------------------------
 | |
| 
 | |
| The URL syntax is::
 | |
| 
 | |
|     calibre://switch-library/Library_Name
 | |
| 
 | |
| Library names are the folder name of the library with spaces replaced by
 | |
| underscores. The special value ``_`` means the current library. You can also
 | |
| use :ref:`hex encoding <hex_encoding>` for the library names, useful if the library names have
 | |
| special characters that would otherwise require URL encoding. Hex encoded
 | |
| library names look like::
 | |
| 
 | |
|     _hex_-AD23F4BC
 | |
| 
 | |
| Where the part after the ``_hex_-`` prefix is the library name encoded as UTF-8
 | |
| and every byte represented by two hexadecimal characters.
 | |
| 
 | |
| 
 | |
| Show a specific book in calibre
 | |
| -------------------------------
 | |
| 
 | |
| The URL syntax is::
 | |
| 
 | |
|     calibre://show-book/Library_Name/book_id
 | |
| 
 | |
| This will show the book with ``book_id`` (a number) in calibre. The ids for
 | |
| books can be seen in the calibre interface by hovering over the
 | |
| :guilabel:`Click to open` link in the :guilabel:`Book details` panel, it is the number in
 | |
| brackets at the end of the path to the book folder.
 | |
| 
 | |
| You can copy a link to the current book displayed in calibre by right clicking
 | |
| the :guilabel:`Book details` panel and choosing :guilabel:`Copy link to book`.
 | |
| 
 | |
| If a search is active and the book is not matched by the search then the search is cleared.
 | |
| 
 | |
| If a Virtual library is selected, calibre will use it when showing the book. If
 | |
| the book isn't found in that virtual library then the virtual library is cleared.
 | |
| 
 | |
| If you want to switch to a particular Virtual library when showing the book, use::
 | |
| 
 | |
|     calibre://show-book/Library_Name/book_id?virtual_library=Library%20Name
 | |
|     or
 | |
|     calibre://show-book/Library_Name/book_id?encoded_virtual_library=hex_encoded_virtual_library_name
 | |
| 
 | |
| replacing spaces in the Virtual library name by ``%20``. If the book isn't found in that
 | |
| virtual library then the virtual library is ignored.
 | |
| 
 | |
| 
 | |
| Open a specific book in the E-book viewer at a specific position
 | |
| -------------------------------------------------------------------
 | |
| 
 | |
| The URL syntax is::
 | |
| 
 | |
|     calibre://view-book/Library_Name/book_id/book_format?open_at=location
 | |
| 
 | |
| Here, ``book_format`` is the format of the book, for example, ``EPUB`` or
 | |
| ``MOBI`` and the ``location`` is an optional location inside the book. The
 | |
| easiest way to get these links is to open a book in the viewer, then in the
 | |
| viewer controls select :guilabel:`Go to->Location` and there such a link
 | |
| will be given that you can copy/paste elsewhere.
 | |
| 
 | |
| 
 | |
| Searching for books
 | |
| ------------------------------
 | |
| 
 | |
| The URL syntax is::
 | |
| 
 | |
|     calibre://search/Library_Name?q=query
 | |
|     calibre://search/Library_Name?eq=hex_encoded_query
 | |
| 
 | |
| Here query is any valid :ref:`search expression <search_interface>`. If the
 | |
| search expression is complicated, :ref:`encode it as a hex string <hex_encoding>`
 | |
| and use ``eq`` instead. Leaving out the query will cause the current search to
 | |
| be cleared.
 | |
| 
 | |
| By default, if a Virtual library is selected, calibre will clear it before
 | |
| doing the search to ensure all books are found. If you want to preserve the
 | |
| Virtual library, use::
 | |
| 
 | |
|     calibre://search/Library_Name?q=query&virtual_library=_
 | |
| 
 | |
| If you want to switch to a particular Virtual library, use::
 | |
| 
 | |
|     calibre://search/Library_Name?virtual_library=Library%20Name
 | |
|     or
 | |
|     calibre://search/Library_Name?encoded_virtual_library=hex_encoded_virtual_library_name
 | |
| 
 | |
| replacing spaces in the Virtual library name by ``%20``.
 | |
| 
 | |
| If you perform a search in calibre and want to generate a link for it you can
 | |
| do so by right clicking the search bar and choosing :guilabel:`Copy search as
 | |
| URL`.
 | |
| 
 | |
| Open a book details window on a book in some library
 | |
| ------------------------------------------------------
 | |
| 
 | |
| The URL syntax is::
 | |
| 
 | |
|     calibre://book-details/Library_Name/book_id
 | |
| 
 | |
| This opens a book details window on the specified book from the specified library without changing the
 | |
| current library or the selected book.
 | |
| 
 | |
| 
 | |
| Open the notes associated with an author/tag/etc
 | |
| ------------------------------------------------------
 | |
| 
 | |
| The URL syntax is::
 | |
| 
 | |
|     calibre://book-details/Library_Name/Field_Name/id_Item_Id
 | |
| 
 | |
| This opens a window showing the notes of the specified item.
 | |
| The easiest way to create such URLs is to show the notes you want
 | |
| in calibre and click the :guilabel:`Copy URL` button to copy the URL
 | |
| to the clipboard and paste it wherever you need.
 | |
| 
 | |
| Here ``Field_Name`` is the name of the columns such as ``authors`` or ``tags``.
 | |
| For user created columns, replace the leading ``#`` in the field name with
 | |
| an underscore, so ``#mytags`` becomes ``_mytags``.
 | |
| 
 | |
| In addition to specifying items by id using ``Item_Id`` you can also specify
 | |
| them by name using either ``val_Item_Name`` or ``hex_Hex_Encoded_Item_Name``.
 | |
| For example::
 | |
| 
 | |
|     calibre://book-details/Library_Name/authors/val_John%20Doe
 | |
| 
 | |
| 
 | |
| .. _hex_encoding:
 | |
| 
 | |
| Hex encoding of URL parameters
 | |
| ----------------------------------
 | |
| 
 | |
| Hex encoding of URL parameters is done by first encoding the parameter as UTF-8
 | |
| bytes, and then replacing each byte by two hexadecimal characters representing
 | |
| the byte. For example, the string ``abc`` is the bytes ``0x61 0x62 and 0x63`` in
 | |
| UTF-8, so the encoded version is the string: ``616263``.
 |