Spaces:
Running
Running
# -*- coding: utf-8 -*- | |
from loguru import logger as log | |
import gradio as gr | |
import iscc_core as ic | |
def explain_iscc(code): | |
result = [gr.Column(visible=False), None, None, None, None] | |
if not code: | |
return tuple(result) | |
try: | |
canonical = ic.iscc_normalize(code) | |
# TODO Update iscc-core validation for MSCDI | |
# ic.iscc_validate(canonical, strict=True) | |
human = " - ".join(ic.iscc_explain(code).split("-")) | |
code_obj = ic.Code(canonical) | |
decomposed = " - ".join(ic.iscc_decompose(canonical)) | |
multiformat = code_obj.mf_base58btc | |
except Exception as e: | |
log.error(e) | |
result[1] = str(e) | |
return tuple(result) | |
return gr.Column(visible=True), canonical, human, decomposed, multiformat | |
with gr.Blocks() as demo: | |
gr.Markdown( | |
""" | |
## π΅οΈββοΈ ISCC Inspector | |
""" | |
) | |
with gr.Row(): | |
with gr.Column(): | |
in_iscc = gr.Text( | |
label="ISCC Inspector", | |
info="DECODE & EXPLAIN ISCC STRUCTURE", | |
placeholder="Paste an ISCC here to break it down", | |
autofocus=True, | |
) | |
examples = [ | |
"ISCC:AAAWN77F727NXSUS", # Meta-Code | |
"bzqaqaal5rvp72lx2thvq", # Multiformat | |
"ISCC:EAASKDNZNYGUUF5A", # Text-Code | |
"ISCC:GABW5LUBVP23N3DOD7PPINHT5JKBI", # Data-Code 128 bits | |
"ISCC:KUAG5LUBVP23N3DOHCHWIYGXVN7ZS", # ISCC-SUM | |
"ISCC:KAA2Y5NUST7BFD5NN2XIDK7VW3WG4OEPMRQNPK37TE", # ISCC-CDI | |
"z36hVxiqoF8AAmDpZV958hn3tsv2i7v1NfCrSzpq", # ISCC-CDI multiformats | |
"ISCC:KACT4EBWK27737D2AYCJRAL5Z36G76RFRMO4554RU26HZ4ORJGIVHDI", | |
] | |
gr.Examples(label="Example ISCCs", examples=examples, inputs=[in_iscc]) | |
with gr.Row(): | |
with gr.Column(visible=False) as out_column: | |
out_canonical = gr.Text( | |
label="Canonical", | |
info="NORMALIZED STANDARD REPRESENTATION", | |
show_copy_button=True, | |
value=None, | |
) | |
out_human = gr.Text( | |
label="Human Readable", | |
info="MAINTYPE - SUBTYPE - VERSION - LENGTH - BODY", | |
show_copy_button=True, | |
) | |
out_decomposed = gr.Text( | |
label="Decomposed", | |
info="ISCC-UNITS", | |
show_copy_button=True, | |
) | |
out_multiformat = gr.Text( | |
label="Multiformat", | |
info="BASE58-BTC", | |
show_copy_button=True, | |
) | |
in_iscc.change( | |
explain_iscc, | |
inputs=[in_iscc], | |
outputs=[ | |
out_column, | |
out_canonical, | |
out_human, | |
out_decomposed, | |
out_multiformat, | |
], | |
show_progress="hidden", | |
) | |
if __name__ == "__main__": | |
demo.launch() | |