Browse Source

Safer retrieval of metadata

Stan Janssen 5 years ago
parent
commit
acb55d4310
3 changed files with 17 additions and 7 deletions
  1. 1 1
      isbnlib_bol/__init__.py
  2. 15 5
      isbnlib_bol/_bol.py
  3. 1 1
      setup.py

+ 1 - 1
isbnlib_bol/__init__.py

@@ -1,6 +1,6 @@
 from ._bol import query
 
-__version__ = '1.0.1'
+__version__ = '1.0.2'
 
 __plugin_main_language__ = 'en'
 __plugin_service_name__ = 'bol'

+ 15 - 5
isbnlib_bol/_bol.py

@@ -18,19 +18,30 @@ class Book:
 
     @property
     def authors(self):
-        return self.specs["Auteur"].split("\n")
+        authors = self.specs.get("Auteur", None)
+        if authors:
+            return self.specs["Auteur"].split("\n")
+        return None
 
     @property
     def publisher(self):
-        return self.specs["Uitgever"]
+        return self.specs.get("Uitgever", None)
 
     @property
     def year(self):
-        return int(self.specs["Verschijningsdatum"].split(" ")[-1])
+        date = self.specs.get("Verschijningsdatum", None)
+        if date:
+            try:
+                year = re.match(r'.*(\d{4}).*', date).group(1)
+            except:
+                return None
+            else:
+                return int(year)
+        return None
 
     @property
     def language(self):
-        lang = self.specs["Taal"]
+        lang = self.specs.get("Taal", None)
         if lang in self.LANGUAGE_MAP:
             return self.LANGUAGE_MAP[lang]
         else:
@@ -45,7 +56,6 @@ class Book:
                 "Language": self.language,
                 "ISBN-13": self.isbn}
 
-
     def parse_specs(self):
         specs_lists = self.html.find_all("dl", class_="specs__list")
         for specs_list in specs_lists:

+ 1 - 1
setup.py

@@ -1,7 +1,7 @@
 from setuptools import setup
 
 setup(name="isbnlib-bol",
-      version="1.0.1",
+      version="1.0.2",
       description="ISBN lookup for Bol.com",
       packages=['isbnlib_bol'],
       author="Stan Janssen",