From 1e0af94ba2e833c12d70040be095e241eee87de1 Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 1 Aug 2016 22:31:49 -0400 Subject: [PATCH 1/6] add download_descriptor --- lbrynet/lbrynet_daemon/LBRYDaemon.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lbrynet/lbrynet_daemon/LBRYDaemon.py b/lbrynet/lbrynet_daemon/LBRYDaemon.py index ea9124d57..0333b28a7 100644 --- a/lbrynet/lbrynet_daemon/LBRYDaemon.py +++ b/lbrynet/lbrynet_daemon/LBRYDaemon.py @@ -49,7 +49,7 @@ from lbrynet.conf import MIN_BLOB_DATA_PAYMENT_RATE, DEFAULT_MAX_SEARCH_RESULTS, DEFAULT_WALLET, DEFAULT_SEARCH_TIMEOUT, DEFAULT_CACHE_TIME, DEFAULT_UI_BRANCH, LOG_POST_URL, LOG_FILE_NAME, SOURCE_TYPES from lbrynet.conf import SEARCH_SERVERS from lbrynet.conf import DEFAULT_TIMEOUT, WALLET_TYPES -from lbrynet.core.StreamDescriptor import StreamDescriptorIdentifier, download_sd_blob +from lbrynet.core.StreamDescriptor import StreamDescriptorIdentifier, download_sd_blob, BlobStreamDescriptorReader from lbrynet.core.Session import LBRYSession from lbrynet.core.PTCWallet import PTCWallet from lbrynet.core.LBRYWallet import LBRYcrdWallet, LBRYumWallet @@ -2236,6 +2236,24 @@ class LBRYDaemon(jsonrpc.JSONRPC): d.addCallback(lambda r: self._render_response(r, OK_CODE)) return d + def jsonrpc_download_descriptor(self, p): + """ + Download and return a sd blob + + Args: + sd_hash + Returns + sd blob, dict + """ + + sd_hash = p['sd_hash'] + + d = download_sd_blob(self.session, sd_hash, PaymentRateManager(self.session.base_payment_rate_manager)) + d.addCallback(BlobStreamDescriptorReader) + d.addCallback(lambda blob: blob.get_info()) + d.addCallback(lambda r: self._render_response(r, OK_CODE)) + return d + def jsonrpc_get_nametrie(self): """ Get the nametrie From 22835791098ba8307d7ed6809ef8f1d24f836162 Mon Sep 17 00:00:00 2001 From: Jack Date: Mon, 1 Aug 2016 23:15:32 -0400 Subject: [PATCH 2/6] reorganize download_descriptor --- lbrynet/lbrynet_daemon/LBRYDaemon.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lbrynet/lbrynet_daemon/LBRYDaemon.py b/lbrynet/lbrynet_daemon/LBRYDaemon.py index 0333b28a7..611228c79 100644 --- a/lbrynet/lbrynet_daemon/LBRYDaemon.py +++ b/lbrynet/lbrynet_daemon/LBRYDaemon.py @@ -1072,6 +1072,12 @@ class LBRYDaemon(jsonrpc.JSONRPC): self.sd_identifier.add_stream_downloader_factory(LBRYFileStreamType, downloader_factory) return defer.succeed(True) + def _download_sd_blob(self, sd_hash): + d = download_sd_blob(self.session, sd_hash, PaymentRateManager(self.session.base_payment_rate_manager)) + d.addCallback(BlobStreamDescriptorReader) + d.addCallback(lambda blob: blob.get_info()) + return d + def _download_name(self, name, timeout=DEFAULT_TIMEOUT, download_directory=None, file_name=None, stream_info=None, wait_for_write=True): """ @@ -2247,10 +2253,7 @@ class LBRYDaemon(jsonrpc.JSONRPC): """ sd_hash = p['sd_hash'] - - d = download_sd_blob(self.session, sd_hash, PaymentRateManager(self.session.base_payment_rate_manager)) - d.addCallback(BlobStreamDescriptorReader) - d.addCallback(lambda blob: blob.get_info()) + d = self._download_sd_blob(sd_hash) d.addCallback(lambda r: self._render_response(r, OK_CODE)) return d From 3f8f9d9d731ef4cbb9aee962d3d99c4cee6ccf49 Mon Sep 17 00:00:00 2001 From: Jack Date: Tue, 2 Aug 2016 02:54:04 -0400 Subject: [PATCH 3/6] add timeout to download_sd_blob --- lbrynet/lbrynet_daemon/LBRYDaemon.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lbrynet/lbrynet_daemon/LBRYDaemon.py b/lbrynet/lbrynet_daemon/LBRYDaemon.py index 611228c79..d7aed3412 100644 --- a/lbrynet/lbrynet_daemon/LBRYDaemon.py +++ b/lbrynet/lbrynet_daemon/LBRYDaemon.py @@ -1073,10 +1073,21 @@ class LBRYDaemon(jsonrpc.JSONRPC): return defer.succeed(True) def _download_sd_blob(self, sd_hash): + def cb(result): + r.callback(result) + + def eb(): + if not r.called: + r.errback(Exception("sd timeout")) + + r = defer.Deferred(None) + reactor.callLater(3, eb) d = download_sd_blob(self.session, sd_hash, PaymentRateManager(self.session.base_payment_rate_manager)) d.addCallback(BlobStreamDescriptorReader) d.addCallback(lambda blob: blob.get_info()) - return d + d.addCallback(cb) + + return r def _download_name(self, name, timeout=DEFAULT_TIMEOUT, download_directory=None, file_name=None, stream_info=None, wait_for_write=True): @@ -2251,10 +2262,10 @@ class LBRYDaemon(jsonrpc.JSONRPC): Returns sd blob, dict """ - sd_hash = p['sd_hash'] + d = self._download_sd_blob(sd_hash) - d.addCallback(lambda r: self._render_response(r, OK_CODE)) + d.addCallbacks(lambda r: self._render_response(r, OK_CODE), lambda _: self._render_response(False, OK_CODE)) return d def jsonrpc_get_nametrie(self): From 69139b1987b803c4ce9ed1230ec865079c96327b Mon Sep 17 00:00:00 2001 From: Jack Date: Tue, 2 Aug 2016 16:03:47 -0400 Subject: [PATCH 4/6] already called error --- lbrynet/lbrynet_daemon/LBRYDaemon.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lbrynet/lbrynet_daemon/LBRYDaemon.py b/lbrynet/lbrynet_daemon/LBRYDaemon.py index d7aed3412..ef2ac4891 100644 --- a/lbrynet/lbrynet_daemon/LBRYDaemon.py +++ b/lbrynet/lbrynet_daemon/LBRYDaemon.py @@ -1074,7 +1074,8 @@ class LBRYDaemon(jsonrpc.JSONRPC): def _download_sd_blob(self, sd_hash): def cb(result): - r.callback(result) + if not r.called: + r.callback(result) def eb(): if not r.called: From bcfabba03885e959f38110fc9264ccb2d7c1e95d Mon Sep 17 00:00:00 2001 From: Jack Date: Tue, 2 Aug 2016 16:45:06 -0400 Subject: [PATCH 5/6] fast search use cost from lighthouse --- lbrynet/lbrynet_daemon/LBRYDaemon.py | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/lbrynet/lbrynet_daemon/LBRYDaemon.py b/lbrynet/lbrynet_daemon/LBRYDaemon.py index ef2ac4891..cd204672f 100644 --- a/lbrynet/lbrynet_daemon/LBRYDaemon.py +++ b/lbrynet/lbrynet_daemon/LBRYDaemon.py @@ -1925,31 +1925,16 @@ class LBRYDaemon(jsonrpc.JSONRPC): def _clean(n): t = [] for i in n: - if i[0]: - tr = {} - tr.update(i[1][0]['value']) - thumb = tr.get('thumbnail', None) - if thumb is None: - tr['thumbnail'] = "img/Free-speech-flag.svg" - tr['name'] = i[1][0]['name'] - tr['cost_est'] = i[1][1] - t.append(tr) + td = {k: i['value'][k] for k in i['value']} + td['cost_est'] = float(i['cost']) + td['thumbnail'] = i['value'].get('thumbnail', "img/Free-speech-flag.svg") + td['name'] = i['name'] + t.append(td) return t - def get_est_costs(results): - def _save_cost(search_result): - d = self._get_est_cost(search_result['name']) - d.addCallback(lambda p: [search_result, p]) - return d - - dl = defer.DeferredList([_save_cost(r) for r in results], consumeErrors=True) - return dl - log.info('Search: %s' % search) d = self._search(search) - d.addCallback(lambda claims: claims[:self.max_search_results]) - d.addCallback(get_est_costs) d.addCallback(_clean) d.addCallback(lambda results: self._render_response(results, OK_CODE)) From 308d9f5abdff6d0244ebae41a6566159f32b2deb Mon Sep 17 00:00:00 2001 From: Jack Date: Tue, 2 Aug 2016 17:33:57 -0400 Subject: [PATCH 6/6] add todo --- lbrynet/lbrynet_daemon/LBRYDaemon.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lbrynet/lbrynet_daemon/LBRYDaemon.py b/lbrynet/lbrynet_daemon/LBRYDaemon.py index cd204672f..58a11c69d 100644 --- a/lbrynet/lbrynet_daemon/LBRYDaemon.py +++ b/lbrynet/lbrynet_daemon/LBRYDaemon.py @@ -1922,6 +1922,7 @@ class LBRYDaemon(jsonrpc.JSONRPC): else: return self._render_response(None, BAD_REQUEST) + # TODO: have ui accept the actual outputs def _clean(n): t = [] for i in n: