diff --git a/src/calibre/ebooks/metadata/book/render.py b/src/calibre/ebooks/metadata/book/render.py index 6b4519e2aa..9b648356aa 100644 --- a/src/calibre/ebooks/metadata/book/render.py +++ b/src/calibre/ebooks/metadata/book/render.py @@ -6,7 +6,7 @@ from __future__ import (unicode_literals, division, absolute_import, __license__ = 'GPL v3' __copyright__ = '2014, Kovid Goyal ' -import os, cPickle +import os from functools import partial from binascii import hexlify @@ -20,6 +20,7 @@ from calibre.utils.icu import sort_key from calibre.utils.formatter import EvalFormatter from calibre.utils.date import is_date_undefined from calibre.utils.localization import calibre_langcode_to_name +from calibre.utils.serialize import json_dumps from polyglot.builtins import unicode_type default_sort = ('title', 'title_sort', 'authors', 'author_sort', 'series', 'rating', 'pubdate', 'tags', 'publisher', 'identifiers') @@ -79,7 +80,7 @@ def author_search_href(which, title=None, author=None): def item_data(field_name, value, book_id): - return hexlify(cPickle.dumps((field_name, value, book_id), -1)) + return hexlify(json_dumps((field_name, value, book_id))) def mi_to_html(mi, field_list=None, default_author_link=None, use_roman_numbers=True, rating_font='Liberation Serif', rtl=False): diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index af32669c1a..4b97b1d772 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -2,7 +2,6 @@ # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # License: GPLv3 Copyright: 2010, Kovid Goyal -import cPickle import os import re from binascii import unhexlify @@ -34,6 +33,7 @@ from calibre.gui2.dnd import ( from calibre.utils.config import tweaks from calibre.utils.img import blend_image, image_from_x from calibre.utils.localization import is_rtl +from calibre.utils.serialize import json_loads from polyglot.builtins import unicode_type _css = None @@ -286,7 +286,7 @@ def details_context_menu_event(view, ev, book_info): # {{{ lambda : book_info.search_requested('authors:"={}"'.format(author.replace('"', r'\"')))) if data: try: - field, value, book_id = cPickle.loads(unhexlify(data)) + field, value, book_id = json_loads(unhexlify(data)) except Exception: field = value = book_id = None if field: