File size: 536 Bytes
e549219
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import base64
from typing import Tuple

# Parse data: URIs like data:text/plain;base64,SGVsbG8=

def is_data_uri(url: str) -> bool:
    return url.startswith("data:")


def decode_data_uri(url: str) -> Tuple[str, bytes]:
    # returns (mime, bytes)
    assert url.startswith("data:"), "Not a data URI"
    header, b64 = url.split(",", 1)
    mime = header[5:].split(";")[0] or "application/octet-stream"
    if ";base64" in header:
        data = base64.b64decode(b64)
    else:
        data = b64.encode("utf-8")
    return mime, data