Register Guidelines E-Books Today's Posts Search

Go Back   MobileRead Forums > E-Book Software > Calibre > Plugins

Notices

Reply
 
Thread Tools Search this Thread
Old 05-30-2026, 12:01 AM   #1
CloudyMcFox
Junior Member
CloudyMcFox began at the beginning.
 
Posts: 2
Karma: 10
Join Date: May 2026
Device: Boox Go7
[GUI Plugin] KOReader MD5

Created this to fix not being able to match with KOReader Sync plugin. See posts in: https://www.mobileread.com/forums/sh...=362706&page=4

KOReader identifies books by a partial MD5 hash of the file. If you want to sync reading progress, highlights, or other metadata between calibre and KOReader and you use the KOReader Sync calibre plugin it may need to match on md5 so your calibre entry has to have the same md5 KOReader uses. This plugin will fill in that column for KOReader sync to match.

Source code:
https://github.com/CloudyMcFox/calibre-koreader-md5

Releases:
https://github.com/CloudyMcFox/calib...r-md5/releases

To install in calibre:

1) Preferences->plugins->Load plugin from file and chose the downloaded zip.
Recommend you chose to "add to context menu for the book in the calibre library" at a minimum.

2) Restart Calibre

You can configure plugin settings by right clicking on any book-> KOReader MD5-> Configure Plugin... and choose the column that matches the KOReader Sync md5 column

To use: right click on a book -> KOReader MD5-> Compute hash for selected books
Attached Files
File Type: zip KoreaderMD5.zip (8.4 KB, 34 views)
CloudyMcFox is offline   Reply With Quote
Old 05-30-2026, 02:08 AM   #2
rinze
Member
rinze began at the beginning.
 
rinze's Avatar
 
Posts: 12
Karma: 10
Join Date: Jun 2024
Device: Kobo Clara BW, Kobo Clara 2E
Thanks for this plugin, I'll try it out shortly.

But now I wonder: how did I manage to get data from KOReader into Calibre before with KOReaderSync? It was working until very recently :-?
rinze is offline   Reply With Quote
Advert
Old Today, 06:31 AM   #3
rinze
Member
rinze began at the beginning.
 
rinze's Avatar
 
Posts: 12
Karma: 10
Join Date: Jun 2024
Device: Kobo Clara BW, Kobo Clara 2E
Took me a while, but I managed to install it. Generating MD5 hashes now...

On the other hand, I couldn't install the one from the github repository (I assume it's a newer version than the one you posted on the forum). I get this error:

Code:
calibre, version 9.2.1
ERROR: Unhandled exception: <b>InvalidPlugin</b>:The plugin in '/home/chema/Downloads/calibre-koreader-md5-1.0.1.zip' is invalid. It does not contain a top-level __init__.py file

calibre 9.2.1  embedded-python: False
Linux-7.0.0-31-generic-x86_64-with-glibc2.43 Linux ('64bit', 'ELF')
('Linux', '7.0.0-31-generic', '#31-Ubuntu SMP PREEMPT_DYNAMIC Sat Aug  1 04:26:38 UTC 2026')
Python 3.14.4
Interface language: None
EXE path: /usr/bin/python3.14
Successfully initialized third party plugins: DeACSM (0, 0, 16) && DeDRM (10, 0, 3) && Bulk img resizer (1, 1, 0) && KOReader MD5 (1, 0, 0) && KOReader Sync (0, 8, 2)
Traceback (most recent call last):
  File "/usr/lib/calibre/calibre/gui2/preferences/plugins.py", line 331, in add_plugin
    plugin = add_plugin(path)
  File "/usr/lib/calibre/calibre/customize/ui.py", line 574, in add_plugin
    plugin = load_plugin(path_to_zip_file)
  File "/usr/lib/calibre/calibre/customize/ui.py", line 88, in load_plugin
    return loader.load(path_to_zip_file)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/usr/lib/calibre/calibre/customize/zipplugin.py", line 311, in load
    plugin_name = self._locate_code(zf, path_to_zip_file)
  File "/usr/lib/calibre/calibre/customize/zipplugin.py", line 401, in _locate_code
    raise InvalidPlugin(f'The plugin in {path_to_zip_file!r} is invalid. It does not '
            'contain a top-level __init__.py file')
calibre.customize.InvalidPlugin: The plugin in '/home/chema/Downloads/calibre-koreader-md5-1.0.1.zip' is invalid. It does not contain a top-level __init__.py file
rinze is offline   Reply With Quote
Old Today, 09:29 AM   #4
rantanplan
Weirdo
rantanplan ought to be getting tired of karma fortunes by now.rantanplan ought to be getting tired of karma fortunes by now.rantanplan ought to be getting tired of karma fortunes by now.rantanplan ought to be getting tired of karma fortunes by now.rantanplan ought to be getting tired of karma fortunes by now.rantanplan ought to be getting tired of karma fortunes by now.rantanplan ought to be getting tired of karma fortunes by now.rantanplan ought to be getting tired of karma fortunes by now.rantanplan ought to be getting tired of karma fortunes by now.rantanplan ought to be getting tired of karma fortunes by now.rantanplan ought to be getting tired of karma fortunes by now.
 
Posts: 1,325
Karma: 13516840
Join Date: Nov 2019
Location: Wuppertal, Germany
Device: Kobo Libra 2, Tolino Vision Color, reMarkable PaperPro
Quote:
Originally Posted by rinze View Post
calibre.customize.InvalidPlugin: The plugin in '/home/chema/Downloads/calibre-koreader-md5-1.0.1.zip' is invalid. It does not contain a top-level __init__.py file
[/CODE]
Does the zip-file contain another zip-file? Or is the __init__.py file nested too deep?
rantanplan is offline   Reply With Quote
Old Today, 09:35 AM   #5
rinze
Member
rinze began at the beginning.
 
rinze's Avatar
 
Posts: 12
Karma: 10
Join Date: Jun 2024
Device: Kobo Clara BW, Kobo Clara 2E
I was going to say that no, it contains the code as expected, but I've seen what's the issue.

This is for the .zip file posted here:


Code:
$ unzip -v KoreaderMD5.zip 
Archive:  KoreaderMD5.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
    1551  Defl:N      601  61% 2026-05-30 03:32 1af0d7dc  ui.py
    1016  Defl:N      465  54% 2026-05-30 03:49 085a8143  __init__.py
       0  Stored        0   0% 2026-05-30 02:12 00000000  images/
    3147  Defl:N     3152  -0% 2026-05-30 03:33 b6294062  images/icon.png
       0  Defl:N        2   0% 2026-05-30 02:11 00000000  plugin-import-name-koreader_md5.txt
    5879  Defl:N     1980  66% 2026-05-30 02:34 24a25a07  main.py
    3938  Defl:N     1202  70% 2026-05-30 02:45 33f50c31  config.py
--------          -------  ---                            -------
   15531             7402  52%                            7 files
This is for the zip file in the github repository:

Code:
$ unzip -v calibre-koreader-md5-1.0.1.zip 
Archive:  calibre-koreader-md5-1.0.1.zip
186ea46c8a5f3921da66e15e61ccded74c51b273
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 2026-05-30 05:46 00000000  calibre-koreader-md5-1.0.1/
      41  Defl:N       38   7% 2026-05-30 05:46 f7b19686  calibre-koreader-md5-1.0.1/.gitignore
   35149  Defl:N    12112  66% 2026-05-30 05:46 97673d00  calibre-koreader-md5-1.0.1/LICENSE
    2743  Defl:N     1325  52% 2026-05-30 05:46 bf19bef0  calibre-koreader-md5-1.0.1/README.md
     985  Defl:N      463  53% 2026-05-30 05:46 c38349bb  calibre-koreader-md5-1.0.1/__init__.py
     993  Defl:N      492  51% 2026-05-30 05:46 eaaaa34a  calibre-koreader-md5-1.0.1/build.ps1
    3838  Defl:N     1192  69% 2026-05-30 05:46 6c9c00a3  calibre-koreader-md5-1.0.1/config.py
       0  Stored        0   0% 2026-05-30 05:46 00000000  calibre-koreader-md5-1.0.1/images/
    3147  Stored     3147   0% 2026-05-30 05:46 b6294062  calibre-koreader-md5-1.0.1/images/icon.png
    5685  Defl:N     1959  66% 2026-05-30 05:46 6db7f885  calibre-koreader-md5-1.0.1/main.py
       0  Stored        0   0% 2026-05-30 05:46 00000000  calibre-koreader-md5-1.0.1/plugin-import-name-koreader_md5.txt
    1507  Defl:N      591  61% 2026-05-30 05:46 fd8ac68e  calibre-koreader-md5-1.0.1/ui.py
--------          -------  ---                            -------
   54088            21319  61%                            12 files
So the issue is that in the github file everything is contained within a directory and that's probably what's tripping Calibre. I'll open an issue, thanks for asking me to check
rinze is offline   Reply With Quote
Advert
Reply


Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
[GUI Plugin] KOReader Sync kyx84 Plugins 56 Today 10:06 AM
[GUI Plugin] Streamer - RSVP Speed Reader plugin for Calibre npapadacis Plugins 6 04-24-2026 03:00 AM
[GUI Plugin] Koreader reading time estimate Criveratech Plugins 0 12-07-2025 06:47 AM
[GUI Plugin] Save Virtual Libraries To Column (GUI) chaley Plugins 14 04-04-2021 05:25 AM


All times are GMT -4. The time now is 12:43 PM.


MobileRead.com is a privately owned, operated and funded community.