@@ -594,6 +594,33 @@ def get_acquisitions(self, ed_or_solr: Edition | dict) -> list[Acquisition]:
594594 ]
595595
596596
597+ class BetterWorldBooksProvider (AbstractBookProvider ):
598+ short_name = 'betterworldbooks'
599+ long_name = 'Better World Books'
600+ identifier_key = 'betterworldbooks'
601+
602+ def is_own_ocaid (self , ocaid : str ) -> bool :
603+ return False
604+
605+ def get_identifiers (self , ed_or_solr : Edition | dict ) -> list [str ]:
606+ # basically just check if it has an isbn?
607+ return (ed_or_solr .get ('isbn_10' ) or []) + (ed_or_solr .get ('isbn_13' ) or [])
608+
609+ def get_acquisitions (
610+ self ,
611+ ed_or_solr : Edition | dict ,
612+ ) -> list [Acquisition ]:
613+ return [
614+ Acquisition (
615+ access = 'buy' ,
616+ format = 'web' ,
617+ price = None ,
618+ url = f'https://www.betterworldbooks.com/product/detail/{ self .get_best_identifier (ed_or_solr )} ' ,
619+ provider_name = self .short_name ,
620+ )
621+ ]
622+
623+
597624PROVIDER_ORDER : list [AbstractBookProvider ] = [
598625 # These providers act essentially as their own publishers, so link to the first when
599626 # we're on an edition page
@@ -607,6 +634,8 @@ def get_acquisitions(self, ed_or_solr: Edition | dict) -> list[Acquisition]:
607634 WikisourceProvider (),
608635 # Then link to IA
609636 InternetArchiveProvider (),
637+ # Then link to purchase options
638+ BetterWorldBooksProvider (),
610639]
611640
612641
0 commit comments