From 12ecdaea48801e5266fa71888e386bddb9057fe8 Mon Sep 17 00:00:00 2001 From: John Schember Date: Thu, 2 Jun 2011 20:12:14 -0400 Subject: [PATCH] Fix bug #791788: Store search not able to handle unicode characters. --- src/calibre/gui2/store/gandalf_plugin.py | 2 +- src/calibre/gui2/store/gutenberg_plugin.py | 4 ++-- src/calibre/gui2/store/legimi_plugin.py | 2 +- src/calibre/gui2/store/manybooks_plugin.py | 4 ++-- src/calibre/gui2/store/nexto_plugin.py | 2 +- src/calibre/gui2/store/search/search.py | 2 +- src/calibre/gui2/store/virtualo_plugin.py | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/calibre/gui2/store/gandalf_plugin.py b/src/calibre/gui2/store/gandalf_plugin.py index 4bd8e9e747..52e1d296fa 100644 --- a/src/calibre/gui2/store/gandalf_plugin.py +++ b/src/calibre/gui2/store/gandalf_plugin.py @@ -37,7 +37,7 @@ class GandalfStore(BasicStoreConfig, StorePlugin): def search(self, query, max_results=10, timeout=60): url = 'http://www.gandalf.com.pl/s/' values={ - 'search': query.encode('iso8859_2'), + 'search': query.decode('utf-8').encode('iso8859_2'), 'dzialx':'11' } diff --git a/src/calibre/gui2/store/gutenberg_plugin.py b/src/calibre/gui2/store/gutenberg_plugin.py index d820a44f8d..85d1f3966a 100644 --- a/src/calibre/gui2/store/gutenberg_plugin.py +++ b/src/calibre/gui2/store/gutenberg_plugin.py @@ -6,7 +6,7 @@ __license__ = 'GPL 3' __copyright__ = '2011, John Schember ' __docformat__ = 'restructuredtext en' -import urllib2 +import urllib from contextlib import closing from lxml import html @@ -42,7 +42,7 @@ class GutenbergStore(BasicStoreConfig, StorePlugin): def search(self, query, max_results=10, timeout=60): # Gutenberg's website does not allow searching both author and title. # Using a google search so we can search on both fields at once. - url = 'http://www.google.com/xhtml?q=site:gutenberg.org+' + urllib2.quote(query) + url = 'http://www.google.com/xhtml?q=site:gutenberg.org+' + urllib.quote_plus(query) br = browser() diff --git a/src/calibre/gui2/store/legimi_plugin.py b/src/calibre/gui2/store/legimi_plugin.py index 7212f0f394..2f69da24e5 100644 --- a/src/calibre/gui2/store/legimi_plugin.py +++ b/src/calibre/gui2/store/legimi_plugin.py @@ -40,7 +40,7 @@ class LegimiStore(BasicStoreConfig, StorePlugin): d.exec_() def search(self, query, max_results=10, timeout=60): - url = 'http://www.legimi.com/pl/ebooks/?price=any&lang=pl&search=' + urllib.quote_plus(query.encode('utf-8')) + '&sort=relevance' + url = 'http://www.legimi.com/pl/ebooks/?price=any&lang=pl&search=' + urllib.quote_plus(query) + '&sort=relevance' br = browser() diff --git a/src/calibre/gui2/store/manybooks_plugin.py b/src/calibre/gui2/store/manybooks_plugin.py index e990accc86..efd8d21e68 100644 --- a/src/calibre/gui2/store/manybooks_plugin.py +++ b/src/calibre/gui2/store/manybooks_plugin.py @@ -7,7 +7,7 @@ __copyright__ = '2011, John Schember ' __docformat__ = 'restructuredtext en' import re -import urllib2 +import urllib from contextlib import closing from lxml import html @@ -43,7 +43,7 @@ class ManyBooksStore(BasicStoreConfig, StorePlugin): # It also doesn't do a clear job of references authors and # secondary titles. Google is also faster. # Using a google search so we can search on both fields at once. - url = 'http://www.google.com/xhtml?q=site:manybooks.net+' + urllib2.quote(query) + url = 'http://www.google.com/xhtml?q=site:manybooks.net+' + urllib.quote_plus(query) br = browser() diff --git a/src/calibre/gui2/store/nexto_plugin.py b/src/calibre/gui2/store/nexto_plugin.py index 0009f39b1b..fa152f958c 100644 --- a/src/calibre/gui2/store/nexto_plugin.py +++ b/src/calibre/gui2/store/nexto_plugin.py @@ -44,7 +44,7 @@ class NextoStore(BasicStoreConfig, StorePlugin): d.exec_() def search(self, query, max_results=10, timeout=60): - url = 'http://www.nexto.pl/szukaj.xml?search-clause=' + urllib.quote_plus(query.encode('utf-8')) + '&scid=1015' + url = 'http://www.nexto.pl/szukaj.xml?search-clause=' + urllib.quote_plus(query) + '&scid=1015' br = browser() diff --git a/src/calibre/gui2/store/search/search.py b/src/calibre/gui2/store/search/search.py index e1ad24943d..8289c89b96 100644 --- a/src/calibre/gui2/store/search/search.py +++ b/src/calibre/gui2/store/search/search.py @@ -186,7 +186,7 @@ class SearchDialog(QDialog, Ui_Dialog): # Remove excess whitespace. query = re.sub(r'\s{2,}', ' ', query) query = query.strip() - return query + return query.encode('utf-8') def save_state(self): self.config['geometry'] = bytearray(self.saveGeometry()) diff --git a/src/calibre/gui2/store/virtualo_plugin.py b/src/calibre/gui2/store/virtualo_plugin.py index c6d6fc70d8..74e8104924 100644 --- a/src/calibre/gui2/store/virtualo_plugin.py +++ b/src/calibre/gui2/store/virtualo_plugin.py @@ -35,7 +35,7 @@ class VirtualoStore(BasicStoreConfig, StorePlugin): d.exec_() def search(self, query, max_results=10, timeout=60): - url = 'http://virtualo.pl/c2/?q=' + urllib.quote(query.encode('utf-8')) + url = 'http://virtualo.pl/c2/?q=' + urllib.quote(query) br = browser()