From 65fc3d1f7cc21b71abf19e7fbbfd4837c669e30a Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Wed, 12 Oct 2022 00:51:05 -0300 Subject: [PATCH] fallback for stream name and tests --- lbry/extras/daemon/json_response_encoder.py | 2 +- lbry/stream/managed_stream.py | 14 +++++++++----- tests/unit/stream/test_managed_stream.py | 1 + 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lbry/extras/daemon/json_response_encoder.py b/lbry/extras/daemon/json_response_encoder.py index 7b68f49e1f..75eacdb9ad 100644 --- a/lbry/extras/daemon/json_response_encoder.py +++ b/lbry/extras/daemon/json_response_encoder.py @@ -328,7 +328,7 @@ def encode_file(self, managed_stream): result.update({ 'streaming_url': managed_stream.stream_url, 'stream_hash': managed_stream.stream_hash, - 'stream_name': managed_stream.descriptor.stream_name, + 'stream_name': managed_stream.stream_name, 'suggested_file_name': managed_stream.suggested_file_name, 'sd_hash': managed_stream.descriptor.sd_hash, 'mime_type': managed_stream.mime_type, diff --git a/lbry/stream/managed_stream.py b/lbry/stream/managed_stream.py index 5bcf52998b..b548af7c8b 100644 --- a/lbry/stream/managed_stream.py +++ b/lbry/stream/managed_stream.py @@ -86,11 +86,15 @@ def file_name(self) -> Optional[str]: @property def suggested_file_name(self) -> Optional[str]: - if self.descriptor and self.descriptor.suggested_file_name and self.descriptor.suggested_file_name.strip(): - return self.descriptor.suggested_file_name - elif self.stream_claim_info and self.stream_claim_info.claim: - return sanitize_file_name(self.stream_claim_info.claim.stream.source.name) - return "lbry_download" # default replacement for invalid name. Ideally we should never get here + first_option = ((self.descriptor and self.descriptor.suggested_file_name) or '').strip() + return sanitize_file_name(first_option or (self.stream_claim_info and self.stream_claim_info.claim and + self.stream_claim_info.claim.stream.source.name)) + + @property + def stream_name(self) -> Optional[str]: + first_option = ((self.descriptor and self.descriptor.stream_name) or '').strip() + return first_option or (self.stream_claim_info and self.stream_claim_info.claim and + self.stream_claim_info.claim.stream.source.name) @property def written_bytes(self) -> int: diff --git a/tests/unit/stream/test_managed_stream.py b/tests/unit/stream/test_managed_stream.py index 598a3d8d49..ca4f69bb3b 100644 --- a/tests/unit/stream/test_managed_stream.py +++ b/tests/unit/stream/test_managed_stream.py @@ -64,6 +64,7 @@ async def test_empty_name_fallback(self): await self._test_transfer_stream(10, skip_setup=True) self.assertTrue(self.stream.completed) self.assertEqual(self.stream.suggested_file_name, "cool.mp4") + self.assertEqual(self.stream.stream_name, "cool.mp4") async def test_status_file_completed(self): await self._test_transfer_stream(10)