From b36c8d32c638822cbe58f549a58b1d035504d173 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 5 Dec 2024 09:10:59 +0530 Subject: [PATCH] Better error message when Bing returns no results --- src/calibre/ebooks/metadata/sources/search_engines.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/metadata/sources/search_engines.py b/src/calibre/ebooks/metadata/sources/search_engines.py index 2ef4220336..0b1403abb1 100644 --- a/src/calibre/ebooks/metadata/sources/search_engines.py +++ b/src/calibre/ebooks/metadata/sources/search_engines.py @@ -238,7 +238,10 @@ def resolve_bing_wrapper_page(url, br, log): return m.group(1) -def bing_search(terms, site=None, br=None, log=prints, safe_search=False, dump_raw=None, timeout=60, show_user_agent=False, result_url_is_ok=lambda x: True): +def bing_search( + terms, site=None, br=None, log=prints, safe_search=False, dump_raw=None, timeout=60, + show_user_agent=False, result_url_is_ok=lambda x: True +): # http://vlaurie.com/computers2/Articles/bing_advanced_search.htm terms = [quote_term(bing_term(t)) for t in terms] if site is not None: @@ -261,7 +264,11 @@ def bing_search(terms, site=None, br=None, log=prints, safe_search=False, dump_r root = query(br, url, 'bing', dump_raw, timeout=timeout) ans = [] - for li in root.xpath('//*[@id="b_results"]/li[@class="b_algo"]'): + result_items = root.xpath('//*[@id="b_results"]/li[@class="b_algo"]') + if not result_items: + log('Bing returned no results') + return ans, url + for li in result_items: a = li.xpath('descendant::h2/a[@href]') or li.xpath('descendant::div[@class="b_algoheader"]/a[@href]') a = a[0] title = tostring(a)