|
@@ -6,6 +6,27 @@ def newLine(ncwin, lines=1):
|
6
|
6
|
cy, cx = ncwin.getyx()
|
7
|
7
|
ncwin.move(cy + lines, 0)
|
8
|
8
|
|
|
9
|
+def printPost(win, post, parser):
|
|
10
|
+ win.addstr(post["account"]["acct"], curses.A_BOLD)
|
|
11
|
+ win.addstr(':', curses.A_BOLD)
|
|
12
|
+ newLine(win)
|
|
13
|
+ parser.feed(post["content"])
|
|
14
|
+
|
|
15
|
+def printAtLevel(stdscr, col1, col2, posts, parser, level):
|
|
16
|
+ col1.clear()
|
|
17
|
+ col2.clear()
|
|
18
|
+ col1.move(0, 0)
|
|
19
|
+ col2.move(0, 0)
|
|
20
|
+ printPost(col1, posts[level], parser)
|
|
21
|
+ printPost(col1, posts[(level + 1) % len(posts)], parser)
|
|
22
|
+ try:
|
|
23
|
+ col2.addstr(str(posts[level]))
|
|
24
|
+ except curses.error:
|
|
25
|
+ pass
|
|
26
|
+ stdscr.noutrefresh()
|
|
27
|
+ col1.noutrefresh()
|
|
28
|
+ col2.noutrefresh()
|
|
29
|
+ curses.doupdate()
|
9
|
30
|
|
10
|
31
|
class PostParser(HTMLParser):
|
11
|
32
|
def __init__(self, ncwin, defncatt):
|
|
@@ -29,7 +50,10 @@ class PostParser(HTMLParser):
|
29
|
50
|
self.curatt = self.curatt ^ curses.A_BOLD
|
30
|
51
|
|
31
|
52
|
def handle_data(self, data):
|
32
|
|
- self.win.addstr(data, self.curatt)
|
|
53
|
+ try:
|
|
54
|
+ self.win.addstr(data, self.curatt)
|
|
55
|
+ except curses.error:
|
|
56
|
+ pass
|
33
|
57
|
|
34
|
58
|
|
35
|
59
|
# print(mastodon.timeline()[0]["content"])
|
|
@@ -45,31 +69,32 @@ def main(stdscr):
|
45
|
69
|
# stdscr.addstr("test")
|
46
|
70
|
curses.halfdelay(10)
|
47
|
71
|
my, mx = stdscr.getmaxyx()
|
48
|
|
- c1w = c2w = (mx - 1) // 2
|
|
72
|
+ c1w = c2w = (mx - 3) // 2
|
49
|
73
|
if (mx % 2) != 0:
|
50
|
74
|
c2w = c2w - 1
|
51
|
|
- colw1 = curses.newwin(1, 1, my - 1, c1w)
|
52
|
|
- colw2 = curses.newwin(1, 1 + c1w + 1, my - 1, c2w)
|
53
|
|
- #colw1.border()
|
54
|
|
- #colw2.border()
|
|
75
|
+ colw1 = curses.newwin(my - 2, c1w, 1, 1)
|
|
76
|
+ colw2 = curses.newwin(my - 2, c2w, 1, 1 + c1w + 2)
|
|
77
|
+ stdscr.border()
|
|
78
|
+ # colw1.border()
|
|
79
|
+ # colw2.border()
|
55
|
80
|
parser = PostParser(colw1, 0)
|
56
|
|
- colw1.move(0,0)
|
57
|
|
- try:
|
58
|
|
- for post in posts:
|
59
|
|
- colw1.addstr(post["account"]["acct"], curses.A_BOLD)
|
60
|
|
- colw1.addstr(':', curses.A_BOLD)
|
61
|
|
- newLine(colw1)
|
62
|
|
- parser.feed(post["content"])
|
63
|
|
- except:
|
64
|
|
- pass
|
65
|
|
- colw1.refresh()
|
66
|
|
- colw2.refresh()
|
67
|
|
- stdscr.refresh()
|
|
81
|
+ # colw1.move(0,0)
|
|
82
|
+ # stdscr.addstr(0, 0, 'test')
|
|
83
|
+ # colw2.addstr(0, 0, 'test2')
|
|
84
|
+ # colw1.addstr(0, 0, 'test3')
|
68
|
85
|
i = 'c'
|
69
|
86
|
q = 0
|
|
87
|
+ printAtLevel(stdscr, colw1, colw2, posts, parser, q)
|
70
|
88
|
con = True
|
71
|
89
|
while con:
|
72
|
90
|
i = stdscr.getch()
|
73
|
|
- con = (i != ord('q'))
|
|
91
|
+ if (i == ord('q')):
|
|
92
|
+ con = False
|
|
93
|
+ elif (i == ord('j')):
|
|
94
|
+ q = (q + 1) % len(posts)
|
|
95
|
+ printAtLevel(stdscr, colw1, colw2, posts, parser, q)
|
|
96
|
+ elif (i == ord('k')):
|
|
97
|
+ q = (q - 1) % len(posts)
|
|
98
|
+ printAtLevel(stdscr, colw1, colw2, posts, parser, q)
|
74
|
99
|
|
75
|
100
|
curses.wrapper(main)
|