Implement displaying feeds and articles dates.

master
VikingKong 3 years ago
parent 89e74508e6
commit abf1a5dc0d

@ -1,4 +1,5 @@
import httpx
import Utils
class Fetcher:
@ -12,9 +13,10 @@ class Fetcher:
def getUnreadCounts(self):
response = httpx.get(self.URL+"/reader/api/0/unread-count?output=json", headers=self.headers)
result = dict([(item["id"], (item["count"], item["newestItemTimestampUsec"])) for item in response.json()["unreadcounts"]])
result = dict([(item["id"], (item["count"], item["newestItemTimestampUsec"], Utils.timestampToDate(
item["newestItemTimestampUsec"]))) for item in response.json()["unreadcounts"]])
self.unreadCounts = result
self.categories = [{"id": item, "name": item[13:], "count": self.unreadCounts[item][0]}
self.categories = [{"id": item, "name": item[13:], "count": self.unreadCounts[item][0], "date": self.unreadCounts[item][2]}
for item in self.unreadCounts.keys() if item[0:13] == "user/-/label/"]
def getSubscriptions(self):

@ -1,15 +1,19 @@
import urwid
import yaml
import asyncio
import warnings
from concurrent.futures import ThreadPoolExecutor
from API import Fetcher
from Render import Article
import asyncio
import Utils
warnings.filterwarnings("ignore")
class LeftPane(urwid.ListBox):
def __init__(self, categories):
super().__init__(self)
items = [urwid.AttrMap(urwid.Columns([(5, urwid.Text(str(category["count"]))), urwid.Text(category["name"])]),
items = [urwid.AttrMap(urwid.Columns([
(16, urwid.Text(category["date"])), urwid.Text(category["name"]), (5, urwid.Text(str(category["count"])))]),
(category["id"], category["count"]), "reveal focus") for category in categories]
walker = urwid.SimpleListWalker(items)
self.body = walker
@ -77,8 +81,10 @@ class LeftPane(urwid.ListBox):
self.categoryPosition = idx
categoryId = focus_widget.attr_map[None][0]
feeds = tui.fetcher.feedsFromCategory(categoryId)
feedItems = [urwid.AttrMap(urwid.Columns([(5, urwid.Text(str(tui.fetcher.unreadCounts[feed["id"]][0]))),
urwid.Text(feed["title"])]), feed["id"], "reveal focus") for feed in feeds]
feedItems = [urwid.AttrMap(urwid.Columns([(16, urwid.Text(tui.fetcher.unreadCounts[feed["id"]][2])),
urwid.Text(feed["title"]),
(5, urwid.Text(str(tui.fetcher.unreadCounts[feed["id"]][0])))]),
feed["id"], "reveal focus") for feed in feeds]
walker = urwid.SimpleListWalker(feedItems)
self.body = walker
tui.leftBox.set_title(categoryId[13:])
@ -90,8 +96,9 @@ class LeftPane(urwid.ListBox):
elif key in ("h", "left"):
if not self.isCategoryView:
self.isCategoryView = True
items = [urwid.AttrMap(urwid.Columns([(5, urwid.Text(str(category["count"]))), urwid.Text(category["name"])]),
(category["id"], category["count"]), "reveal focus") for category in tui.fetcher.categories]
items = [urwid.AttrMap(urwid.Columns([
(16, urwid.Text(category["date"])), urwid.Text(category["name"]), (5, urwid.Text(str(category["count"])))]),
(category["id"], category["count"]), "reveal focus") for category in tui.fetcher.categories]
walker = urwid.SimpleFocusListWalker(items)
self.body = walker
tui.leftBox.set_title("Categories")
@ -114,8 +121,14 @@ class RightPane(urwid.ListBox):
self.chunkNumber = 0
def fill(self, articles):
items = [urwid.AttrMap(urwid.Columns([(2, urwid.Text("N")), urwid.Text(article["title"])]),
article["id"], "reveal focus") for article in articles]
items = [
urwid.AttrMap(
urwid.Columns(
[(2, urwid.Text("")),
(16, urwid.Text(Utils.timestampToDate(article["timestampUsec"]))),
urwid.Text(article["title"])]),
article["id"],
"reveal focus") for article in articles]
walker = urwid.SimpleListWalker(items)
self.body = walker
@ -208,7 +221,7 @@ class TUI(urwid.Frame):
self.leftBox = urwid.LineBox(self.feedView, title="Categories")
self.rightBox = urwid.LineBox(self.articleView, title="Articles")
self.views = urwid.Columns(
[(40, self.leftBox), self.rightBox])
[(56, self.leftBox), self.rightBox])
self.status = urwid.Text("")
self.footer = urwid.ListBox([self.status])
self.container = urwid.Pile([self.views, (1, self.footer)])
@ -238,6 +251,8 @@ class TUI(urwid.Frame):
if key == "tab":
self.activePane = not self.activePane
self.views.set_focus(int(self.activePane))
if self.activePane:
tui.articleView.isList = True
elif key == "q":
raise urwid.ExitMainLoop()
elif key == "r":

@ -1,14 +1,16 @@
from inscriptis import get_text
import os
import Utils
class Article:
def __init__(self, articleObj):
self.text = get_text(articleObj["summary"]["content"])
self.title = articleObj["title"]
self.date = Utils.timestampToDate(articleObj["timestampUsec"])
self.currentPageNumber = 1
terminal_width, terminal_height = os.get_terminal_size()
terminal_width -= 60
terminal_width -= 76
terminal_height -= 1
start_of_chunk = 0
end_of_chunk = 0

@ -0,0 +1,5 @@
from datetime import datetime
def timestampToDate(ts):
return datetime.fromtimestamp(int(ts)/1000000).strftime("%y-%m-%d %H:%M")
Loading…
Cancel
Save