26 lines
697 B
Python
26 lines
697 B
Python
|
|
"""Utils for the core app."""
|
||
|
|
|
||
|
|
import base64
|
||
|
|
|
||
|
|
import y_py as Y
|
||
|
|
from bs4 import BeautifulSoup
|
||
|
|
|
||
|
|
|
||
|
|
def base64_yjs_to_xml(base64_string):
|
||
|
|
"""Extract xml from base64 yjs document."""
|
||
|
|
|
||
|
|
decoded_bytes = base64.b64decode(base64_string)
|
||
|
|
uint8_array = bytearray(decoded_bytes)
|
||
|
|
|
||
|
|
doc = Y.YDoc() # pylint: disable=E1101
|
||
|
|
Y.apply_update(doc, uint8_array) # pylint: disable=E1101
|
||
|
|
return str(doc.get_xml_element("document-store"))
|
||
|
|
|
||
|
|
|
||
|
|
def base64_yjs_to_text(base64_string):
|
||
|
|
"""Extract text from base64 yjs document."""
|
||
|
|
|
||
|
|
blocknote_structure = base64_yjs_to_xml(base64_string)
|
||
|
|
soup = BeautifulSoup(blocknote_structure, "html.parser")
|
||
|
|
return soup.get_text(separator=" ").strip()
|