add support for json dumping before/after supplied timestamp

This commit is contained in:
nebula 2025-05-07 03:46:39 +00:00
parent 070ed21dde
commit ac27668621

37
bink.py
View File

@ -18,7 +18,9 @@ max_body_length = 64_000
helptext = """see https://git.tilde.town/nebula/bink for details
--help or -h: show this message
--pipe or -p: use stdin as post content. ex `echo "hello!" | town bink --pipe`
--dump or -d: print all posts in a json object"""
--dump or -d: print all posts in a json object
---dump-before or -db: print all posts before timestamp supplied as an additional argument
---dump-after or -da: print all posts after timestamp supplied as an additional argument"""
try:
os.mkdir(home)
@ -60,7 +62,7 @@ def glob_posts(path):
if os.path.isfile(post_path) and not os.path.islink(post_path)
]
def generate_feed(before=None, count=200):
def generate_feed(before=None, after=None, count=200):
posts = glob_posts("/home/**/.bink/*")
if our_path:
posts += glob_posts(f"{our_path}/*")
@ -69,6 +71,8 @@ def generate_feed(before=None, count=200):
posts.remove(post)
if before:
posts = [post for post in posts if post[0] < before]
elif after:
posts = [post for post in posts if post[0] > after]
posts.sort(key=lambda x: x[0], reverse=True)
blogs = []
for time, user, path in posts[:count]:
@ -86,14 +90,37 @@ def generate_feed(before=None, count=200):
return blogs
if len(sys.argv) > 1:
if sys.argv[1] in ("--help", "-h"):
argv1 = sys.argv[1]
if argv1 in ("--help", "-h"):
print(helptext)
exit(0)
elif sys.argv[1] in ("--dump", "-d"):
elif argv1 in ("--dump", "-d"):
with open("/dev/stdout", "w") as f:
json.dump(generate_feed(), f)
exit(0)
elif sys.argv[1] in ("--pipe", "-p"):
elif argv1 in ("--dump-before", "-db"):
try:
with open("/dev/stdout", "w") as f:
json.dump(generate_feed(before=int(sys.argv[2])), f)
exit(0)
except ValueError:
print(f"Argument for {argv1} must be a number of epoch-nanoseconds.")
exit(1)
except IndexError:
print(f"Supply a timestamp to use this method.")
exit(1)
elif argv1 in ("--dump-after", "-da"):
try:
with open("/dev/stdout", "w") as f:
json.dump(generate_feed(after=int(sys.argv[2])), f)
exit(0)
except ValueError:
print(f"Argument for {argv1} must be a number of epoch-nanoseconds.")
exit(1)
except IndexError:
print(f"Supply a timestamp to use this method.")
exit(1)
elif argv1 in ("--pipe", "-p"):
try:
with open("/dev/stdin", "r", encoding="UTF-8") as f:
body = f.read().strip()