Skip to content

Commit

Permalink
move materialistic module inside hackernews package
Browse files Browse the repository at this point in the history
  • Loading branch information
karlicoss committed Feb 4, 2022
1 parent 590e09f commit c4ad84a
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 56 deletions.
60 changes: 60 additions & 0 deletions my/hackernews/materialistic.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
"""
[[https://play.google.com/store/apps/details?id=io.github.hidroh.materialistic][Materialistic]] app for Hackernews
"""

REQUIRES = ['dataset']

from datetime import datetime
from typing import Any, Dict, Iterator, NamedTuple, Sequence

import pytz

from my.config import materialistic as config
# todo migrate config to my.hackernews.materialistic


from ..core import get_files
from pathlib import Path
def inputs() -> Sequence[Path]:
return get_files(config.export_path)


Row = Dict[str, Any]
from .common import hackernews_link

class Saved(NamedTuple):
row: Row

@property
def when(self) -> datetime:
ts = int(self.row['time']) / 1000
return datetime.fromtimestamp(ts, tz=pytz.utc)

@property
def uid(self) -> str:
return self.row['itemid']

@property
def url(self) -> str:
return self.row['url']

@property
def title(self) -> str:
return self.row['title']

@property
def hackernews_link(self) -> str:
return hackernews_link(self.uid)


from ..core.dataset import connect_readonly
def raw() -> Iterator[Row]:
last = max(inputs())
with connect_readonly(last) as db:
saved = db['saved']
# TODO wonder if it's 'save time' or creation time?
yield from saved.all(order_by='time')


def saves() -> Iterator[Saved]:
yield from map(Saved, raw())
59 changes: 3 additions & 56 deletions my/materialistic.py
Original file line number Diff line number Diff line change
@@ -1,57 +1,4 @@
"""
[[https://play.google.com/store/apps/details?id=io.github.hidroh.materialistic][Materialistic]] app for Hackernews
"""
from .core.warnings import high
high("DEPRECATED! Please use my.hackernews.materialistic instead.")

REQUIRES = ['dataset']

from datetime import datetime
from typing import Any, Dict, Iterator, NamedTuple

import pytz

from .core.common import get_files
from .core.dataset import connect_readonly
from my.config import materialistic as config


Row = Dict[str, Any]


class Saved(NamedTuple):
row: Row

@property
def when(self) -> datetime:
ts = int(self.row['time']) / 1000
return datetime.fromtimestamp(ts, tz=pytz.utc)

@property
def uid(self) -> str:
return self.row['itemid']

@property
def url(self) -> str:
return self.row['url']

@property
def title(self) -> str:
return self.row['title']

@property
def hackernews_link(self) -> str:
return f'https://news.ycombinator.com/item?id={self.uid}'


def _last_export():
return max(get_files(config.export_path, glob='**/*.db'))


def raw() -> Iterator[Row]:
db = connect_readonly(_last_export())
st = db['saved']
# TODO wonder if it's 'save time'?
yield from st.all(order_by='time')


def saves() -> Iterator[Saved]:
yield from map(Saved, raw())
from .hackernews.materialistic import *

0 comments on commit c4ad84a

Please sign in to comment.