From 3243aeaa045be970bb33762479f73f4ef9072d2a Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Wed, 10 Apr 2019 08:33:02 -0400 Subject: [PATCH] py3: check if quote_plus returns bytes or str On python3, there is explicit decoding already, so this would fail. --- src/calibre/ebooks/metadata/search_internet.py | 5 ++++- src/calibre/ebooks/metadata/sources/search_engines.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/metadata/search_internet.py b/src/calibre/ebooks/metadata/search_internet.py index 23e0aa49a9..2b45caba0d 100644 --- a/src/calibre/ebooks/metadata/search_internet.py +++ b/src/calibre/ebooks/metadata/search_internet.py @@ -51,7 +51,10 @@ all_author_searches = AUTHOR_SEARCHES.__iter__ def qquote(val): if not isinstance(val, bytes): val = val.encode('utf-8') - return quote_plus(val).decode('utf-8') + ans = quote_plus(val) + if isinstance(ans, bytes): + ans = ans.decode('utf-8') + return ans def url_for(template, data): diff --git a/src/calibre/ebooks/metadata/sources/search_engines.py b/src/calibre/ebooks/metadata/sources/search_engines.py index 824f8eed9f..6617fa53e3 100644 --- a/src/calibre/ebooks/metadata/sources/search_engines.py +++ b/src/calibre/ebooks/metadata/sources/search_engines.py @@ -74,7 +74,10 @@ def query(br, url, key, dump_raw=None, limit=1, parser=parse_html, timeout=60): def quote_term(x): - return quote_plus(x.encode('utf-8')).decode('utf-8') + ans = quote_plus(x.encode('utf-8')) + if isinstance(ans, bytes): + ans = ans.decode('utf-8') + return ans # DDG + Wayback machine {{{