bink/bink.py
2025-04-20 23:38:06 +00:00

48 lines
1.2 KiB
Python
Executable File

import json
from glob import glob
from time import time_ns
import os
from sys import argv
home = os.path.expanduser("~/.bink")
max_body_length = 64_000
try:
os.mkdir(home)
except FileExistsError:
pass
def create_post(body):
with open(f"{home}/{time_ns()}", "w", encoding="UTF-8") as f:
f.write(body)
def file_object(path):
split = path.split("/")
# example input: /home/nebula/.bink/999
# output: (999, "nebula", "/home/nebula/.bink/999")
return (int(split[-1]), split[2], path)
def generate_feed(before=None, count=50):
posts = [file_object(path) for path in glob("/home/**/.bink/*")]
if before:
posts = [post for post in posts if post[0] < before]
posts.sort(key=lambda x: x[0], reverse=True)
blogs = []
for time, user, path in posts[:count]:
# try:
with open(path, "r", encoding="UTF-8") as f:
body = f.read()
# except
obj = {
"user": user,
"time": time,
"body": body[:max_body_length],
}
blogs.append(obj)
return blogs
if "dump" in argv:
with open("/dev/stdout", "w") as f:
json.dump(generate_feed(), f)
exit()