diff --git a/bink.py b/bink.py index 7b6ede3..fda1e9e 100755 --- a/bink.py +++ b/bink.py @@ -31,7 +31,7 @@ def file_object(path): # output: (999, "nebula", "/home/nebula/.bink/999") return (int(split[-1]), split[2], path) -def generate_feed(before=None, count=50): +def generate_feed(before=None, count=200): posts = [file_object(path) for path in glob("/home/**/.bink/*")] if before: posts = [post for post in posts if post[0] < before] @@ -50,13 +50,13 @@ def generate_feed(before=None, count=50): blogs.append(obj) return blogs -if "--help" in argv or "help" in argv: +if argv[-1] == "--help" or argv[-1] == "help": exit("see https://git.tilde.town/nebula/bink for usage instructions") -elif "dump" in argv: +elif argv[-1] == "dump": with open("/dev/stdout", "w") as f: json.dump(generate_feed(), f) exit() -elif "pipe" in argv: +elif argv[-1] == "dump": try: with open("/dev/stdin", "r", encoding="UTF-8") as f: body = f.read().strip() @@ -65,11 +65,14 @@ elif "pipe" in argv: exit() except KeyboardInterrupt: exit() - + +if len(argv) > 1: + create_post(" ".join(argv[1:])) + exit() import urwid -footer = "[c]reate new post [q]uit [g]top [G]bottom | scrolling: arrows, space, page up/page down, ctrl-d/ctrl-u" +footer = "[c]reate new post [q]uit | scrolling: arrows, space, page up/page down, ctrl-d/ctrl-u, j/k" attrmap = [ ("bold", "default,bold", "default"), @@ -78,7 +81,7 @@ attrmap = [ class App(): def __init__(self): - self.walker = urwid.SimpleListWalker([ + self.walker = urwid.SimpleFocusListWalker([ self.post_to_widget(post) for post in generate_feed() ]) self.loop = urwid.MainLoop( @@ -89,19 +92,22 @@ class App(): palette=attrmap ) - def update(self, before=None, count=50): - self.walker.clear() - for post in generate_feed(before=before, count=count): + def update(self, before=None, clear=True): + if clear: + self.walker.clear() + for post in generate_feed(before=before): self.walker.append(self.post_to_widget(post)) def post_to_widget(self, post): time = post["time"] / 1_000_000_000 stamp = datetime.datetime.fromtimestamp(time) - return urwid.Pile([ + pile = urwid.Pile([ urwid.Text([("bold", f"~{post['user']}"), " @ ", stamp.strftime("%H:%M (%A, %B %d, %Y)")]), urwid.Text(post['body']), urwid.Divider() ]) + # pile.post_time = post["time"] + return pile def write_with_editor(self): self.loop.stop() @@ -144,8 +150,12 @@ class ActionBox(urwid.ListBox): elif key == "ctrl u": for i in range(1, floor(size[1] / 2)): super().keypress(size, "up") - return super().keypress(size, key) - + super().keypress(size, key) + # completely borked code + # focus = self.get_focus_widgets()[0] + # if focus.post_time == app.walker[-1].post_time: + # app.update(before=focus.post_time) + app = App() try: app.loop.run()