3131from calibre .utils .lock import ExclusiveFile
3232from calibre .utils .random_ua import accept_header_for_ua
3333
34- current_version = (1 , 2 , 14 )
34+ current_version = (1 , 2 , 15 )
3535minimum_calibre_version = (2 , 80 , 0 )
3636webcache = {}
3737webcache_lock = Lock ()
@@ -116,7 +116,7 @@ def quote_term(x):
116116 return ans
117117
118118
119- # DDG + Wayback machine {{{
119+ # DDG + Wayback machine DDG does a captcha after 2-3 requests {{{
120120
121121def ddg_url_processor (url ):
122122 return url
@@ -134,7 +134,7 @@ def ddg_term(t):
134134def ddg_href (url ):
135135 if url .startswith ('/' ):
136136 q = url .partition ('?' )[2 ]
137- url = parse_qs (q .encode ('utf-8' ))['uddg' ][0 ].decode ('utf-8' )
137+ url = parse_qs (q .encode ('utf-8' ))[b 'uddg' ][0 ].decode ('utf-8' )
138138 return url
139139
140140
@@ -207,7 +207,7 @@ def ddg_develop():
207207# }}}
208208
209209
210- # Bing {{{
210+ # Bing uses a CAPTCHA {{{
211211
212212def bing_term (t ):
213213 t = t .replace ('"' , '' )
@@ -278,7 +278,7 @@ def bing_develop(terms='heroes abercrombie'):
278278# }}}
279279
280280
281- # Google {{{
281+ # Google only serves JS enabled search pages as of Sep 11, 2025 {{{
282282
283283def google_term (t ):
284284 t = t .replace ('"' , '' )
@@ -433,7 +433,7 @@ def google_develop(search_terms='1423146786', raw_from=''):
433433# }}}
434434
435435
436- # Yandex {{{
436+ # Yandex uses a CAPTCHA {{{
437437def yandex_term (t ):
438438 t = t .replace ('"' , '' )
439439 if t in {'OR' , 'AND' , 'NOT' }:
0 commit comments