diff --git a/kindle/amz.py b/kindle/amz.py index 0225ff3..25f1d20 100644 --- a/kindle/amz.py +++ b/kindle/amz.py @@ -7,6 +7,7 @@ from urllib.error import HTTPError from amazon.api import AmazonAPI import config +from node import Node cache_dir = 'cache/' @@ -56,6 +57,21 @@ def lookup(book): book.small_image_url = product.small_image_url if product.languages: book.languages = list(product.languages) + + for browse_node in product.browse_nodes: + node = Node() + book.nodes.append(node) + while True: + node.id = browse_node.id + node.name = str(browse_node.name) + if not browse_node.is_category_root: + node.node = Node() + node = node.node + browse_node = browse_node.ancestor + else: + node.is_root = True + break + print('cached: ' + book.item_id + ' -> ' + book.title) break except HTTPError as e: diff --git a/kindle/book.py b/kindle/book.py index c62ad6e..7efa963 100644 --- a/kindle/book.py +++ b/kindle/book.py @@ -28,6 +28,7 @@ class Book: publication_date = None small_image_url = None languages = None + nodes = [] def json(self): return json.dumps(self, default=lambda o: o.__dict__, indent=2, ensure_ascii=False, sort_keys=True) diff --git a/kindle/node.py b/kindle/node.py new file mode 100644 index 0000000..756a0c1 --- /dev/null +++ b/kindle/node.py @@ -0,0 +1,17 @@ + +class Node: + node = None # ancestor + id = None + is_root = False + name = None + + def dump(self): + return clean_dict(self.__dict__) + + +def clean_dict(d): + if not isinstance(d, dict): + return d + return dict((k, clean_dict(v)) for k, v in d.items() if v is not None) + +