From 9385e5a0f331221694909f84ec1b8c4035840263 Mon Sep 17 00:00:00 2001 From: Ai Tran Date: Thu, 19 Nov 2020 22:27:19 -0600 Subject: [PATCH 1/3] Use get method to fetch value for "rights" key in book dictionary --- safaribooks.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/safaribooks.py b/safaribooks.py index 98ca66d..98fe1cf 100755 --- a/safaribooks.py +++ b/safaribooks.py @@ -174,7 +174,7 @@ class Display: ("Title", info["title"]), ("Authors", ", ".join(aut["name"] for aut in info["authors"])), ("Identifier", info["identifier"]), ("ISBN", info["isbn"]), ("Publishers", ", ".join(pub["name"] for pub in info["publishers"])), - ("Rights", info["rights"]), + ("Rights", info.get("rights", "")), ("Description", description[:500] + "..." if len(description) >= 500 else description), ("Release Date", info["issued"]), ("URL", info["web_url"]) @@ -961,7 +961,7 @@ class SafariBooks: escape(self.book_info["description"]), subjects, ", ".join(escape(pub["name"]) for pub in self.book_info["publishers"]), - escape(self.book_info["rights"]) if self.book_info["rights"] else "", + escape(self.book_info.get("rights", "")), self.book_info["issued"], self.cover, "\n".join(manifest), From fef3b21dd42617f62f9a416c9dce6c981e011bb9 Mon Sep 17 00:00:00 2001 From: Ai Tran Date: Thu, 19 Nov 2020 22:53:09 -0600 Subject: [PATCH 2/3] SB237: Replace dictionary lookup with get method with default value. --- safaribooks.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/safaribooks.py b/safaribooks.py index 98fe1cf..8e80e73 100755 --- a/safaribooks.py +++ b/safaribooks.py @@ -171,13 +171,13 @@ class Display: def book_info(self, info): description = self.parse_description(info["description"]).replace("\n", " ") for t in [ - ("Title", info["title"]), ("Authors", ", ".join(aut["name"] for aut in info["authors"])), - ("Identifier", info["identifier"]), ("ISBN", info["isbn"]), - ("Publishers", ", ".join(pub["name"] for pub in info["publishers"])), + ("Title", info.get("title", "")), ("Authors", ", ".join(aut["name"] for aut in info.get("authors", ""))), + ("Identifier", info.get("identifier", "")), ("ISBN", info.get("isbn", "")), + ("Publishers", ", ".join(pub["name"] for pub in info.get("publishers", ""))), ("Rights", info.get("rights", "")), ("Description", description[:500] + "..." if len(description) >= 500 else description), - ("Release Date", info["issued"]), - ("URL", info["web_url"]) + ("Release Date", info.get("issued", "")), + ("URL", info.get("web_url", "")) ]: self.info("{0}{1}{2}: {3}".format(self.SH_YELLOW, t[0], self.SH_DEFAULT, t[1]), True) @@ -955,14 +955,14 @@ class SafariBooks: for sub in self.book_info["subjects"]) return self.CONTENT_OPF.format( - (self.book_info["isbn"] if self.book_info["isbn"] else self.book_id), + (self.book_info.get("isbn", self.book_id)), escape(self.book_title), authors, - escape(self.book_info["description"]), + escape(self.book_info.get("description", "")), subjects, - ", ".join(escape(pub["name"]) for pub in self.book_info["publishers"]), + ", ".join(escape(pub["name"]) for pub in self.book_info.get("publishers", "")), escape(self.book_info.get("rights", "")), - self.book_info["issued"], + self.book_info.get("issued", ""), self.cover, "\n".join(manifest), "\n".join(spine), From 85e8b5446ea1cdaa38c6a0e93d1fbf2140d228f9 Mon Sep 17 00:00:00 2001 From: Ai Tran Date: Fri, 20 Nov 2020 00:04:20 -0600 Subject: [PATCH 3/3] SB237: Use empty string with empty list for authors, publishers and subjects. --- safaribooks.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/safaribooks.py b/safaribooks.py index 8e80e73..cf399d1 100755 --- a/safaribooks.py +++ b/safaribooks.py @@ -171,9 +171,9 @@ class Display: def book_info(self, info): description = self.parse_description(info["description"]).replace("\n", " ") for t in [ - ("Title", info.get("title", "")), ("Authors", ", ".join(aut["name"] for aut in info.get("authors", ""))), + ("Title", info.get("title", "")), ("Authors", ", ".join(aut.get("name", "") for aut in info.get("authors", []))), ("Identifier", info.get("identifier", "")), ("ISBN", info.get("isbn", "")), - ("Publishers", ", ".join(pub["name"] for pub in info.get("publishers", ""))), + ("Publishers", ", ".join(pub.get("name", "") for pub in info.get("publishers", []))), ("Rights", info.get("rights", "")), ("Description", description[:500] + "..." if len(description) >= 500 else description), ("Release Date", info.get("issued", "")), @@ -951,8 +951,8 @@ class SafariBooks: escape(aut["name"]) ) for aut in self.book_info["authors"]) - subjects = "\n".join("{0}".format(escape(sub["name"])) - for sub in self.book_info["subjects"]) + subjects = "\n".join("{0}".format(escape(sub.get("name", ""))) + for sub in self.book_info.get("subjects", [])) return self.CONTENT_OPF.format( (self.book_info.get("isbn", self.book_id)), @@ -960,7 +960,7 @@ class SafariBooks: authors, escape(self.book_info.get("description", "")), subjects, - ", ".join(escape(pub["name"]) for pub in self.book_info.get("publishers", "")), + ", ".join(escape(pub.get("name", "")) for pub in self.book_info.get("publishers", [])), escape(self.book_info.get("rights", "")), self.book_info.get("issued", ""), self.cover,