Use tempfile API to create local APNX file

This commit is contained in:
Daniel Pecos Martinez 2025-07-15 07:54:02 +02:00
parent 6d5c681a86
commit 7d2afdcec2
No known key found for this signature in database
GPG Key ID: 38E9D1E4A1ED64EF

View File

@ -644,13 +644,13 @@ class MTP_DEVICE(BASE):
def upload_apnx(self, parent, filename, storage, mi, filepath):
from calibre.devices.kindle.apnx import APNXBuilder
apnx_builder = APNXBuilder()
import tempfile
name = filename.rpartition('.')[0]
apnx_filename = f'{name[:-2]}.apnx'
apnx_local_path = f'{os.path.join('/tmp', apnx_filename)}'
apnx_local_path = tempfile.NamedTemporaryFile(prefix='calibre-apnx-', suffix='.apnx', delete=False).name
try:
apnx_builder = APNXBuilder()
custom_page_count = 0
cust_col_name = self.get_pref('apnx').get('custom_column_page_count', None)
if cust_col_name:
@ -677,6 +677,8 @@ class MTP_DEVICE(BASE):
apnx_stream = open(apnx_local_path, 'rb')
try:
name = filename.rpartition('.')[0]
apnx_filename = f'{name[:-2]}.apnx'
apnx_path = parent.name, f'{name[:-2]}.sdr', apnx_filename
sdr_parent = self.ensure_parent(storage, apnx_path)
self.put_file(sdr_parent, apnx_filename, apnx_stream, apnx_size)