62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
from hashlib import sha512
|
|
import secrets
|
|
import time
|
|
import requests
|
|
import io
|
|
|
|
from config.config import TMP
|
|
|
|
# define
|
|
an_example_of_context = {
|
|
"id": int,
|
|
"metadata": {
|
|
"create_time": int,
|
|
"author": str,
|
|
"tags": list[str],
|
|
"category": str
|
|
},
|
|
"content": {
|
|
"text": str,
|
|
"media": [
|
|
io.BytesIO
|
|
]
|
|
}
|
|
}
|
|
|
|
def get(index:int, media:bool=True) -> dict | None:
|
|
res = requests.get("http://localhost:5000/article/%d?media_count=1"%index)
|
|
if res.status_code != 200:
|
|
return None
|
|
|
|
rj = res.json()
|
|
media = []
|
|
bytesio = 0
|
|
|
|
if media:
|
|
for m in rj["media"]:
|
|
_m = requests.get(m)
|
|
if _m.status_code == 200:
|
|
#if bytesio: # save in memory
|
|
media.append(io.BytesIO(_m.content))
|
|
#else: # save in file
|
|
# filename = sha512( (str(time.time())+secrets.token_urlsafe(nbytes=16)).encode() ).hexdigest()
|
|
# filename = f"./{TMP}/{filename}"
|
|
# with open(filename, "wb") as f:
|
|
# f.write(_m.content)
|
|
# media.append(filename)
|
|
|
|
result = {
|
|
"id": rj["id"],
|
|
"metadata": {
|
|
"create_time": rj["create_time"],
|
|
"author": "",
|
|
"tags": [],
|
|
"category": ""
|
|
},
|
|
"content": {
|
|
"text": rj["content"],
|
|
"media": media
|
|
}
|
|
}
|
|
|
|
return result
|