forked from LBRYCommunity/lbry-sdk
Update daemon and uri handler
This commit is contained in:
parent
2085012874
commit
885a0882f2
2 changed files with 109 additions and 15 deletions
|
@ -1,4 +1,5 @@
|
||||||
import binascii
|
import binascii
|
||||||
|
import webbrowser
|
||||||
from lbrynet.core.Error import UnknownNameError
|
from lbrynet.core.Error import UnknownNameError
|
||||||
from lbrynet.lbryfile.StreamDescriptor import LBRYFileStreamType
|
from lbrynet.lbryfile.StreamDescriptor import LBRYFileStreamType
|
||||||
from lbrynet.lbryfile.client.LBRYFileDownloader import LBRYFileSaverFactory, LBRYFileOpenerFactory
|
from lbrynet.lbryfile.client.LBRYFileDownloader import LBRYFileSaverFactory, LBRYFileOpenerFactory
|
||||||
|
@ -25,6 +26,9 @@ import json
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
#TODO add login credentials in a conf file
|
||||||
|
|
||||||
|
|
||||||
class DummyDownloader(object):
|
class DummyDownloader(object):
|
||||||
def __init__(self, directory, file_name):
|
def __init__(self, directory, file_name):
|
||||||
self.download_directory = directory
|
self.download_directory = directory
|
||||||
|
@ -482,6 +486,7 @@ class LBRYDaemon(xmlrpc.XMLRPC):
|
||||||
d.addCallback(lambda _: self.db.close())
|
d.addCallback(lambda _: self.db.close())
|
||||||
d.addCallback(lambda _: _disp_shutdown())
|
d.addCallback(lambda _: _disp_shutdown())
|
||||||
d.addCallback(lambda _: reactor.stop())
|
d.addCallback(lambda _: reactor.stop())
|
||||||
|
d.callback(None)
|
||||||
|
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
@ -609,6 +614,92 @@ class LBRYDaemon(xmlrpc.XMLRPC):
|
||||||
d.addErrback(lambda err: str(err))
|
d.addErrback(lambda err: str(err))
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
def xmlrpc_render_html(self, html):
|
||||||
|
def _make_file(html, path):
|
||||||
|
f = open(path, 'w')
|
||||||
|
f.write(html)
|
||||||
|
f.close()
|
||||||
|
return defer.succeed(None)
|
||||||
|
|
||||||
|
def _disp_err(err):
|
||||||
|
print str(err.getTraceback())
|
||||||
|
return err
|
||||||
|
|
||||||
|
path = os.path.join(self.download_directory, 'lbry.html')
|
||||||
|
|
||||||
|
d = defer.Deferred()
|
||||||
|
d.addCallback(lambda _: _make_file(html, path))
|
||||||
|
d.addCallback(lambda _: webbrowser.open('file://' + path))
|
||||||
|
d.addErrback(_disp_err)
|
||||||
|
d.callback(None)
|
||||||
|
|
||||||
|
return d
|
||||||
|
|
||||||
|
def xmlrpc_render_gui(self):
|
||||||
|
def _disp_err(err):
|
||||||
|
print str(err.getTraceback())
|
||||||
|
return err
|
||||||
|
d = defer.Deferred()
|
||||||
|
d.addCallback(lambda _: webbrowser.open("https://rawgit.com/jackrobison/lbry.io/local/view/page/demo.html"))
|
||||||
|
d.addErrback(_disp_err)
|
||||||
|
d.callback(None)
|
||||||
|
|
||||||
|
return d
|
||||||
|
|
||||||
|
def xmlrpc_search_nametrie(self, search):
|
||||||
|
def _return_d(x):
|
||||||
|
d = defer.Deferred()
|
||||||
|
d.addCallback(lambda _: x)
|
||||||
|
d.callback(None)
|
||||||
|
|
||||||
|
return d
|
||||||
|
|
||||||
|
def _clean(n):
|
||||||
|
t = []
|
||||||
|
for i in n:
|
||||||
|
if i[0]:
|
||||||
|
if i[1][0][0] and i[1][1][0]:
|
||||||
|
i[1][0][1]['value'] = str(i[1][0][1]['value'])
|
||||||
|
t.append([i[1][0][1], i[1][1][1]])
|
||||||
|
return t
|
||||||
|
|
||||||
|
def _parse(results):
|
||||||
|
f = []
|
||||||
|
for chain, meta in results:
|
||||||
|
t = {}
|
||||||
|
if 'name' in chain.keys():
|
||||||
|
t['name'] = chain['name']
|
||||||
|
if 'thumbnail' in meta.keys():
|
||||||
|
t['img'] = meta['thumbnail']
|
||||||
|
if 'name' in meta.keys():
|
||||||
|
t['title'] = meta['name']
|
||||||
|
if 'description' in meta.keys():
|
||||||
|
t['description'] = meta['description']
|
||||||
|
if 'key_fee' in meta.keys():
|
||||||
|
t['cost_est'] = meta['key_fee']
|
||||||
|
else:
|
||||||
|
t['cost_est'] = 0.0
|
||||||
|
f.append(t)
|
||||||
|
|
||||||
|
return f
|
||||||
|
|
||||||
|
def _disp(results):
|
||||||
|
print '[' + str(datetime.now()) + '] Found ' + str(len(results)) + ' results'
|
||||||
|
return results
|
||||||
|
|
||||||
|
print '[' + str(datetime.now()) + '] Search nametrie: ' + search
|
||||||
|
|
||||||
|
filtered_results = [n for n in self.rpc_conn.getnametrie() if n['name'].startswith(search)]
|
||||||
|
filtered_results = [n for n in filtered_results if 'txid' in n.keys()]
|
||||||
|
resolved_results = [defer.DeferredList([_return_d(n), self._resolve_name(n['name'])]) for n in filtered_results]
|
||||||
|
|
||||||
|
d = defer.DeferredList(resolved_results)
|
||||||
|
d.addCallback(_clean)
|
||||||
|
d.addCallback(_parse)
|
||||||
|
d.addCallback(_disp)
|
||||||
|
|
||||||
|
return d
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
daemon = LBRYDaemon()
|
daemon = LBRYDaemon()
|
||||||
|
@ -617,4 +708,4 @@ def main():
|
||||||
reactor.run()
|
reactor.run()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|
|
@ -3,10 +3,12 @@ import json
|
||||||
import webbrowser
|
import webbrowser
|
||||||
import xmlrpclib, sys
|
import xmlrpclib, sys
|
||||||
|
|
||||||
|
|
||||||
def render_video(path):
|
def render_video(path):
|
||||||
r = r'<center><video src="' + path + r'" controls width="960" height="720"></center>'
|
r = r'<center><video src="' + path + r'" controls autoplay width="960" height="720"></center>'
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
|
||||||
def main(args):
|
def main(args):
|
||||||
if len(args) == 0:
|
if len(args) == 0:
|
||||||
args.append('lbry://wonderfullife')
|
args.append('lbry://wonderfullife')
|
||||||
|
@ -17,7 +19,16 @@ def main(args):
|
||||||
print 'Too many args', args
|
print 'Too many args', args
|
||||||
|
|
||||||
else:
|
else:
|
||||||
if args[0][7:] != 'settings':
|
|
||||||
|
if args[0][7:] == 'lbry':
|
||||||
|
daemon.render_gui()
|
||||||
|
|
||||||
|
elif args[0][7:] == 'settings':
|
||||||
|
r = daemon.get_settings()
|
||||||
|
html = "<body>" + json.dumps(r) + "</body>"
|
||||||
|
r = daemon.render_html(html)
|
||||||
|
|
||||||
|
else:
|
||||||
r = daemon.get(args[0][7:])
|
r = daemon.get(args[0][7:])
|
||||||
print r
|
print r
|
||||||
path = r['path']
|
path = r['path']
|
||||||
|
@ -29,20 +40,12 @@ def main(args):
|
||||||
extension = path.split('.')[len(path.split('.')) - 1]
|
extension = path.split('.')[len(path.split('.')) - 1]
|
||||||
|
|
||||||
if extension in ['mp4', 'flv', 'mov']:
|
if extension in ['mp4', 'flv', 'mov']:
|
||||||
h = str(render_video(path))
|
html = render_video(path)
|
||||||
f = open('lbry.html', 'w')
|
daemon.render_html(html)
|
||||||
f.write(h)
|
|
||||||
f.close()
|
|
||||||
webbrowser.open('file://' + os.path.join(os.getcwd(), 'lbry.html'))
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
webbrowser.open('file://' + path)
|
webbrowser.open('file://' + str(path))
|
||||||
else:
|
|
||||||
r = daemon.get_settings()
|
|
||||||
f = open('lbry.html', 'w')
|
|
||||||
f.write("<body>" + json.dumps(r) + "</body>")
|
|
||||||
f.close()
|
|
||||||
webbrowser.open('file://' + os.path.join(os.getcwd(), 'lbry.html'))
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main(sys.argv[1:])
|
main(sys.argv[1:])
|
Loading…
Reference in a new issue