Spaces:
Build error
Build error
import json | |
from pathlib import Path | |
from util import encode, get_content | |
import secrets | |
import time | |
from PIL import Image | |
import io | |
import os | |
def create_microverse(modality, query, auth_result, text_encoder, text_image_encoder): | |
knowledge_base_path = Path('..') / 'knowledge' | |
microverses_path = Path('microverses.json') | |
if auth_result['custodian'] == False: | |
return { | |
'message': 'Only the conceptarium\'s custodian can create microverses in it.' | |
} | |
else: | |
if not microverses_path.exists(): | |
json.dump([], open(microverses_path, 'w')) | |
query_embedding = encode( | |
modality, query, text_encoder, text_image_encoder) | |
token = secrets.token_urlsafe(16) | |
if modality == 'text': | |
filename = secrets.token_urlsafe(16) + '.md' | |
open(knowledge_base_path / filename, 'w').write(query) | |
microverses = json.load(open(microverses_path)) | |
microverses += [{ | |
"filename": filename, | |
"modality": modality, | |
"timestamp": time.time(), | |
"token": token, | |
"embeddings": query_embedding | |
}] | |
json.dump(microverses, open(microverses_path, 'w')) | |
elif modality == 'image': | |
filename = secrets.token_urlsafe(16) + '.jpg' | |
query = Image.open(io.BytesIO(query)).convert('RGB') | |
query.save(knowledge_base_path / filename, quality=50) | |
microverses = json.load(open(microverses_path)) | |
microverses += [{ | |
"filename": filename, | |
"modality": modality, | |
"timestamp": time.time(), | |
"token": token, | |
"embeddings": query_embedding | |
}] | |
json.dump(microverses, open(microverses_path, 'w')) | |
return { | |
"token": token | |
} | |
def remove_microverse(auth_result, microverse_token): | |
microverses_path = Path('microverses.json') | |
knowledge_base_path = Path('..') / 'knowledge' | |
if auth_result['custodian'] == False: | |
return { | |
'message': 'Only the conceptarium\'s custodian can create microverses in it.' | |
} | |
else: | |
microverses = json.load(open(microverses_path)) | |
microverses = [ | |
e for e in microverses if e['token'] != microverse_token] | |
removal_target = [ | |
e for e in microverses if e['token'] == microverse_token] | |
json.dump(microverses, open(microverses_path, 'w')) | |
if len(removal_target) > 0: | |
os.remove(knowledge_base_path / removal_target[0]['filename']) | |
def list_microverses(auth_result): | |
microverses_path = Path('microverses.json') | |
if auth_result['custodian'] == False: | |
return { | |
'message': 'Only the conceptarium\'s custodian can list all microverses in it.' | |
} | |
else: | |
if not microverses_path.exists(): | |
json.dump([], open(microverses_path, 'w')) | |
microverses = json.load(open(microverses_path)) | |
for e_idx, e in enumerate(microverses): | |
microverses[e_idx]['content'] = get_content( | |
e, True) | |
return microverses | |