diff --git a/src/calibre/gui2/store/search/models.py b/src/calibre/gui2/store/search/models.py index 1fb0e5327b..1a2327fc45 100644 --- a/src/calibre/gui2/store/search/models.py +++ b/src/calibre/gui2/store/search/models.py @@ -22,6 +22,7 @@ from calibre.utils.icu import sort_key from calibre.utils.search_query_parser import SearchQueryParser def comparable_price(text): + text = re.sub(r'[^0-9.,]', '', text) if len(text) < 3 or text[-3] not in ('.', ','): text += '00' text = re.sub(r'\D', '', text) @@ -293,6 +294,7 @@ class SearchFilter(SearchQueryParser): return self.srs def get_matches(self, location, query): + query = query.strip() location = location.lower().strip() if location == 'authors': location = 'author' diff --git a/src/calibre/gui2/store/search/search.py b/src/calibre/gui2/store/search/search.py index f6fa423e23..9e78f75b4a 100644 --- a/src/calibre/gui2/store/search/search.py +++ b/src/calibre/gui2/store/search/search.py @@ -22,6 +22,7 @@ from calibre.gui2.store.search.adv_search_builder import AdvSearchBuilderDialog from calibre.gui2.store.search.download_thread import SearchThreadPool, \ CacheUpdateThreadPool from calibre.gui2.store.search.search_ui import Ui_Dialog +from calibre.utils.filenames import ascii_filename class SearchDialog(QDialog, Ui_Dialog): @@ -350,6 +351,7 @@ class SearchDialog(QDialog, Ui_Dialog): if d.exec_() == d.Accepted: ext = d.format() fname = result.title + '.' + ext.lower() + fname = ascii_filename(fname) self.gui.download_ebook(result.downloads[ext], filename=fname) def open_store(self, result): diff --git a/src/calibre/gui2/store/stores/smashwords_plugin.py b/src/calibre/gui2/store/stores/smashwords_plugin.py index 73700ed546..7a7e756a05 100644 --- a/src/calibre/gui2/store/stores/smashwords_plugin.py +++ b/src/calibre/gui2/store/stores/smashwords_plugin.py @@ -77,9 +77,12 @@ class SmashwordsStore(BasicStoreConfig, StorePlugin): title = ''.join(data.xpath('//a[@class="bookTitle"]/text()')) subnote = ''.join(data.xpath('//span[@class="subnote"]/text()')) author = ''.join(data.xpath('//span[@class="subnote"]/a/text()')) - price = subnote.partition('$')[2] - price = price.split(u'\xa0')[0] - price = '$' + price + if '$' in subnote: + price = subnote.partition('$')[2] + price = price.split(u'\xa0')[0] + price = '$' + price + else: + price = '$0.00' counter -= 1