have images working eheeheehee

macdev
quadrismegistus 4 years ago
parent 84bc7ef7c8
commit 38e3a95a37

@ -383,6 +383,7 @@ class MainApp(MDApp):
async def download(self,file_id,output_fn=None):
self.log('downloading:',file_id)
file_dat = await self.api.download(file_id)
self.log('file_dat =',file_dat)
if not output_fn:
file_id=file_dat['id']
file_ext=file_dat['ext']

@ -1,4 +1,4 @@
from screens.base import ProtectedScreen
from screens.base import ProtectedScreen,BaseScreen
from plyer import filechooser
from kivymd.uix.label import MDLabel
from kivymd.uix.textfield import MDTextField

@ -82,7 +82,7 @@ class Api(object):
i = 0
self._node = await self.connect()
while True:
self.log(f'Node status (minute {i}): {self._node}')
# self.log(f'Node status (minute {i}): {self._node}')
# # get some sleep
# if self.root.ids.btn1.state != 'down' and i >= 2:
@ -91,7 +91,7 @@ class Api(object):
# self.root.ids.btn1.trigger_action()
i += 1
await asyncio.sleep(60)
await asyncio.sleep(5)
# pass
except asyncio.CancelledError as e:
self.log('P2P node cancelled', e)
@ -119,6 +119,7 @@ class Api(object):
if type(key_or_keys) in {list,tuple,dict}:
keys = key_or_keys
self.log('??????!!!!!')
res = await asyncio.gather(*[self.unpack_well_documented_val(await node.get(key)) for key in keys])
#log('RES?',res)
else:
@ -144,13 +145,14 @@ class Api(object):
#self.log('timestamp =',timestamp)
if type(val)!=bytes:
value = str(val)
try:
value_bytes = value.encode('utf-8')
except UnicodeDecodeError:
value_bytes = value.encode('ascii')
# value = str(val)
# try:
# value_bytes = value.encode('utf-8')
# except UnicodeDecodeError:
# value_bytes = value.encode('ascii')
value_bytes = base64.b64encode(bytes(val,'utf-8'))
else:
value_bytes=val
value_bytes=base64.b64encode(val)
# encrypt?
@ -261,15 +263,23 @@ class Api(object):
# time=float(time.decode())
#val=val.decode()
# return time,val,pub,sign
self.log('valtype??',type(val),val)
# try:
# valdec = val.decode()
# except UnicodeDecodeError:
# valdec = val.decode('ascii')
# valdec = val #.decode() #base64.b64encode(val).decode()
valdec = base64.b64decode(val)
WDV={
'time':float(time_b.decode()),
'val':val,
'val':valdec,
'to':to_pub,
'from':from_pub,
'sign':signature
}
# self.log('GOT WDV:',WDV)
self.log('GOT WDV:',WDV)
return WDV
@ -305,9 +315,14 @@ class Api(object):
if res is None: return res
def jsonize(entry):
self.log('jsonize!',entry)
if not 'val' in entry: return entry
val=entry['val']
dat=json.loads(val.decode()) if val else val
try:
dat=json.loads(val) if val else val
except UnicodeDecodeError:
dat=val
self.log('dat??',dat)
entry['val']=dat
return entry
@ -477,7 +492,7 @@ class Api(object):
parts=[]
PARTS=[]
buffer_size=100
for part in bytes_from_file(filename,chunksize=1024*4):
for part in bytes_from_file(filename,chunksize=1024*2):
part_id = get_random_id()
part_ids.append(part_id)
part_key='/part/'+part_id
@ -520,7 +535,10 @@ class Api(object):
self.log('file_store!?',file_store)
keys = ['/part/'+x for x in file_store['parts']]
time,pieces,pub,sign = await self.get(keys)
#time,pieces,pub,sign = await self.get_val(keys)
pieces = await self.get_val(keys)
self.log('pieces = ',pieces)
file_store['parts_data']=pieces
return file_store
@ -544,13 +562,13 @@ class Api(object):
async def get_val(self,uri):
res=await self.get_json(uri)
self.log('get_val() got',res)
if res is None:
return res
elif type(res) == dict:
return res.get('val',None)
r=None
if type(res) == dict:
r=res.get('val',None)
elif type(res) == list:
return [x.get('val',None) for x in res]
return None
r=[x.get('val',None) for x in res]
self.log('get_val() giving back',r)
return r
async def get_post(self,post_id):
return await self.get_val(post_id)

@ -205,32 +205,34 @@ class KadServer(Server):
# async def get(self, key):
# """
# Get a key if the network has it.
# Returns:
# :class:`None` if not found, the value otherwise.
# """
# log.info("Looking up key %s", key)
# dkey = digest(key)
# # if this node has it, return it
# if self.storage.get(dkey) is not None:
# log.info('I already have this')
# return self.storage.get(dkey)
# node = Node(dkey)
# nearest = self.protocol.router.find_neighbors(node)
# log.info(f'My nearest nodes are: {nearest}')
# if not nearest:
# log.warning("There are no known neighbors to get key %s", key)
# return None
# spider = ValueSpiderCrawl(self.protocol, node, nearest,
# self.ksize, self.alpha)
# found = await spider.find()
# log.info(f'spider done crawling: {spider}')
# log.info(f'spider found value: {found}')
# return found
async def get(self, key):
"""
Get a key if the network has it.
Returns:
:class:`None` if not found, the value otherwise.
"""
log.info("Looking up key %s", key)
dkey = digest(key)
# if this node has it, return it
if self.storage.get(dkey) is not None:
log.info('I already have this')
return self.storage.get(dkey)
node = Node(dkey)
nearest = self.protocol.router.find_neighbors(node)
log.info(f'My nearest nodes are: {nearest}')
if not nearest:
log.warning("There are no known neighbors to get key %s", key)
return None
spider = ValueSpiderCrawl(self.protocol, node, nearest,
self.ksize, self.alpha)
found = await spider.find()
log.info(f'spider done crawling: {spider}')
log.info(f'spider found value: {found}')
self.storage[dkey]=found
return found
async def set(self, key, value):
"""

Loading…
Cancel
Save