@@ -104,7 +104,8 @@ def __init__(
104104 self ._edition = edition
105105 self ._solr_work = solr_work
106106 self ._ia_metadata = ia_metadata
107- self ._provider = bp .get_book_provider (edition )
107+ self ._providers = list (bp .get_book_providers (edition ))
108+ self ._best_provider = self ._providers [0 ] if self ._providers else None
108109
109110 @property
110111 def key (self ):
@@ -273,12 +274,16 @@ def identifiers(self) -> dict:
273274
274275 @cached_property
275276 def ebook_access (self ) -> bp .EbookAccess :
276- if not self ._provider :
277+ if not self ._best_provider :
277278 return bp .EbookAccess .NO_EBOOK
278- elif isinstance (self ._provider , bp .InternetArchiveProvider ):
279- return self ._provider .get_access (self ._edition , self ._ia_metadata )
279+ elif isinstance (self ._best_provider , bp .InternetArchiveProvider ):
280+ return self ._best_provider .get_access (self ._edition , self ._ia_metadata )
280281 else :
281- return self ._provider .get_access (self ._edition )
282+ return self ._best_provider .get_access (self ._edition )
283+
284+ @property
285+ def ebook_provider (self ) -> list [str ]:
286+ return [provider .provider_name for provider in (self ._providers or [])]
282287
283288 @property
284289 def has_fulltext (self ) -> bool :
@@ -335,6 +340,7 @@ def build(self) -> SolrDocument:
335340 'ia_box_id' : self .ia_box_id ,
336341 # Ebook access
337342 'ebook_access' : self .ebook_access .to_solr_str (),
343+ 'ebook_provider' : self .ebook_provider ,
338344 'has_fulltext' : self .has_fulltext ,
339345 'public_scan_b' : self .public_scan_b ,
340346 },
0 commit comments