def write_metadata_cache(self, storage, bl): from calibre.devices.mtp.books import JSONCodec if bl.storage_id != storage.storage_id: # Just a sanity check, should never happen return json_codec = JSONCodec() stream = SpooledTemporaryFile(10*(1024**2)) json_codec.encode_to_file(stream, bl) size = stream.tell() stream.seek(0) self.put_calibre_file(storage, 'metadata', stream, size)