|
|
#1 |
|
Plugin Developer
![]() Posts: 19
Karma: 10
Join Date: Feb 2026
Device: Samsung Galaxy Tablet
|
[GUI Plugin] Romance.io Fields
Romance.io is a community site for romance novels with detailed reader tags (tropes, themes, settings, etc.), steam ratings, and user star ratings. This plugin adds a toolbar button that fetches data from Romance.io and writes it into custom columns in your library:
Once the fields are stored in custom columns, you can do things like search for books with a steam rating >2, or click a tag in the tag browser to see all books with that trope. Select one or more books and click the toolbar button to download fields from Romance.io. The plugin works on its own, but pairs well with the Romance.io metadata source plugin - if that plugin has already linked a book to Romance.io, this plugin can skip the search step and immediately start to download the fields. For more detailed instructions, see the plugin's GitHub. Installation: In Calibre: Preferences > Plugins > Get new plugins, search for "Romance.io Fields", and click Install. Or download the zip from GitHub and install via Preferences > Plugins > Load plugin from file. Setup: Step 1 - Create custom columns (Preferences > Add your own columns): Code:
Field Lookup Name Column Type
------------------------------------------------------------------------
Romance.io ID #romanceio Column built from other columns
Template: {identifiers:select(romanceio)}
Sort by: Text
Steam Rating #romiosteam Integers (values 1-5)
Star Rating #romiostars Floating point numbers (2 decimals)
Vote Count #romiovotes Integers
Tags #romiotags Comma-separated text, like tags
Step 2 - Map columns in plugin settings Preferences > Plugins > Romance.io Fields > Customize plugin - map each field to the lookup name of the column you created. Usage: Select one or more books and click the Romance.io button in the toolbar. The plugin searches Romance.io by title and author, then downloads fields for each matched book. If a book already has a Romance.io ID stored, it skips the search and goes straight to downloading, which is faster. Configuration options:
Wrong book matched? If your title or author in Calibre differs from Romance.io (different edition name, spelling, etc.), you can still link the book manually: open the book's detail page on Romance.io (URL contains /books/, not the series page), copy the ID from the URL (e.g. 5484ecd47a5936fb0405756c), then in Calibre open Edit metadata > Ids and add romanceio:5484ecd47a5936fb0405756c. Notes:
Source code, documentation, & issue reporting: GitHub If you find this plugin useful, a small donation is appreciated! Donate via PayPal Last edited by plain-cover; Today at 02:57 AM. Reason: v1.2.0 |
|
|
|
|
|
#2 |
|
Plugin Developer
![]() Posts: 19
Karma: 10
Join Date: Feb 2026
Device: Samsung Galaxy Tablet
|
Development Builds
If you want to test the latest unreleased changes before they make it into an official release, development builds are available on GitHub. Development builds may contain bugs. If you encounter an issue with a development build, please report it on GitHub Issues with:
To install a development build: download the zip from GitHub and install via Preferences > Plugins > Load plugin from file. |
|
|
|
| Advert | |
|
|
|
|
#3 |
|
Connoisseur
![]() Posts: 76
Karma: 10
Join Date: May 2014
Location: UK
Device: Samsung 10 Inch Tablet 2016 & Samsung S10+
|
What do i do with this error please?
Download Romance.io Fields calibre_plugins.goodreads_rating.__init__:67: SyntaxWarning: "\d" is an invalid escape sequence. Such sequences will not work in the future. Did you mean "\\d"? A raw string is also an option. Failed to initialize plugin: 'C:\\Users\\xxwil\\AppData\\Roaming\\calibre\\plug ins\\Read MP3 AudioBook metadata.zip' Integration status: True System info: OS=Windows 11 (10.0.26200), Python=3.14.2, Calibre=9.4.0 prefer_html=True: fetching HTML directly for 6673fff11ecec34b38be815e Vendored import path: 'C:\\Users\\xxwil\\AppData\\Roaming\\calibre\\plug ins\\Romance.io Fields.zip' seleniumbase: loaded via direct zipimport chromedriver found at 'C:\\Users\\xxwil\\.calibre_selenium\\drivers\\chr omedriver.exe' Chrome version: 147.0.7727.102, chromedriver version: 147.0.7727.57 CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... CloudFlare challenge detected (matched: ['Just a moment']), waiting... Timeout waiting for Cloudflare Failed to fetch page (Chrome timed out or crashed - check terminal for details) Unexpected error fetching 6673fff11ecec34b38be815e: RuntimeError: Failed to fetch HTML page for 6673fff11ecec34b38be815e (Chrome did not return page content) Traceback (most recent call last): File "calibre_plugins.romanceio_fields.jobs", line 304, in get_romanceio_fields_for_book File "calibre_plugins.romanceio_fields.jobs", line 385, in _fetch_html RuntimeError: Failed to fetch HTML page for 6673fff11ecec34b38be815e (Chrome did not return page content) |
|
|
|
|
|
#4 |
|
Plugin Developer
![]() Posts: 19
Karma: 10
Join Date: Feb 2026
Device: Samsung Galaxy Tablet
|
Yikes, this is a more strict block than the one you shared in the other thread. Cloudflare seems to also be blocking your Chrome now, not just the JSON API. The plugin loads the page in Chrome, but Cloudflare's bot challenge never resolves for your IP address. This isn't something the plugin can work around unfortunately. It seems like your IP address has been flagged by Cloudflare, which happens with VPNs and high-traffic IPs.
You could try:
|
|
|
|
![]() |
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| [GUI Plugin] Streamer - RSVP Speed Reader plugin for Calibre | npapadacis | Plugins | 6 | 04-24-2026 03:00 AM |
| [GUI Plugin] Noosfere_util, a companion plugin to noosfere DB | lrpirlet | Plugins | 2 | 08-18-2022 03:15 PM |
| [GUI Plugin] Save Virtual Libraries To Column (GUI) | chaley | Plugins | 14 | 04-04-2021 05:25 AM |
| invert search for custom fields (GUI) | rogue_librarian | Library Management | 4 | 07-25-2011 11:36 AM |