From 5d25f92f29b5753c17ff025f2162099be711b3c3 Mon Sep 17 00:00:00 2001 From: Dima Gerasimov Date: Sat, 7 Dec 2019 17:53:53 +0000 Subject: [PATCH] add fbmessenger provider with chat history script --- my/fbmessenger.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 my/fbmessenger.py diff --git a/my/fbmessenger.py b/my/fbmessenger.py new file mode 100644 index 0000000..c0c6d0f --- /dev/null +++ b/my/fbmessenger.py @@ -0,0 +1,35 @@ +from pathlib import Path +from shutil import rmtree +from tempfile import TemporaryDirectory +from typing import Union + +import my_configuration.repos.fbmessengerexport.model as messenger +from my_configuration import paths + + +def _dump_helper(model: messenger.Model, tdir: Path) -> None: + for t in model.iter_threads(): + name = t.name.replace('/', '_') # meh.. + path = tdir / (name + '.txt') + with path.open('w') as fo: + for m in t.iter_messages(order_by='-timestamp'): + # TODO would be nice to have usernames perhaps.. + dts = m.dt.strftime('%Y-%m-%d %a %H:%M') + msg = f"{dts}: {m.text}" + print(msg, file=fo) + + +def dump_chat_history(path: Union[Path, str]) -> None: + p = Path(path) + assert not p.exists() or p.is_dir() + + m = messenger.Model(paths.fbmessenger.export_db) + + with TemporaryDirectory() as tdir: + td = Path(tdir) + _dump_helper(m, td) + + if p.exists(): + rmtree(p) + td.rename(p) + td.mkdir() # ugh, hacky way of preventing complaints from context manager