From e339d3857f4b0d6ea1f910268228c371f8903dce Mon Sep 17 00:00:00 2001 From: Jimmy Kiselak Date: Fri, 18 Sep 2015 00:49:06 -0400 Subject: [PATCH] make saving plain stream descriptor file work when no file name is given --- lbrynet/lbryfilemanager/LBRYFileDownloader.py | 4 +--- lbrynet/lbrynet_console/ControlHandlers.py | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lbrynet/lbryfilemanager/LBRYFileDownloader.py b/lbrynet/lbryfilemanager/LBRYFileDownloader.py index ef52360c2..bc00993b5 100644 --- a/lbrynet/lbryfilemanager/LBRYFileDownloader.py +++ b/lbrynet/lbryfilemanager/LBRYFileDownloader.py @@ -22,10 +22,8 @@ class ManagedLBRYFileDownloader(LBRYFileSaver): file_name=None): LBRYFileSaver.__init__(self, stream_hash, peer_finder, rate_limiter, blob_manager, stream_info_manager, payment_rate_manager, wallet, download_directory, - upload_allowed) + upload_allowed, file_name) self.lbry_file_manager = lbry_file_manager - self.file_name = file_name - self.file_handle = None self.saving_status = False def restore(self): diff --git a/lbrynet/lbrynet_console/ControlHandlers.py b/lbrynet/lbrynet_console/ControlHandlers.py index 683942113..86302435f 100644 --- a/lbrynet/lbrynet_console/ControlHandlers.py +++ b/lbrynet/lbrynet_console/ControlHandlers.py @@ -9,6 +9,7 @@ from lbrynet.lbrynet_console.interfaces import IControlHandler, IControlHandlerF from lbrynet.core.StreamDescriptor import download_sd_blob from lbrynet.core.Error import UnknownNameError, InvalidBlobHashError, InsufficientFundsError from twisted.internet import defer +import os log = logging.getLogger(__name__) @@ -826,11 +827,22 @@ class CreatePlainStreamDescriptor(ControlHandler): return True, self._create_sd() def _create_sd(self): - if not self.sd_file_name: - self.sd_file_name = None - descriptor_writer = PlainStreamDescriptorWriter(self.sd_file_name) + if self.sd_file_name: + file_name = self.sd_file_name + else: + file_name = self.lbry_file.file_name + if not file_name: + file_name = "_" + file_name += ".cryptsd" + if os.path.exists(file_name): + ext_num = 1 + while os.path.exists(file_name + "_" + str(ext_num)): + ext_num += 1 + file_name = file_name + "_" + str(ext_num) + descriptor_writer = PlainStreamDescriptorWriter(file_name) d = get_sd_info(self.lbry_file_manager.stream_info_manager, self.lbry_file.stream_hash, True) d.addCallback(descriptor_writer.create_descriptor) + d.addCallback(lambda sd_file_name: "Wrote stream metadata to " + sd_file_name) return d