add low quality urwid code
This commit is contained in:
parent
611625679d
commit
73e488681c
43
bink.py
43
bink.py
@ -4,6 +4,8 @@ from time import time_ns
|
||||
import datetime
|
||||
import os
|
||||
from sys import argv
|
||||
from subprocess import run
|
||||
import tempfile
|
||||
|
||||
home = os.path.expanduser("~/.bink")
|
||||
max_body_length = 64_000
|
||||
@ -13,6 +15,11 @@ try:
|
||||
except FileExistsError:
|
||||
pass
|
||||
|
||||
try:
|
||||
editor = os.environ["EDITOR"]
|
||||
except KeyError:
|
||||
editor = "nano"
|
||||
|
||||
def create_post(body):
|
||||
with open(f"{home}/{time_ns()}", "w", encoding="UTF-8") as f:
|
||||
f.write(body)
|
||||
@ -51,25 +58,53 @@ import urwid
|
||||
|
||||
class App(object):
|
||||
def __init__(self):
|
||||
self.walker = urwid.SimpleFocusListWalker([
|
||||
self.walker = urwid.SimpleListWalker([
|
||||
self.post_to_widget(post) for post in generate_feed()
|
||||
])
|
||||
self.loop = urwid.MainLoop(
|
||||
urwid.ListBox(self.walker)
|
||||
ActionBox(self.walker)
|
||||
)
|
||||
|
||||
def update(self, before=None, count=50):
|
||||
self.walker.clear()
|
||||
for post in generate_feed(before=before, count=count):
|
||||
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([
|
||||
urwid.Text([f"~{post['user']}", " @ ", stamp.strftime("%H:%M (%A, %B %d, %Y)")]),
|
||||
urwid.Text(post["body"]),
|
||||
urwid.Text(f" {post['body']}"),
|
||||
urwid.Divider()
|
||||
])
|
||||
|
||||
def write_with_editor(self):
|
||||
self.loop.stop()
|
||||
tmp = tempfile.NamedTemporaryFile()
|
||||
run([editor, tmp.name])
|
||||
with open(tmp.name, "r") as f:
|
||||
body = f.read().strip()
|
||||
if body:
|
||||
create_post(body)
|
||||
self.update()
|
||||
self.loop.start()
|
||||
|
||||
|
||||
class ActionBox(urwid.ListBox):
|
||||
def keypress(self, size, key):
|
||||
keyl = key.lower()
|
||||
if keyl == "c":
|
||||
app.write_with_editor()
|
||||
elif keyl == "r":
|
||||
app.update()
|
||||
elif keyl in ("q", "x"):
|
||||
app.loop.stop()
|
||||
exit()
|
||||
return super().keypress(size, key)
|
||||
|
||||
app = App()
|
||||
try:
|
||||
app.loop.run()
|
||||
except KeyboardInterrupt:
|
||||
app.loop.stop()
|
||||
exit()
|
Loading…
x
Reference in New Issue
Block a user