my.instagram.android: minor cleanup + cachew

This commit is contained in:
Dima Gerasimov 2023-06-21 20:15:03 +01:00 committed by karlicoss
parent 88a3aa8d67
commit d6af4dec11

View file

@ -12,13 +12,16 @@ from typing import Iterator, Sequence, Optional, Dict, Union
from more_itertools import unique_everseen from more_itertools import unique_everseen
from my.core import ( from my.core import (
get_files, Paths, get_files,
Paths,
make_config, make_config,
make_logger, make_logger,
datetime_naive, datetime_naive,
Json, Json,
Res, assert_never, Res,
assert_never,
) )
from my.core.cachew import mcachew
from my.core.sqlite import sqlite_connect_immutable, select from my.core.sqlite import sqlite_connect_immutable, select
from my.config import instagram as user_config from my.config import instagram as user_config
@ -26,6 +29,7 @@ from my.config import instagram as user_config
logger = make_logger(__name__) logger = make_logger(__name__)
@dataclass @dataclass
class instagram_android_config(user_config.android): class instagram_android_config(user_config.android):
# paths[s]/glob to the exported sqlite databases # paths[s]/glob to the exported sqlite databases
@ -156,7 +160,7 @@ def _entities() -> Iterator[Res[Union[User, _Message]]]:
uid = r.get('id') or r.get('pk_id') uid = r.get('id') or r.get('pk_id')
assert uid is not None assert uid is not None
yield User( yield User(
id=str(uid), # for some reason it's int in the db id=str(uid), # for some reason it's int in the db
full_name=r['full_name'], full_name=r['full_name'],
username=r['username'], username=r['username'],
) )
@ -172,6 +176,7 @@ def _entities() -> Iterator[Res[Union[User, _Message]]]:
yield e yield e
@mcachew(depends_on=inputs)
def messages() -> Iterator[Res[Message]]: def messages() -> Iterator[Res[Message]]:
id2user: Dict[str, User] = {} id2user: Dict[str, User] = {}
for x in unique_everseen(_entities()): for x in unique_everseen(_entities()):