commit
4226ad4abc
17 changed files with 135 additions and 9 deletions
73
README.org
73
README.org
|
@ -24,6 +24,79 @@ Short example to give you an idea: "which subreddits I find most interesting?"
|
|||
| AskReddit | 31 |
|
||||
| QuantifiedSelf | 30 |
|
||||
|
||||
* Supported modules
|
||||
|
||||
#+begin_src python :results output table drawer :exports results :python "with_my python3"
|
||||
from pathlib import Path
|
||||
import re
|
||||
import importlib
|
||||
|
||||
def ignored(m: str):
|
||||
excluded = [
|
||||
'kython.*',
|
||||
'bluemaestro.check',
|
||||
'body',
|
||||
'books',
|
||||
'calendar',
|
||||
'coding',
|
||||
'coding.codeforces',
|
||||
'coding.topcoder',
|
||||
'media',
|
||||
'mycfg_stub',
|
||||
'reading',
|
||||
'takeout',
|
||||
'_rss',
|
||||
'common',
|
||||
'error',
|
||||
]
|
||||
exs = '|'.join(excluded)
|
||||
return re.match(f'^my.({exs})$', m)
|
||||
|
||||
for f in list(sorted(Path('my/').glob('**/*.py'))):
|
||||
if f.is_symlink():
|
||||
continue # meh
|
||||
if f.name == '__init__.py':
|
||||
f = f.parent
|
||||
m = str(f.with_suffix('')).replace('/', '.')
|
||||
if ignored(m):
|
||||
continue
|
||||
# TODO module link?
|
||||
# TODO I've done this for infra diagram already...
|
||||
mod = importlib.import_module(m)
|
||||
doc = mod.__doc__
|
||||
if doc is None:
|
||||
pass # TODO
|
||||
# print(m, ": NO DOCS!")
|
||||
continue
|
||||
else:
|
||||
fline = doc.strip().splitlines()[0]
|
||||
mlink = f'[[{f}][{m}]]'
|
||||
print('|', mlink, '|', fline, '|')
|
||||
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
:results:
|
||||
| [[my/bluemaestro][my.bluemaestro]] | Bluemaestro temperature/humidity/pressure monitor |
|
||||
| [[my/body/blood.py][my.body.blood]] | Blood tracking |
|
||||
| [[my/books/kobo.py][my.books.kobo]] | Kobo e-ink reader: annotations and reading stats |
|
||||
| [[my/calendar/holidays.py][my.calendar.holidays]] | Provides data on days off work (based on public holidays + manual inputs) |
|
||||
| [[my/coding/github.py][my.coding.github]] | Github events and their metadata: comments/issues/pull requests |
|
||||
| [[my/fbmessenger.py][my.fbmessenger]] | Module for Facebook Messenger messages |
|
||||
| [[my/feedbin.py][my.feedbin]] | Module for Feedbin RSS reader |
|
||||
| [[my/feedly.py][my.feedly]] | Module for Fedly RSS reader |
|
||||
| [[my/hypothesis.py][my.hypothesis]] | Hypothes.is highlights and annotations |
|
||||
| [[my/instapaper.py][my.instapaper]] | Instapaper bookmarks, highlights and annotations |
|
||||
| [[my/location/takeout.py][my.location.takeout]] | Module for Google Takeout data |
|
||||
| [[my/materialistic.py][my.materialistic]] | Module for [[https://play.google.com/store/apps/details?id=io.github.hidroh.materialistic][Materialistic]] app for Hackernews |
|
||||
| [[my/pinboard.py][my.pinboard]] | Module for pinboard.in bookmarks |
|
||||
| [[my/reading/polar.py][my.reading.polar]] | Module for Polar articles and highlights |
|
||||
| [[my/reddit.py][my.reddit]] | Module for Reddit data: saved items/comments/upvotes etc |
|
||||
| [[my/twitter.py][my.twitter]] | Module for Twitter (uses official twitter archive export) |
|
||||
:end:
|
||||
|
||||
|
||||
|
||||
* Setting up
|
||||
** =mycfg= package for private paths/repositories (optional)
|
||||
If you're not planning to use private configuration (some modules don't need it) you can skip straight to the next step. Still, I'd recommend you to read anyway.
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
#!/usr/bin/python3
|
||||
"""
|
||||
Bluemaestro temperature/humidity/pressure monitor
|
||||
"""
|
||||
# TODO link?
|
||||
|
||||
import logging
|
||||
import sqlite3
|
||||
from datetime import datetime
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Blood tracking
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
from typing import Iterable, NamedTuple, Optional
|
||||
from itertools import chain
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
"""
|
||||
Kobo e-ink reader: annotations and reading stats
|
||||
"""
|
||||
|
||||
from typing import Callable, Union, List
|
||||
|
||||
from mycfg import paths
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
"""
|
||||
Provides data on days off work (based on public holidays + manual inputs)
|
||||
"""
|
||||
|
||||
from functools import lru_cache
|
||||
from datetime import date, datetime, timedelta
|
||||
import re
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
"""
|
||||
Github events and their metadata: comments/issues/pull requests
|
||||
"""
|
||||
|
||||
from typing import Dict, List, Union, Any, NamedTuple, Tuple, Optional, Iterator, TypeVar, Set
|
||||
from datetime import datetime
|
||||
import json
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
"""
|
||||
Module for Facebook Messenger messages
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
from shutil import rmtree
|
||||
from tempfile import TemporaryDirectory
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
"""
|
||||
Module for Feedbin RSS reader
|
||||
"""
|
||||
|
||||
from .common import listify
|
||||
from ._rss import Subscription
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
"""
|
||||
Module for Fedly RSS reader
|
||||
"""
|
||||
|
||||
from .common import listify
|
||||
from ._rss import Subscription
|
||||
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
"""
|
||||
Hypothes.is highlights and annotations
|
||||
"""
|
||||
|
||||
from .common import PathIsh
|
||||
|
||||
# TODO add docstring explaining which module is it?
|
||||
import mycfg.repos.hypexport as hypexport
|
||||
|
||||
from mycfg import paths
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
"""
|
||||
Uses instapaper API data export JSON file.
|
||||
|
||||
Set via
|
||||
- ~configure~ method
|
||||
- or in ~mycfg.instpaper.export_path~
|
||||
Instapaper bookmarks, highlights and annotations
|
||||
"""
|
||||
from datetime import datetime
|
||||
import json
|
||||
|
@ -22,6 +18,7 @@ from .common import group_by_key, PathIsh, get_files
|
|||
import mycfg.repos.instapexport.dal as dal
|
||||
|
||||
|
||||
# TODO FIXME remove that stuff
|
||||
_export_path: Optional[Path] = None
|
||||
def configure(*, export_path: Optional[PathIsh]=None) -> None:
|
||||
if export_path is not None:
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
"""
|
||||
Module for Google Takeout data
|
||||
"""
|
||||
|
||||
import json
|
||||
import logging
|
||||
import re
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
"""
|
||||
Module for Materialistic app for Hackernews
|
||||
https://play.google.com/store/apps/details?id=io.github.hidroh.materialistic
|
||||
Module for [[https://play.google.com/store/apps/details?id=io.github.hidroh.materialistic][Materialistic]] app for Hackernews
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
"""
|
||||
Module for pinboard.in bookmarks
|
||||
"""
|
||||
|
||||
from .common import get_files
|
||||
|
||||
from mycfg.repos.pinbexport import dal as pinbexport
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
#!/usr/bin/python3
|
||||
"""
|
||||
Module for Polar articles and highlights
|
||||
"""
|
||||
|
||||
|
||||
from pathlib import Path
|
||||
from datetime import datetime
|
||||
import logging
|
||||
|
@ -29,6 +34,7 @@ def parse_dt(s: str) -> datetime:
|
|||
|
||||
Uid = str
|
||||
|
||||
# TODO get rid of this?
|
||||
class Error(Exception):
|
||||
def __init__(self, p: Path, *args, **kwargs) -> None:
|
||||
super().__init__(*args, **kwargs) # type: ignore
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Module for Reddit data: saved items/comments/upvotes etc
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
from typing import List, Sequence, Mapping, Iterator
|
||||
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
"""
|
||||
Uses official twitter archive export
|
||||
Module for Twitter (uses official twitter archive export)
|
||||
|
||||
See https://help.twitter.com/en/managing-your-account/how-to-download-your-twitter-archive
|
||||
"""
|
||||
|
||||
# TODO remove these
|
||||
"""
|
||||
Expects path to be set
|
||||
- via ~configure~ (before calling anything else)
|
||||
- or in ~mycfg.twitter.export_path~
|
||||
|
|
Loading…
Add table
Reference in a new issue