| 
			
			 | 
		#1 | 
| 
			
			
			
			 Member 
			
			![]() Posts: 19 
				Karma: 20 
				Join Date: Aug 2025 
				
				
				
				Device: PocketBook Verse Pro 
				
				
				 | 
	
	
	
		
		
			
			 
				
				[Metadata Source Plugin] StoryGraph
			 
			
			
			Scrapes metadata and covers from https://thestorygraph.com/. Metadata include: 
		
	
		
		
			
 It also adds a StoryGraph GUID identifier and uses it to conduct searches. Of note to me are the tags - this website is a great resource for crowdsourced mood and pace information (in fact, the only one I've found). There is other potential information that could be fetched, such as page counts and content warnings, but I've limited this implementation to only the major information the StoryGraph itself puts in the book info header. If there is demand for the other info, though, let me know and I'll see about scraping and adding it. Note that edition publication information from the StoryGraph is not the most reliable; to that end, I've provided a configuration option to use the first release year of the book, instead. This is only the year, though. Last edited by ARR8; 10-27-2025 at 08:34 PM.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#2 | |
| 
			
			
			
			 Weirdo 
			
			![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 934 
				Karma: 11941602 
				Join Date: Nov 2019 
				Location: Wuppertal, Germany 
				
				
				Device: Kobo Sage, Kobo Libra 2, Kindle Paperwhite 2021, Kindle Scribe 2022 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			This plugin probably violates term 2 of their ToS: 
		
	
		
		
		
		
		
		
		
		
		
		
	
	https://app.thestorygraph.com/terms-of-service Quote: 
	
  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#3 | 
| 
			
			
			
			 Member 
			
			![]() Posts: 19 
				Karma: 20 
				Join Date: Aug 2025 
				
				
				
				Device: PocketBook Verse Pro 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			That's a fair point. By my read, use in one's personal Calibre library wouldn't fall under public display, but I'll ask them. I'll update with their response once I receive it.
		 
		
	
		
		
		
		
		
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#4 | 
| 
			
			
			
			 Member 
			
			![]() Posts: 19 
				Karma: 20 
				Join Date: Aug 2025 
				
				
				
				Device: PocketBook Verse Pro 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			They state that they provide no official comment besides the terms themselves, but hope to formulate a clearer policy at some point in the future.
		 
		
	
		
		
		
		
		
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#5 | 
| 
			
			
			
			 Connoisseur 
			
			![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 59 
				Karma: 1231814 
				Join Date: Nov 2017 
				
				
				
				Device: Kobo Libra Colour, Kindle Voyage(s) 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			I'm interested in this plugin but it's failing to find any books. I've pasted the relevant bits of the error log below: 
		
	
		
		
		
		
		
		
		
		
		
		
	
	Plugin StoryGraph failed Traceback (most recent call last): File "lxml/cssselect.py", line 12, in <module> ModuleNotFoundError: No module named 'cssselect' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "calibre/ebooks/metadata/sources/identify.py", line 47, in run File "calibre_plugins.dummy1.__init__", line 342, in identify books = root.cssselect(".book-pane") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "src/lxml/etree.pyx", line 1613, in lxml.etree._Element.cssselect File "bypy-importer.py", line 279, in exec_module File "lxml/cssselect.py", line 14, in <module> ImportError: cssselect does not seem to be installed. See https://pypi.org/project/cssselect/  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#6 | 
| 
			
			
			
			 Member 
			
			![]() Posts: 19 
				Karma: 20 
				Join Date: Aug 2025 
				
				
				
				Device: PocketBook Verse Pro 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			Hmm, that module is definitely included in my version of Calibre. What version are you using? And on what OS?
		 
		
	
		
		
		
		
		
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#7 | 
| 
			
			
			
			 Resident Curmudgeon 
			
			![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 80,784 
				Karma: 150249619 
				Join Date: Nov 2006 
				Location: Roslindale, Massachusetts 
				
				
				Device: Kobo Libra 2, Kobo Aura H2O, PRS-650, PRS-T1, nook STR, PW3 
				
				
				 | 
	
	|
| 
		
 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#8 | 
| 
			
			
			
			 Wizard 
			
			![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 1,293 
				Karma: 1428313 
				Join Date: Dec 2016 
				Location: Goiânia - Brazil 
				
				
				Device: iPad, Kindle Paperwhite, Kindle Oasis 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			You are probably on linux, right? Maybe using a distro version of calibre? Those versions can differ from official calibre and have other libs added. I have the latest calibre (8.9) installed on my Windows 11 machine and the module is not included either.
		 
		
	
		
		
		
		
		
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#9 | 
| 
			
			
			
			 creator of calibre 
			
			![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 45,609 
				Karma: 28549044 
				Join Date: Oct 2006 
				Location: Mumbai, India 
				
				
				Device: Various 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			If you want to use CSS based selectors with lxml trees in calibre use css_selectors, like this 
		
	
		
		
		
		
		
		
		
		
		
		
	
	Code: 
	from css_selectors import Select
select = Select(root)
for a in select('your css selector'):
   ...
 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#10 | 
| 
			
			
			
			 Member 
			
			![]() Posts: 19 
				Karma: 20 
				Join Date: Aug 2025 
				
				
				
				Device: PocketBook Verse Pro 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			Thanks both. Uploading an updated version to use the internal library.
		 
		
	
		
		
		
		
		
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#11 | 
| 
			
			
			
			 Member 
			
			![]() Posts: 19 
				Karma: 20 
				Join Date: Aug 2025 
				
				
				
				Device: PocketBook Verse Pro 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			Frustratingly, I apparently cannot edit my top post because of restrictions on new accounts. I've sent a message to whoever runs this website but I guess I have to wait in the meantime. It's also silently dropping my new posts. 
		
	
		
		
		
		
		
		
		
		
		
		
	
	I don't suppose there are any other distribution channels for plugins using the built-in installer?  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#12 | 
| 
			
			
			
			 Member 
			
			![]() Posts: 19 
				Karma: 20 
				Join Date: Aug 2025 
				
				
				
				Device: PocketBook Verse Pro 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			Apparently my account is too new to edit posts.
		 
		
	
		
		
		
		
		
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#13 | 
| 
			
			
			
			 Member 
			
			![]() Posts: 19 
				Karma: 20 
				Join Date: Aug 2025 
				
				
				
				Device: PocketBook Verse Pro 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			And what I thought was messages being silently dropped is actually them being held back and posted in batches. Sorry to all subscribed.
		 
		
	
		
		
		
		
		
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#14 | |
| 
			
			
			
			 null operator (he/him) 
			
			![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 22,018 
				Karma: 30277294 
				Join Date: Mar 2012 
				Location: Sydney Australia 
				
				
				Device: none 
				
				
				 | 
	
	
	
		
		
		
		
		 Quote: 
	
 Moderator Notice 
		To edit your own posts you need to get your post count up to 10 or more, post some replies in some of the threads in the Lounge. Your string of duplicate posts went into moderation, I deleted them except the one I've quoted. And this is the only place the calibre plugin updater knows about, and it only knows about plugins that are listed in the Index of plugins. BR  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#15 | 
| 
			
			
			
			 Member 
			
			![]() Posts: 19 
				Karma: 20 
				Join Date: Aug 2025 
				
				
				
				Device: PocketBook Verse Pro 
				
				
				 | 
	
	
	
		
		
		
		
		 
			
			Understood, thanks for the explanation.
		 
		
	
		
		
		
		
		
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
![]()  | 
            
        
            
| Tags | 
| calibre, metadata, mood, pace, storygraph | 
            
  | 
    
			 
			Similar Threads
		 | 
	||||
| Thread | Thread Starter | Forum | Replies | Last Post | 
| [Metadata Source Plugin] Show multiple results for single source? | memory_dump | Plugins | 7 | 10-09-2025 02:50 AM | 
| [Metadata Source Plugin] Kobo Metadata | NotSimone | Plugins | 181 | 08-16-2025 12:44 AM | 
| How do I know which Metadata Source Plugin was called from fetch-ebook-metadata? | eryMpexI | Library Management | 6 | 04-22-2023 09:58 AM | 
| Read a book's metadata in a Metadata source plugin? | J-H | Development | 2 | 03-30-2021 10:08 AM | 
| [Metadata Source Plugin] Empty Plugin? (Fake Identifier) | mneimeyer | Plugins | 3 | 11-11-2019 09:07 PM |